修改现有的背书策略(Hyperledger Fabric)

Modify existing endorsement policy (Hyperledger Fabric)

我最初在 Hyperledger Fabric 区块链网络中有 2 个组织。最近我使用 swarm 在另一台主机上添加了一个组织。当我尝试从第一个或第二个组织调用链代码时,它工作正常,我可以看到来自 org3 的更新事务。但是当我从 org3 调用事务时,出现以下错误。

"[2019-02-06 06:44:21.895] [ERROR] invoke - The transaction was invalid, code = ENDORSEMENT_POLICY_FAILURE"

最初,链代码是使用以下策略启动的。 -P"OR ('Org1MSP.peer','Org2MSP.peer')"

所以我想我必须更新现有的认可政策以包括 org3。

任何人都可以帮助修改现有的背书政策或解决问题吗?

是的,您可以使用对等链代码升级命令来做到这一点。

peer chaincode upgrade -o orderer.example.com:7050 --tls --cafile $ORDERER_CA -C mychannel -n mycc -v 1.2 -c '{"Args":["init","a","100","b","200","c","300"]}' -P "AND ('Org1MSP.peer','Org2MSP.peer','Org3MSP.peer')"

参考:peer chaincode upgrade

链码升级方式如下:

  • 增加包含ccPackage的ccRequest的版本
  • 在频道中的所有组织上重新安装 ccRequest。

    例如:peer chaincode install -n mycc -v 2.0 -p github.com/chaincode/chaincode_example02/go/

  • 使用正确的规则创建新的 ccPolicy,其中包含所需的组织作为认可者。
  • 通过运行 upgradeCC 命令升级链码

    例如:peer chaincode upgrade -o orderer.example.com:7050 --tls $CORE_PEER_TLS_ENABLED --cafile $ORDERER_CA -C $CHANNEL_NAME -n mycc -v 2.0 -c '{"Args":["init","a","90","b","210"]}' -P "OR ('Org1MSP.peer','Org2MSP.peer','Org3MSP.peer')"

    • 使用 peer chaincode query -C $CHANNEL_NAME -n mycc -c '{"Args":["query","a"]}'
    • 对链码进行查询测试

有关详细信息,请参阅 docs or ask on rockerchat