Fabrichyperledger fabric

fabric 2.0 alpha 新的链码生命周期

2019-04-21  本文已影响50人  百味纯净水

1. fabric 2.0 alpha新的链码生命周期

         Alpha版本改变了在peer上安装链码和在通道上启用这个链码的步骤,从而了去中心化控制的链码。新的fabric链码生命周期允许多组织在链码的参数上达成协议,例如应用到账本上之前的链码的背书策略。新的模型在之前的链码生命周期上进行了一些优化。

2. 使用新的链码生命周期

    以下是使用新的链代码生命周期的步骤:

  1. 打包链码:
    这一步可以由一个组织执行,也可以由每一个组织被别打包。链码要被打包成tar格式,以.tar.gz为文件扩展名的文件。打包后的包有两个文件,一个元数据文件 “Chaincode-Package-Metadata.json”和一个包含链码文件的tar包。“Chaincode-Package-Metadata.json” 是一个json格式的文件,里面指定了链码的语言、路径、包的标签。以下是一个示例:
{"Path":"github.com/chaincode/fabcar/go","Type":"golang","Label":"fabcarv1"}

    用cli打包链码的命令:

peer lifecycle chaincode package mycc.tar.gz --path github.com/hyperledger/fabric-samples/chaincode/abstore/go/ --lang golang --label mycc_1
  1. 安装链码:每个需要对交易背书和查询账本的组织都需要执行这一步。你需要把链码安装在每一个需要执行交易和背书交易的节点上。
    用cli安装链码的命令:
peer lifecycle chaincode install mycc.tar.gz

链码安装成后会返回链码的id标识,这个id在后面会使用,需要记录下来,安装链码返回值如下:

2019-04-21 13:48:53.691 UTC [cli.lifecycle.chaincode] submitInstallProposal -> INFO 001 Installed remotely: response:<status:200 payload:"\nEmycc_1:3a8c52d70c36313cfebbaf09d8616e7a6318ababa01c7cbe40603c373bcfe173" >
2019-04-21 13:48:53.691 UTC [cli.lifecycle.chaincode] submitInstallProposal -> INFO 002 Chaincode code package identifier: mycc_1:3a8c52d70c36313cfebbaf09d8616e7a6318ababa01c7cbe40603c373bcfe173
  1. 认可组织的链码定义:
    每个使用链码的组织都可以执行这个步骤。链码定义需要被足够多的组织批准后,这个链码才能在通道上启用。具体需要多少组织同意,取决于生命周期背书策略,默认的是大多数组织同意。在cli中认可链码定义的命令
CC_PACKAGE_ID=mycc_1:3a8c52d70c36313cfebbaf09d8616e7a6318ababa01c7cbe40603c373bcfe173
peer lifecycle chaincode approveformyorg --channelID mychannel --name mycc --version 1.0 --init-required --package-id $CC_PACKAGE_ID --sequence 1 --waitForEvent
  1. 将链码定义提交到通道:
    一旦获得所需数量组织的批注,提交交易就可以由一个组织提交。提交者可以通过以下命令查看是否已经获取到了足够数量组织的认可:
peer lifecycle chaincode queryapprovalstatus --channelID $CHANNEL_NAME --name mycc --version 1.0 --init-required --sequence 1

    返回结果如下:

{
        "Approved": {
                "Org1MSP": true,
                "Org2MSP": true
        }
}

提交者通过查询确认收到足够数量组织的认可之后,便可以向通道提交链码,提交成功后,链码便可使用:

peer lifecycle chaincode commit -o orderer.example.com:7050 --channelID $CHANNEL_NAME --name mycc --version 1.0 --sequence 1 --init-required --peerAddresses peer0.org1.example.com:7051 --peerAddresses peer0.org2.example.com:9051 --waitForEvent

3. 限制

Fabric v2.0 Alpha版本中新的链代码生命周期尚未完成。尤其要注意alpha版本中的以下限制:

这些限制将会在alpha后面的版本解决。

微信图片_20190418195654.png
上一篇 下一篇

猜你喜欢

热点阅读