如何在Hyperledger Fabric的不同节点上多次安装一份合约?

时间:2018-07-07 15:08:10

标签: hyperledger-fabric hyperledger hyperledger-composer

我正面临一个场景,其中网络中的所有节点都需要在其上安装并实例化相同的智能合约。但是出于隐私原因,我希望将它们保留在不同的渠道上。换句话说,每个两个对等方都有自己的渠道。但是,所有的商业逻辑和贸易条件都是相同的。因此,智能合约是相同的。

是否可以在节点上为其所属的所有通道一次安装智能合约?可以说一个网络中有400个对等点。这是一个完整的网格。因此,每个节点属于399个通道。每个通道有一个智能合约,这使得每个节点需要安装399个智能合约。但是这些合同都具有相同的逻辑并且相同。我想知道是否有可能引用智能合约,并且只安装一次,但是对于节点所属的所有通道而言。此外,如果将来需要更改智能合约,则需要做很多重复的工作,这是糟糕的设计决策。

请注意,出于某些原因我不想使用ACL ,因为我想100%确保实现数据隐私。因此,我只想通过没有ACL的渠道来实现这种情况。

还请考虑我正在使用作曲器进行开发。所以我想知道是否可以在Hyperledger Fabric和Composer中实现它

感谢您的关注。感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

您可以使用命令composer network install --card <your admin card> --archiveFile <your archive file>connection.json中指定的任何对等方和通道安装Composer链码。

您可以像这样为两个渠道指定一个智能合约(您可以对任何数量的渠道使用此原则):

"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>

答案 1 :(得分:1)

“是否可以在节点上为其所属的所有通道一次安装智能合约?可以说网络中有400个对等节点。这是一个完整的消息 h”-是的只需安装一次链码-您就可以在频道上实例化/启动该[相同]链码,如上面所述。

还请注意(在Hyperledger Fabric 1.2中),您可以在Fabric 1.2 https://hyperledger-fabric.readthedocs.io/en/release-1.2/private-data/private-data.html?highlight=private%20data

中发布的新频道“私有数据”功能(私有数据收集和数据存储位置)上阅读更多内容。