如何使用不在 github 上的链码?
How to use a chaincode that's not on github?
我已经使用 this 开发了一个链代码,现在我知道它可以工作,我想在具有多个节点的网络中测试它。
我应该把我的链代码放在哪里,以便我可以将它部署在 Hyperledger 结构网络中?
我已经使用 this 设置了网络。
有两种选择:
如果您没有使用 docker 镜像来启动您的节点,那么您应该通过指定完全限定路径来部署链代码,换句话说,您应该在部署时设置参数:
-p /home/user/my/awesome/chaincode
如果您在 docker 图像中 运行ning 您的 nodes/peers(就像您设置开发网络所遵循的说明一样),那么您有两个选项:
第一个 是将您的链代码放入路径 $GOPATH/src/github.com/hyperledger/fabric/peer
中的文件夹中。然后你可以建立你的形象(go test -run BuildImage_Peer
)。
现在 docker 图像将在其文件系统中包含链码(您可以使用 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来访问链代码。这个想法是 运行 docker 和 -v local-dev:localdev
之类的东西,这样 docker 图像中的 local-dev 文件夹链接到 vagrant 的 local-dev 文件夹(你应该在哪里把你的链代码)和 -e GOPATH=/local-dev
你设置 GOPATH 这样相对路径可以从 /local-dev 文件夹开始。
观察:带有 github.com 的路径可能会令人困惑,因为它似乎是从 Github 获取链代码,但它只是文件夹名称。
重要提示:要部署链码,只有一个节点需要有可用的链码文件(发送部署的节点),因为共识负责广播链码。
感谢@ghaskins 帮助弄清楚如何去做。
通常,我将自己的链代码放在 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
最后,docker 图像 "xxx/fabric-peer" 包含自编程的链码。
对于所有这些步骤,我编写了一个 shell 脚本,它对我来说工作得很好。
我已经使用 this 开发了一个链代码,现在我知道它可以工作,我想在具有多个节点的网络中测试它。
我应该把我的链代码放在哪里,以便我可以将它部署在 Hyperledger 结构网络中?
我已经使用 this 设置了网络。
有两种选择:
如果您没有使用 docker 镜像来启动您的节点,那么您应该通过指定完全限定路径来部署链代码,换句话说,您应该在部署时设置参数:
-p /home/user/my/awesome/chaincode
如果您在 docker 图像中 运行ning 您的 nodes/peers(就像您设置开发网络所遵循的说明一样),那么您有两个选项:
第一个 是将您的链代码放入路径
$GOPATH/src/github.com/hyperledger/fabric/peer
中的文件夹中。然后你可以建立你的形象(go test -run BuildImage_Peer
)。现在 docker 图像将在其文件系统中包含链码(您可以使用
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来访问链代码。这个想法是 运行 docker 和
-v local-dev:localdev
之类的东西,这样 docker 图像中的 local-dev 文件夹链接到 vagrant 的 local-dev 文件夹(你应该在哪里把你的链代码)和-e GOPATH=/local-dev
你设置 GOPATH 这样相对路径可以从 /local-dev 文件夹开始。
观察:带有 github.com 的路径可能会令人困惑,因为它似乎是从 Github 获取链代码,但它只是文件夹名称。
重要提示:要部署链码,只有一个节点需要有可用的链码文件(发送部署的节点),因为共识负责广播链码。
感谢@ghaskins 帮助弄清楚如何去做。
通常,我将自己的链代码放在 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
最后,docker 图像 "xxx/fabric-peer" 包含自编程的链码。 对于所有这些步骤,我编写了一个 shell 脚本,它对我来说工作得很好。