代码之家  ›  专栏  ›  技术社区  ›  E. Erfan

如何在Hyperledger结构的不同节点上多次安装一个合同?

  •  0
  • E. Erfan  · 技术社区  · 6 年前

    我面临一个场景,在这个场景中,网络中的所有节点都需要安装和实例化相同的智能合约。但是出于隐私的原因,我想让他们通过不同的渠道。换句话说,每两个同龄人都有自己的渠道。但所有这些公司的业务逻辑和交易条件都是一样的。因此,智能合约是相同的。

    是否可以在节点上为它所属的所有通道安装一次智能合约?假设一个网络中有400个对等点。它是一个完整的网格。因此,每个节点属于399个信道。每个通道有一个智能合约,因此每个节点上需要安装399个智能合约。但是这些契约都有相同的逻辑,并且是相同的。我想知道是否可以引用智能合约,并且只安装一次,但是对于节点所属的所有通道。此外,如果将来需要改变智能合约,那么需要做大量的重复工作,这是一个糟糕的设计决策。

    请注意,出于某种原因 我不想使用acl ,因为我想100%确保数据的隐私得到实现。因此,我希望只通过不带ACL的通道来实现这个场景。

    另外,请考虑我正在使用Composer进行开发。所以我想知道是否有可能在Hyperledger结构和作曲家中实现它

    谢谢你的关注。我感谢你的帮助。

    2 回复  |  直到 6 年前
        1
  •  1
  •   ErvingGoffman    6 年前

    composer network install --card <your admin card> --archiveFile <your archive file> connection.json

    "channels": {
            "first": {
                "orderers": [
                    "orderer0.ex.ru"   
                ],
                "peers": {
                    "peer0.org1.ex.ru": {
                        "endorsingPeer": true,
                        "chaincodeQuery": true,
                        "eventSource": true
                    },
    
                    "peer0.org2.ex.ru": {
                        "endorsingPeer": true,
                        "chaincodeQuery": true,
                        "eventSource": true
                    }
    
                },
           "second": {
                "orderers": [
                    "orderer0.ex.ru"   
                ],
                "peers": {
                    "peer0.org1.ex.ru": {
                        "endorsingPeer": true,
                        "chaincodeQuery": true,
                        "eventSource": true
                    },
    
                    "peer1.org2.ex.ru": {
                        "endorsingPeer": true,
                        "chaincodeQuery": true,
                        "eventSource": true
                    }
    
                }
            }
    

    composer card create -p connection.json -u <identity name> -c <public key path> -k <secret key path> -r <admin card name> -r <role> -f <card filename>
    

    composer card import -f <admin card file> --card <admin card name>
    

    composer archive create -t dir -n .
    

    composer network install --card <admin card name> --archiveFile <archive file produced in the previous step>