D 更新 Hyperledger Fabric v2.x 的应用程序

升级平台版本时,您可能需要对现有应用进行更改,以便其使用新版本的超级账本架构。

提供了多个版本的超级账本架构 SDK。请使用与您的实例所基于的超级账本架构版本兼容的 SDK 版本。对于基于 Hyperledger Fabric v2.x 的实例,请使用与 Hyperledger Fabric v2.2 长期支持 (LTS) 发行版兼容的版本。Oracle Blockchain Platform 已通过验证,可用于 Hyperledger Fabric v2.x 的以下版本:
  • 适用于 Node.js 版本 2.2.9 的超级账本架构客户端 SDK
  • 适用于 Java 版本 2.2.2 的超级账本架构客户端 SDK
  • 适用于 Go 版本 1.0.0 的 Hyperledger Fabric 客户端 SDK

Hyperledger Fabric v2.x 需要 Go 版本 1.20 或更高版本,因此您可能需要升级所使用的 Go 版本。

注意:

如果再次部署现有的链代码 .zip 文件,并且索引存储在链代码包的根目录中,而不是存储在 META-INF 目录下,则查询可能会遇到超时错误。为避免超时错误,请确保部署到 Hyperledger Fabric v2.x 实例的现有链代码中的索引位于以下目录中:
META-INF/statedb/relationaldb/indexes
有关详细信息,请参阅状态数据库索引

如果应用使用客户端 SDK 完成更复杂的操作(如管理链代码生命周期、监听事件或管理数字钱包),则可能需要更新应用,如以下各节所述。

适用于 Node.js 的超级账本架构 SDK

下表汇总了 Node.js 的 Hyperledger Fabric SDK 版本 1.4 和 2.x 之间的差异。有关更多信息,请参见 Hyperledger Fabric 文档中的将客户机应用程序从 v1.4 迁移到 v2.0

版本 2.x 中的更改 客户操作
已删除 fabric-client 模块。 重构应用程序以使用 fabric-network 模块。
重新设计了用于存储和访问身份信息的钱包。 有关迁移 Wallet 的准则和实用程序,请参见 Hyperledger Fabric 文档。
已重新设计事件监听程序 API 和行为。 重新编写事件监听程序以使用新 API。
SDK 不再提供管理和管理功能,包括创建渠道和管理链代码生命周期。 使用命令行界面执行这些操作。使用版本 1.4 函数进行生命周期管理的现有客户机将无法与 Hyperledger Fabric v2.x 实例一起使用。

下表列出了 Hyperledger Fabric v2.x fabric-network 模块与 Hyperledger Fabric v1.4.7 fabric-network 模块中的可用类。

版本 2.x 网状结构网络模块类 版本 1.4 网状结构网络模块类

DefaultCheckpointers
Gateway
HsmX509Provider
IdentityProviderRegistry
Transaction
Wallet

AbstractEventHubSelectionStrategy
AbstractEventListener
BaseCheckpointer
BaseWallet
CommitEventListener
Contract
ContractEventListener
CouchDBWallet
EventHubManager
FileSystemCheckpointer
FileSystemWallet
Gateway
HSMWalletMixin
InMemoryWallet
Network
Query
RoundRobinEventHubSelectionStrategy
Transaction
X509WalletMixin

适用于 Java 的 Hyperledger Fabric SDK

如果您的应用使用在适用于超级账本架构 2.0 的 Java SDK 中已弃用的生命周期 API(InstallProposalRequest、InstantiateProposalRequest 和 UpgradeProposalRequest),请重新编写应用以使用较新版本的 SDK 中的 API。有关详细信息,请参阅适用于 Hyperledger Fabric 2.0 的 Java SDK 发行说明

Oracle Blockchain Platform REST API(REST 代理)

无需更改即可调用现有链代码。

为支持需要初始化的新链代码的初始化函数,向现有事务处理 API 添加了一个可选的 isInit 参数。有关详细信息,请参阅 REST API 文档中的发送事务处理

Oracle Blockchain Platform REST API(控制台)

更新所有 API 调用中使用的版本。对于 Hyperledger Fabric v1.4.7 ,API 版本号为 1.1。对于 Hyperledger Fabric v2.x ,API 版本号为 2。

例如,要获取 Hyperledger Fabric v1.4.7 的已安装链代码列表,请使用以下 REST 端点:
/console/admin/api/v1.1/chaincodes
要获取 Hyperledger Fabric v2.x 的已安装链代码列表,请使用以下 REST 端点:
/console/admin/api/v2/chaincodes

注意:

虽然大多数现有 API 都具有新的 Hyperledger Fabric v2.x 等效项,但是没有 1:1 匹配项。某些 API 对 Hyperledger Fabric 的每个版本都是唯一的,有些 API 对每个版本具有不同的参数。例如,在 Hyperledger Fabric v2.x 上,部署函数已从 chaincode 子路径移至 channel 子路径。有关详细信息,请参阅 REST API 文档中的新 API、已更改 API 和已弃用的 API

由于 Hyperledger Fabric v2.x 包含新的链代码生命周期,其中包含了在对等节点上安装链代码并在通道上启动链代码的新过程,因此您可能需要更新任何相关的 API 调用。要了解更多信息,请参阅链代码生命周期