错误链码实例化Hyperledger(带有节点)

时间:2018-08-22 22:07:45

标签: hyperledger-fabric hyperledger

我正在学习如何开发链码,并且试图从fabcar教程中修改链码以与集合一起使用。我正在尝试使用链码的节点版本。

我设置了一个 config.json 文件来保存集合配置。我做了一个简单的(基本上是大理石教程的副本):

[
  {
       "name": "car",
       "policy": "OR('Org1MSP.member', 'Org2MSP.member')",
       "requiredPeerCount": 0,
       "maxPeerCount": 3,
       "blockToLive":1000000
  },
  {
       "name": "privateCar",
       "policy": "OR('Org1MSP.member')",
       "requiredPeerCount": 0,
       "maxPeerCount": 3,
       "blockToLive":1000000
  }
]

并且我更新了文件 startFabric.sh 以传递collections-config标志,例如:

docker exec -e "CORE_PEER_LOCALMSPID=Org1MSP" -e "CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp" cli peer chaincode instantiate -o orderer.example.com:7050 -C mychannel - -n fabhealth -l "$LANGUAGE"  -v 1.0  -c '{"Args":[""]}' -P "OR ('Org1MSP.member','Org2MSP.member')" --collections-config $CC_SRC_PATH/config_old.json

但是当我尝试实例化链码时,我收到此错误:

  

错误:无法汇编事务,错误建议响应未成功,错误代码500,msg的lscc参数无效:7

我尝试按照其他教程的建议更新 configtx.yaml ,以更新Cappabilities.Application部分,但此方法不起作用。

我想知道是否缺少一些实例化链码的东西。

谢谢!

2 个答案:

答案 0 :(得分:0)

您的错误来自以下代码中对lscc的无效参数

// the maximum number of arguments depends on the capability of the channel
if (!ac.Capabilities().PrivateChannelData() && len(args) > 6) ||
    (ac.Capabilities().PrivateChannelData() && len(args) > 7) {
    return shim.Error(InvalidArgsLenErr(len(args)).Error())
}

尝试在您的 configtx.yaml 中更改功能,而不必传递-collections-config 参数。

答案 1 :(得分:0)

我非常感谢其他评论。实际上,我更新了congigtx.yaml,这确实是必需的。我所缺少的是我需要运行 configtxgen 命令,以便在重新设置网络时使更新可见。

这样做之后,我可以使用私有数据收集了。