3

我已经使用开发了一个链代码,现在我知道它可以工作,我想在具有多个节点的网络中对其进行测试。

我应该把我的链码放在哪里,以便我可以将它部署到 Hyperledger 结构网络中?

我用来设置网络。

4

2 回答 2

6

有两种选择:

  1. 如果你没有使用 docker 镜像来启动你的节点,那么你应该通过指定一个完全限定的路径来部署链代码,换句话说,你应该在部署时设置参数:

    -p /home/user/my/awesome/chaincode

  2. 如果您在 docker 映像中运行您的节点/对等节点(如您设置开发网络所遵循的说明),那么您有两个选择:

    一个是将您的链代码放在路径中的文件夹中$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 之间的共享文件系统来访问链代码。这个想法是使用类似的东西来运行docker,以便-v local-dev:localdevdocker 映像中的 local-dev 文件夹链接到 vagrant 的 local-dev 文件夹(您应该放置链代码的地方)并 -e GOPATH=/local-dev设置 GOPATH 以便可以启动相对路径来自 /local-dev 文件夹。

观察: github.com 的路径可能会令人困惑,因为它似乎是从 Github 获取链码,但它只是文件夹名称。

重要提示:要部署链码,只有一个对等方需要有可用的链码文件(发送部署的文件),因为共识负责广播链码。

感谢@ghaskins 帮助他弄清楚如何做到这一点。

于 2016-05-25T09:54:24.377 回答
0

通常,我将自己的链码放在 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 脚本,它对我来说非常好用。

于 2016-09-13T09:18:22.690 回答