链代码生命周期

(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 NameVersionSequenceEndorsement PolicyPrivate Data CollectionInit-required。链代码定义还可以包括 Package ID,而对于所有组织,该定义不必相同。

批准链代码定义后,一个组织可以从审批组织的对等方收集背书,然后将链代码定义提交到渠道。

要使用 REST API 批准链代码定义,请参阅在渠道中批准链代码定义

在控制台中,使用快速部署或高级部署时,将尝试执行审批和提交步骤。

提交链代码定义

要使用 REST API 提交批准的链代码定义,请参阅在渠道中提交链代码定义

在控制台中,您可以在渠道的已部署的链代码页上查看已批准但未提交的链代码定义。您可以使用更多操作菜单提交批准的链代码。

链代码生命周期方案

Scenario 说明
加入渠道

通常,在控制台中,如果不提交链代码定义,则不批准链代码定义。如果您加入另一个组织提交链代码定义的共享渠道,您将在该渠道的已部署链代码页上看到链代码定义列为已提交但未获批准。您可以使用更多操作菜单批准链代码定义,还可以关联程序包 ID。您无需再次提交程序包定义。

更新背书策略

您可以在链代码定义中更新背书策略,而无需重新安装链代码。在渠道的“部署的链代码”页上,使用“更多操作”菜单升级链代码定义。展开背书策略并指定新策略,然后单击升级

批准定义而不安装

在多组织方案中,要批准链代码定义而不安装链代码软件包,请勿指定软件包 ID。您为提交到渠道的链代码定义背书,但链代码未安装在组织中的对等节点上。您将无法使用链代码为事务处理背书或查询分类账。

关于定义的分歧

在多组织方案中,不批准链代码定义或批准其他链代码定义的组织无法在其对等节点上运行链代码。如果其他组织获得了足够的背书,可以将定义提交到渠道,则这些组织可以使用链代码。事务处理仍会添加到所有组织的对等节点上的分类账中。

如果组织在链代码定义上不同意,并且没有组织获得足够的背书将定义提交到渠道,则无法提交定义,因此无法运行链代码。

多个组织安装不同的软件包

为具有多个组织的渠道审批链代码定义时,您可以指定其他套餐 ID。如果定义名称和背书策略相同,则通道成员可以安装特定于其组织的链代码,但这些链代码会读取数据并将其写入相同的链代码名称空间。

从一个程序包创建多个链代码

同样,您可以多次批准和提交相同的链代码包,为每个定义指定不同的名称。链代码的多个实例在该通道上运行。如果还为每个定义指定不同的背书策略,则每个链代码实例都遵循不同的背书策略。