我正面临一个场景,其中网络中的所有节点都需要在其上安装并实例化相同的智能合约。但是出于隐私原因,我希望将它们保留在不同的渠道上。换句话说,每个两个对等方都有自己的渠道。但是,所有的商业逻辑和贸易条件都是相同的。因此,智能合约是相同的。
是否可以在节点上为其所属的所有通道一次安装智能合约?可以说一个网络中有400个对等点。这是一个完整的网格。因此,每个节点属于399个通道。每个通道有一个智能合约,这使得每个节点需要安装399个智能合约。但是这些合同都具有相同的逻辑并且相同。我想知道是否有可能引用智能合约,并且只安装一次,但是对于节点所属的所有通道而言。此外,如果将来需要更改智能合约,则需要做很多重复的工作,这是糟糕的设计决策。
请注意,出于某些原因我不想使用ACL ,因为我想100%确保实现数据隐私。因此,我只想通过没有ACL的渠道来实现这种情况。
还请考虑我正在使用作曲器进行开发。所以我想知道是否可以在Hyperledger Fabric和Composer中实现它
感谢您的关注。感谢您的帮助。
答案 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
中发布的新频道“私有数据”功能(私有数据收集和数据存储位置)上阅读更多内容。