中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》
  • 首頁 > 
  • 教程 > 
  • 互聯網科技 > 
  • 私有區塊鏈Hyperledger Fabric和公共區塊鏈ARK.io怎么通過solidity智能合約結合

私有區塊鏈Hyperledger Fabric和公共區塊鏈ARK.io怎么通過solidity智能合約結合

發布時間:2021-12-07 09:21:39 來源:億速云 閱讀:237 作者:小新 欄目:互聯網科技

這篇文章給大家分享的是有關私有區塊鏈Hyperledger Fabric和公共區塊鏈ARK.io怎么通過solidity智能合約結合的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

如何將公共區塊鏈(如ARK.io)的功能與私有區塊鏈(如Hyperledger)結合起來。特別是,我們將看到ARK.io上的交易如何觸發在Hyperledger Fabric + Burrow中部署的Solidity Smart Contract的執行。

安裝Hyperledger Fabric

刪除以前的Hyperledger Docker鏡像(如果有):

docker kill $(docker ps -q)
docker rm $(docker ps -aq)
docker rmi $(docker images dev-* -q)

安裝先決條件:

https://hyperledger-fabric.readthedocs.io/en/latest/prereqs.html

安裝依賴項:

https://hyperledger-fabric.readthedocs.io/en/latest/install.html
cd ~
curl -sSL http://bit.ly/2ysbOFE | bash -s 1.3.0

設置環境變量:

vi ~/.profile

PATH="$HOME/bin:$HOME/.local/bin:$PATH"
GOPATH="$HOME/go"
FABRIC_CFG_PATH="$GOPATH/src/github.com/hyperledger/fabric-samples/config"
PATH="$GOPATH/bin:/usr/lib/go-1.10/bin:$GOPATH/src/github.com/hyperledger/fabric-samples/bin:$PATH"

export FABPROXY_CONFIG=$GOPATH/src/github.com/hyperledger/fabric-chaincode-evm/examples/first-network-sdk-config.yaml
FABPROXY_USER=User1
FABPROXY_ORG=Org1
FABPROXY_CHANNEL=mychannel
FABPROXY_CCID=evmcc
PORT=5000

source ~/.profile

生成網絡架構:

https://hyperledger-fabric.readthedocs.io/en/latest/build_network.html
git clone https://github.com/hyperledger/fabric-samples.git
cd $GOPATH/src/github.com/hyperledger/fabric-samples/first-network
./byfn.sh generate

安裝go語言

sudo apt-get remove golang-go 
sudo apt-get remove --auto-remove golang-go
sudo add-apt-repository ppa:gophers/archive
sudo apt-get update
sudo apt-get install golang-1.10-go

安裝Hyperledger go SDK:

go get -u github.com/hyperledger/fabric-sdk-go
go get -u github.com/cloudflare/cfssl/cmd/cfssl

go get -u github.com/golang/mock/gomock
go get -u github.com/golang/protobuf/proto
go get -u github.com/golang/protobuf/ptypes
go get -u github.com/golang/protobuf/ptypes/timestamp

安裝EVM Chaincode

cd ~
git clone https://github.com/hyperledger/fabric-chaincode-evm.git $GOPATH/src/github.com/hyperledger

cd fabric-samples/first-network/
vi docker-compose-cli.yaml

添加:

cli:
    volumes:
      - ./../../fabric-chaincode-evm:/opt/gopath/src/github.com/hyperledger/fabric-chaincode-evm

關閉網絡(如果它已啟動):

./byfn.sh -m down

重新建立網絡:

./byfn.sh -m up

構建并啟動EVM

docker exec -it cli bash

為PEER0設置環境變量:

export CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
  export CORE_PEER_ADDRESS=peer0.org1.example.com:7051
  export CORE_PEER_LOCALMSPID="Org1MSP"
  export CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt

接下來在所有對等端上安裝EVM鏈代碼:

peer chaincode install -n evmcc -l golang -v 0 -p github.com/hyperledger/fabric-chaincode-evm/evmcc

實例化evmcc:

peer chaincode instantiate -n evmcc -v 0 -C mychannel -c '{"Args":[]}' -o orderer.example.com:7050 --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem

部署智能合約

我們將使用一個簡單存儲合約:https://solidity.readthedocs.io/en/v0.4.24/introduction-to-smart-contracts.html

peer chaincode invoke -n evmcc -C mychannel  -c '{"Args":["0000000000000000000000000000000000000000","608060405234801561001057600080fd5b5060df8061001f6000396000f3006080604052600436106049576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806360fe47b114604e5780636d4ce63c146078575b600080fd5b348015605957600080fd5b5060766004803603810190808035906020019092919050505060a0565b005b348015608357600080fd5b50608a60aa565b6040518082815260200191505060405180910390f35b8060008190555050565b600080549050905600a165627a7a723058203dbaed52da8059a841ed6d7b484bf6fa6f61a7e975a803fdedf076a121a8c4010029"]}' -o orderer.example.com:7050 --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem

請注意包含合約地址的輸出:

2018-11-10 00:15:28.257 UTC [chaincodeCmd] chaincodeInvokeOrQuery -> INFO 001 Chaincode invoke successful. result: status:200 payload:"7ec1f20fced5ed8d47f94cdab140644a28a85441"

要驗證你的合約是否已成功部署,你可以在evmcc中查詢合約的運行時字節碼:

root@3e4b9a88b2b6:/opt/gopath/src/github.com/hyperledger/fabric/peer# peer chaincode query -n evmcc -C mychannel -c '{"Args":["getCode","7ec1f20fced5ed8d47f94cdab140644a28a85441"]}'
6080604052600436106049576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806360fe47b114604e5780636d4ce63c146078575b600080fd5b348015605957600080fd5b5060766004803603810190808035906020019092919050505060a0565b005b348015608357600080fd5b50608a60aa565b6040518082815260200191505060405180910390f35b8060008190555050565b600080549050905600a165627a7a723058203dbaed52da8059a841ed6d7b484bf6fa6f61a7e975a803fdedf076a121a8c4010029

與已部署的合約交互

peer chaincode invoke -n evmcc -C mychannel -c '{"Args":["7ec1f20fced5ed8d47f94cdab140644a28a85441","60fe47b1000000000000000000000000000000000000000000000000000000000000000a"]}' -o orderer.example.com:7050 --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem

2018-11-10 00:25:31.005 UTC [chaincodeCmd] chaincodeInvokeOrQuery -> INFO 001 Chaincode invoke successful. result: status:200 

peer chaincode query -n evmcc -C mychannel -c '{"Args":["7ec1f20fced5ed8d47f94cdab140644a28a85441","6d4ce63c"]}' --hex

獲取用戶帳戶地址

root@3e4b9a88b2b6:/opt/gopath/src/github.com/hyperledger/fabric/peer# peer chaincode query -n evmcc -C mychannel -c '{"Args":["account"]}'

結果03F3C6F335B678F65B41820D97F01BA1151CDF62

使用Web3

設置Fab代理

我們已經在我們的.profile中定義了這些:

export FABPROXY_CONFIG=$GOPATH/src/github.com/hyperledger/fabric-chaincode-evm/examples/first-network-sdk-config.yaml
export FABPROXY_USER=User1
export FABPROXY_ORG=Org1
export FABPROXY_CHANNEL=mychannel
export FABPROXY_CCID=evmcc
export PORT=5000

打開端口:

sudo ufw allow 5000

構建代理:

cd $GOPATH/src/github.com/hyperledger/fabric-chaincode-evm
go build -o fab3 ./fabproxy/cmd

啟動代理:

cd ~/go/src/github.com/hyperledger/fabric-chaincode-evm
./fab3

應該看到:

Starting Fab Proxy on port 5000
與先前部署的合約交互

在不同的終端窗口中:

安裝web3:

npm install web3@0.20.2

啟動node會話:

node

Web3 = require('web3')
web3 = new Web3(new Web3.providers.HttpProvider('http://159.89.146.143:5000'))
web3.eth.defaultAccount = web3.eth.accounts[0]

simpleStorageABI = [
    {
        "constant": false,
        "inputs": [
            {
                "name": "x",
                "type": "uint256"
            }
        ],
        "name": "set",
        "outputs": [],
        "payable": false,
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "constant": true,
        "inputs": [],
        "name": "get",
        "outputs": [
            {
                "name": "",
                "type": "uint256"
            }
        ],
        "payable": false,
      "stateMutability": "view",
      "type": "function"
    }
  ]
SimpleStorage = web3.eth.contract(simpleStorageABI)

myContract = SimpleStorage.at('7ec1f20fced5ed8d47f94cdab140644a28a85441')
myContract.set(10)
 
myContract.get().toNumber()

ARK.io插件觸發智能合約

如果你還沒有這樣做,請按照這篇文章安裝Ark Relay和Hyperledger插件:

最新的插件代碼可在以下位置找到:https://github.com/Ark-Labs/ark-hyperledger-plugin

請注意,與web3集成相關的部分。首先,我們檢查一下,如果“schema”==“web3”,那么我們將執行委托給simpleStorage

私有區塊鏈Hyperledger Fabric和公共區塊鏈ARK.io怎么通過solidity智能合約結合

我們通過web3和fab代理調用我們的智能合約:

私有區塊鏈Hyperledger Fabric和公共區塊鏈ARK.io怎么通過solidity智能合約結合

通過ARK.io桌面錢包觸發智能合約

確保安裝了ark-hyperledger-plugin并且relay正在運行。啟動后,你應該在中繼日志中看到最后一個條目:

私有區塊鏈Hyperledger Fabric和公共區塊鏈ARK.io怎么通過solidity智能合約結合

確保fab代理正在Hyperledger實例上運行,它正在偵聽端口5000:

私有區塊鏈Hyperledger Fabric和公共區塊鏈ARK.io怎么通過solidity智能合約結合

通過桌面錢包提交Ark交易:

私有區塊鏈Hyperledger Fabric和公共區塊鏈ARK.io怎么通過solidity智能合約結合

觀察Ark replay日志中的輸出以及新應用的交易的詳細信息:

私有區塊鏈Hyperledger Fabric和公共區塊鏈ARK.io怎么通過solidity智能合約結合

打開節點控制臺并檢查Smart Contract是否選擇了新值:

私有區塊鏈Hyperledger Fabric和公共區塊鏈ARK.io怎么通過solidity智能合約結合

======================================================================

分享一些Fabric、以太坊、比特幣、EOS等區塊鏈相關的交互式在線編程實戰教程:

  • Hyperledger Fabric 區塊鏈開發詳解,本課程面向初學者,內容即包含Hyperledger Fabric的身份證書與MSP服務、權限策略、信道配置與啟動、鏈碼通信接口等核心概念,也包含Fabric網絡設計、nodejs鏈碼與應用開發的操作實踐,是Nodejs工程師學習Fabric區塊鏈開發的最佳選擇。

  • Hyperledger Fabric java 區塊鏈開發詳解,課程面向初學者,內容即包含Hyperledger Fabric的身份證書與MSP服務、權限策略、信道配置與啟動、鏈碼通信接口等核心概念,也包含Fabric網絡設計、java鏈碼與應用開發的操作實踐,是java工程師學習Fabric區塊鏈開發的最佳選擇。

  • java比特幣開發教程,本課程面向初學者,內容即涵蓋比特幣的核心概念,例如區塊鏈存儲、去中心化共識機制、密鑰與腳本、交易與UTXO等,同時也詳細講解如何在Java代碼中集成比特幣支持功能,例如創建地址、管理錢包、構造裸交易等,是Java工程師不可多得的比特幣開發學習課程。

  • php比特幣開發教程,本課程面向初學者,內容即涵蓋比特幣的核心概念,例如區塊鏈存儲、去中心化共識機制、密鑰與腳本、交易與UTXO等,同時也詳細講解如何在Php代碼中集成比特幣支持功能,例如創建地址、管理錢包、構造裸交易等,是Php工程師不可多得的比特幣開發學習課程。

  • c#比特幣開發教程,本課程面向初學者,內容即涵蓋比特幣的核心概念,例如區塊鏈存儲、去中心化共識機制、密鑰與腳本、交易與UTXO等,同時也詳細講解如何在C#代碼中集成比特幣支持功能,例如創建地址、管理錢包、構造裸交易等,是C#工程師不可多得的比特幣開發學習課程。

  • java以太坊開發教程,主要是針對java和android程序員進行區塊鏈以太坊開發的web3j詳解。

  • python以太坊,主要是針對python工程師使用web3.py進行區塊鏈以太坊開發的詳解。

  • php以太坊,主要是介紹使用php進行智能合約開發交互,進行賬號創建、交易、轉賬、代幣開發以及過濾器和交易等內容。

  • 以太坊入門教程,主要介紹智能合約與dapp應用開發,適合入門。

  • 以太坊開發進階教程,主要是介紹使用node.js、mongodb、區塊鏈、ipfs實現去中心化電商DApp實戰,適合進階。

  • ERC721以太坊通證實戰,課程以一個數字藝術品創作與分享DApp的實戰開發為主線,深入講解以太坊非同質化通證的概念、標準與開發方案。內容包含ERC-721標準的自主實現,講解OpenZeppelin合約代碼庫二次開發,實戰項目采用Truffle,IPFS,實現了通證以及去中心化的通證交易所。

  • C#以太坊,主要講解如何使用C#開發基于.Net的以太坊應用,包括賬戶管理、狀態與交易、智能合約開發與交互、過濾器和交易等。

  • EOS入門教程,本課程幫助你快速入門EOS區塊鏈去中心化應用的開發,內容涵蓋EOS工具鏈、賬戶與錢包、發行代幣、智能合約開發與部署、使用代碼與智能合約交互等核心知識點,最后綜合運用各知識點完成一個便簽DApp的開發。

  • 深入淺出玩轉EOS錢包開發,本課程以手機EOS錢包的完整開發過程為主線,深入學習EOS區塊鏈應用開發,課程內容即涵蓋賬戶、計算資源、智能合約、動作與交易等EOS區塊鏈的核心概念,同時也講解如何使用eosjs和eosjs-ecc開發包訪問EOS區塊鏈,以及如何在React前端應用中集成對EOS區塊鏈的支持。課程內容深入淺出,非常適合前端工程師深入學習EOS區塊鏈應用開發。

  • tendermint區塊鏈開發詳解,本課程適合希望使用tendermint進行區塊鏈開發的工程師,課程內容即包括tendermint應用開發模型中的核心概念,例如ABCI接口、默克爾樹、多版本狀態庫等,也包括代幣發行等豐富的實操代碼,是go語言工程師快速入門區塊鏈開發的最佳選擇。

感謝各位的閱讀!關于“私有區塊鏈Hyperledger Fabric和公共區塊鏈ARK.io怎么通過solidity智能合約結合”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

日喀则市| 白玉县| 和林格尔县| 涿鹿县| 新余市| 连云港市| 盖州市| 阿克陶县| 湖北省| 抚松县| 青铜峡市| 栾川县| 海淀区| 黑山县| 韩城市| 乐业县| 阜平县| 大英县| 安龙县| 稻城县| 改则县| 九江市| 连城县| 石台县| 甘南县| 金华市| 永年县| 朝阳县| 和硕县| 南溪县| 云浮市| 浦城县| 恭城| 丹寨县| 民县| 凌源市| 巫山县| 怀集县| 阳原县| 明光市| 偃师市|