链代码生命周期
(Hyperledger Fabric v2.x) 链代码生命周期介绍了在对等节点上安装链代码并在通道上部署链代码的过程。
链代码生命周期基于 Hyperledger Fabric v2.x 平台的功能,该平台允许对链代码进行分散治理。在链代码可以与分类账交互之前,多个组织可以就链代码参数(包括链代码背书策略)达成一致。这些功能在新的快速部署和高级部署选项以及 REST API 中实施。有关新生命周期的更多信息,请参见 Hyperledger Fabric v2.2.4 文档中的 Fabric chaincode lifecycle 。
通常,要部署已安装的链代码,可以在控制台中使用快速部署或高级部署。部署过程包括打包和安装链代码,以及审批和提交链代码定义。您还可以使用 REST API 单独完成审批和承诺操作。
打包并安装链代码
在 Oracle Blockchain Platform 中安装链代码时,将打包、安装链代码,并自动生成软件包 ID。软件包 ID 显示在控制台的 Chaincodes 选项卡上。
批准链代码定义
在将链代码部署到渠道之前,必须有足够的组织批准链代码定义以满足渠道的 LifecycleEndorsement 策略。Oracle Blockchain Platform 中的默认 LifecycleEndorsement 策略允许任何组织批准链代码定义(而不是大多数组织)。链代码定义包括以下参数,这些参数对于所有组织必须相同:Chaincode Name、Version、Sequence、Endorsement Policy、Private Data Collection 和 Init-required。链代码定义还可以包括 Package ID,它不必对所有组织都相同。
链代码定义获得批准后,一个组织可以从批准组织的同级收集背书,然后将链代码定义提交到渠道。
要使用 REST API 批准链代码定义,请参阅批准渠道中的链代码定义。
在控制台中,当您使用快速部署或高级部署时,将同时尝试审批和承诺步骤。
提交链代码定义
要使用 REST API 提交批准的链代码定义,请参见 Commit a Chaincode Definition in a Channel 。
在控制台中,您可以在通道的 Deployed Chaincodes(已部署链代码)页上看到已批准但未提交的链代码定义。您可以使用更多操作菜单提交批准的链代码。
链代码生命周期方案
Scenario | 说明 |
---|---|
加入渠道 |
通常,在控制台中,在不提交链代码定义的情况下,您不会批准链代码定义。如果加入链代码定义由其他组织提交的共享渠道,则会在该渠道的已部署链代码页面上看到链代码定义列为已提交但未获批准。您可以使用更多操作菜单批准链代码定义并关联程序包 ID。您无需再次提交薪资包定义。 |
更新背书策略 |
您可以在链代码定义中更新背书策略,而无需重新安装链代码。在渠道的“已部署链代码”页上,使用“更多操作”菜单升级链代码定义。展开 Endorsement Policy 并指定新策略,然后单击 Upgrade 。 |
批准定义而不安装 |
在多个组织方案中,要批准链代码定义而不安装链代码包,请勿指定包 ID。您认可提交到渠道的链代码的定义,但您的组织中的对等节点上未安装链代码。您将无法使用链代码来背书事务处理或查询分类账。 |
对定义的分歧 |
在多个组织方案中,未批准链代码定义或未批准其他链代码定义的组织无法在其对等节点上运行链代码。如果其他组织获得足够的背书将定义提交到渠道,则这些组织可以使用链代码。事务处理仍会添加到所有组织的对等节点的分类账中。 如果组织不同意链代码定义,并且没有组织获得足够的背书将定义提交到渠道,则无法提交定义,因此无法运行链代码。 |
多个组织安装不同的软件包 |
在审批具有多个组织的渠道的链代码定义时,可以指定其他包 ID。如果定义名称和背书策略相同,则通道成员可以安装特定于其组织的链代码,但可以读取数据并将其写入相同的链代码名称空间。 |
从一个程序包创建多个链代码 |
同样,您可以多次批准和提交相同的链代码包,为每个定义指定不同的名称。在通道上运行链代码的多个实例。如果还为每个定义指定不同的背书策略,则每个链代码实例受不同的背书策略约束。 |