D 更新 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 网状结构网络模块类 |
---|---|
|
|
适用于 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。
/console/admin/api/v1.1/chaincodes
/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 调用。要了解更多信息,请参阅链代码生命周期。