D 更新 Hyperledger Fabric v2.x 的應用程式

升級平台版本時,您可能需要變更現有的應用程式,以便與新版本的 Hyperledger Fabric 搭配使用。

有多個版本的 Hyperledger Fabric SDK 可供使用。使用與執行處理所依據之 Hyperledger Fabric 版本相容的 SDK 版本。對於以 Hyperledger Fabric v2.x 為基礎的執行處理,請使用與 Hyperledger Fabric v2.2 長期支援 (LTS) 發行版本相容的版本。Oracle Blockchain Platform 已通過驗證,可搭配下列 Hyperledger Fabric v2.x 版本使用:
  • 適用於 Node.js 版本 2.2.9 的 Hyperledger Fabric 用戶端 SDK
  • 適用於 Java 版本 2.2.2 的 Hyperledger Fabric 用戶端 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 的 Hyperledger Fabric SDK

下表摘要 Node.js 版 Hyperledger Fabric SDK 的 1.4 和 2.x 版本之間的差異。如需詳細資訊,請參閱 Hyperledger Fabric 文件中的 Migrating client applications from v1.4 to v2.0

2.x 版的變更 客戶動作
已移除 fabric-client 模組。 重製應用程式以使用 fabric-network 模組。
用於儲存和存取識別資訊的公事包已重新設計。 請參閱 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

如果您的應用程式使用 Java SDK for Hyperledger Fabric 2.0 (InstallProposalRequest、InstantiateProposalRequest 和 UpgradeProposalRequest) 中已不再使用的生命週期 API,請重寫您的應用程式,以在較新版本的 SDK 中使用 API。如需詳細資訊,請參閱 Java SDK for Hyperledger Fabric 2.0 發行公告

Oracle Blockchain Platform REST API (REST 代理主機)

呼叫現有鏈碼不需要任何變更。

為了支援新鏈碼需要的初始化函數,已將選擇性的 isInit 參數新增至現有的交易 API。如需詳細資訊,請參閱 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 文件中的 New、Changed 及 Deprecated API

由於 Hyperledger Fabric v2.x 包含一個新的鏈碼生命週期,其中包含可在對等上安裝鏈碼並在通道上啟動鏈碼的新程序,因此您可能需要更新任何相關的 API 呼叫。若要深入瞭解,請參閱鏈碼生命週期