Blockchain 如何使用';它不在github上?

Blockchain 如何使用';它不在github上?,blockchain,hyperledger,hyperledger-fabric,Blockchain,Hyperledger,Hyperledger Fabric,我已经使用开发了一个链码,现在我知道它可以工作了,我想在一个有多个节点的网络中测试它 我应该将链码放在哪里,以便在Hyperledger结构网络中部署它 我曾经设置过网络。有两个选项: 如果未使用docker映像启动节点,则应通过指定完全限定路径来部署链码,换句话说,在部署时应设置参数: -p/home/user/my/awesome/chaincode 如果您正在docker映像中运行节点/对等节点(如按照以下说明设置开发网络),则有两个选项: 第一个是将链码放入路径$GOPATH/src/g

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

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

我曾经设置过网络。

有两个选项:

  • 如果未使用docker映像启动节点,则应通过指定完全限定路径来部署链码,换句话说,在部署时应设置参数:

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

  • 如果您正在docker映像中运行节点/对等节点(如按照以下说明设置开发网络),则有两个选项:

    第一个是将链码放入路径
    $GOPATH/src/github.com/hyperledger/fabric/peer
    中的文件夹中。然后您可以构建映像(
    go test-runbuildimage\u Peer

    现在docker映像将在其文件系统中包含链码(您可以通过使用
    docker run--rm-it-e CORE\u VM\u端点在其中导航来检查它)=http://172.17.0.1:2375 -e CORE\u PEER\u ID=vp0-e CORE\u PEER\u ADDRESSAUTODETECT=true hyperledger PEER/bin/bash

    最后,要部署链码,您必须设置包含链码的文件夹的路径(参数-p),相对于
    $GOPATH/src/
    。这个路径应该是:
    github.com/hyperledger/fabric/peer/yourfolderwiththecc

    第二个选项类似(尚未测试),但它使用docker和vagrant之间的连接来访问链码。我们的想法是使用类似于
    -v local dev:localdev
    的东西来运行docker,这样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脚本,它对我来说非常好。

    应该注意,$GOPATH是一个典型的PATH环境变量,可以有多个路径。因此,如果您使用$GOPATH/src/github.com/。。。对于具有多个值的$GOPATH,您可能无法获得预期的结果。