我開發了一個使用this的鏈碼,現在我知道它的工作原理我想在具有多個節點的網絡中測試它。如何使用不在github上的鏈式代碼?
我應該在哪裏放置chaincode,以便我可以將它部署到Hyperledger網絡中?
我已經使用this來設置網絡。
我開發了一個使用this的鏈碼,現在我知道它的工作原理我想在具有多個節點的網絡中測試它。如何使用不在github上的鏈式代碼?
我應該在哪裏放置chaincode,以便我可以將它部署到Hyperledger網絡中?
我已經使用this來設置網絡。
有兩種選擇:
如果你不使用泊塢窗圖像,開始您的節點,那麼你應該部署指定一個完全合格的路徑chaincode,換句話說,你應該設置參數當部署:
-p /home/user/my/awesome/chaincode
如果你正在運行在一個碼頭工人形象的節點/對等(像你下面設置一個發展網絡指令),那麼你有兩個選擇:
第一個是把你的chaincode放在路徑$GOPATH/src/github.com/hyperledger/fabric/peer
的文件夾裏面。然後你可以建立你的形象(go test -run BuildImage_Peer
)。
現在,碼頭圖像將在其文件系統中具有chaincode(您可以通過使用docker run --rm -it -e CORE_VM_ENDPOINT=http://172.17.0.1:2375 -e CORE_PEER_ID=vp0 -e CORE_PEER_ADDRESSAUTODETECT=true hyperledger-peer /bin/bash
在其中導航來檢查它)。
最後,要部署鏈碼,您必須將路徑(參數-p)設置爲包含鏈碼的文件夾,相對於$GOPATH/src/
。此路徑將是:github.com/hyperledger/fabric/peer/yourfolderwiththecc
。
第二選項是類似的(尚未測試),但它使用docker和vagrant之間的shared filesystem來訪問chaincode。這個想法是運行docker,像-v local-dev:localdev
,這樣docker鏡像中的local-dev文件夾被鏈接到vagrant的local-dev文件夾(你應該放置你的chaincode),並且使用-e GOPATH=/local-dev
設置GOPATH,這樣相對路徑可以從/ local-dev文件夾啓動。
觀察:github.com的路徑可能會令人困惑,因爲它似乎是從Github獲取鏈碼,但它只是文件夾名稱。
重要提示:要部署鏈碼,只有一個對等方需要有可用鏈碼文件(發送部署的鏈碼),因爲共識負責廣播鏈碼。
向@ghaskins致謝,感謝他的幫助,瞭解如何做到這一點。
通常,我把自己的chaincode放在github上。然後:
$ docker run -i -t hyperledger/fabric-peer /bin/bash
# git clone https://github.com/xxx/myOwnChaincode.git; exit
$ docker commit -m 'mm' -a 'aa' containerId xxx/fabric-peer
最後,碼頭圖像「xxx/fabric-peer」包含自編程鏈接碼。 對於所有這些步驟,我寫了一個shell腳本,它對我來說工作得很好。
應該指出,$ GOPATH是一個典型的PATH環境變量,可以有多個路徑。因此,如果您使用$ GOPATH/src/github.com/...使用具有多個值的$ GOPATH,您可能無法獲得您期望的結果。 – christo4ferris