我面临这样一种情况:网络中的所有节点都需要安装并实例化相同的智能合约。但出于隐私原因,我想将它们保留在不同的频道上。换句话说,每两个对等点都有自己的频道。但是它们的商业逻辑和交易条件都是一样的。因此,智能合约是一样的。
是否可以在节点上为其所属的所有通道安装一次智能合约?假设网络中有 400 个对等点。它是一个完整的网格。因此每个节点属于 399 个通道。每个通道有一个智能合约,这使得每个节点上需要安装 399 个智能合约。但这些合约都有相同的逻辑,都是一样的。我想知道是否可以引用智能合约,并且只安装一次,但对于节点所属的所有通道。此外,如果将来需要更改智能合约,则需要完成大量重复工作,这是糟糕的设计决策。
请注意,出于某种原因,我不想使用 ACL,因为我想 100% 确保实现数据隐私。因此,我想仅通过没有 ACL 的通道来实现此场景。
另外请考虑我正在使用作曲家进行开发。所以我想知道是否可以在 Hyperledger Fabric 和 Composer 中实现它
感谢您的关注。我很感激任何帮助。
您可以使用该命令composer network install --card <your admin card> --archiveFile <your archive file>
为 中指定的任何对等方和通道安装 Composer 链代码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>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句