撰寫鏈碼
鏈碼以 Go、Node.js 或 Java 撰寫,然後封裝成安裝在 Oracle Blockchain Platform 網路上的 ZIP 檔案。
鏈碼定義分類帳中的資料綱要、將其初始化、在應用程式觸發時執行更新,以及回應查詢。鏈碼也可以張貼可通知應用程式的事件並執行下游作業。例如,在採購單、商業發票及交貨記錄以鏈碼比對後,可以將事件過帳,讓訂閱應用程式可以處理相關付款並更新內部 ERP 系統。
鏈碼開發資源
Oracle Blockchain Platform 使用 Hyperledger Fabric 作為其基礎。使用 Hyperledger Fabric 文件可協助您撰寫有效的鏈碼。
-
歡迎使用 Hyperledger Fabric 。在您撰寫自己的鏈碼之前,應該先讀取「關鍵概念」和「教學課程」區段。
-
使用程式設計語言。Go 編譯器、工具和程式庫提供了多種資源,可簡化寫入鏈碼。
-
套裝軟體動畫。套裝軟體 shim 為鏈碼提供 API 以存取其狀態變數、交易相關資訊環境,並呼叫其他鏈碼。這說明鏈碼所需的實際語法。
Oracle Blockchain Platform 提供可下載的範例,協助您瞭解如何撰寫鏈碼和應用程式。請參閱何謂鏈碼範例?
您可以在鏈碼中新增 Rich-query 語法,以查詢狀態資料庫。請參閱 SQL Rich Query Syntax 和 CouchDB Rich Query Syntax 。
包裝與壓縮 Go Chaincode
編寫鏈碼之後,請將其放置在 ZIP 檔中。您不需要建立 Go 鏈碼的套裝軟體或簽署 - Oracle Blockchain Platform 安裝和部署程序會依照部署鏈碼的一般工作流程 (Hyperledger Fabric v2.x) 或部署鏈碼的一般工作流程 (Hyperledger Fabric v1.4.7) 中的說明為您執行這項作業。
如果您的鏈碼有任何外部相依性,您可以將其置於 ZIP 檔案的供應商目錄中。
供應商 Shim for Go Chaincodes (Hyperledger Fabric v2.x)
Hyperledger Fabric v2.x 不包含先前版本的 Hyperledger Fabric 所包含的 Go chaincode shim 相依性。在將 shim 安裝在執行 Hyperledger Fabric v2.x 的對等體上之前,必須先將它們 (匯入) 放到 Go 鏈碼。
您可以使用 Go 模組或第三方工具 (例如協力廠商) 來為鏈碼 shim 提供廠商,並將它更新為與 Hyperledger Fabric v2.x 搭配運作的版本。
如需詳細資訊,請參閱 Hyperledger Fabric 文件中的 Chaincode shim changes (僅限 Go chaincode) 和 Upgrade Chaincodes with vendored shim 。如需有關「執行」模組的詳細資訊,請參閱執行模組參考。
包裝並壓縮 Node.js 鏈碼
package.json
檔案:
-
scripts
區段宣告如何啟動鏈碼。 -
dependencies
區段指定相依性。
以下為 Node.js 鏈碼的範例 package.json
:
{
"name": "chaincode_example02",
"version": "1.0.0",
"description": "chaincode_example02 chaincode implemented in Node.js",
"engines": {
"node": ">=8.4.0",
"npm": ">=5.3.0"
},
"scripts": { "start" : "node chaincode_example02.js" },
"engine-strict": true,
"license": "Apache-2.0",
"dependencies": {
"fabric-shim": "~1.3.0"
}
}
package.json
必須位於根目錄中。- 項目 JavaScript 檔案可位於套裝軟體的任何位置。
- 如果
package.json
中未指定"start" : "node <start>.js"
,則server.js
必須位於根目錄中。
將鏈碼和封裝項目檔案置於 ZIP 檔中,以將其安裝在 Oracle Blockchain Platform 上。
封裝和壓縮 Java 鏈碼
如果您正在撰寫 Java 鏈碼,可以選擇 Gradle 或 Maven 來建立鏈碼。
Archive: example_gradle.zip Length Date Time Name --------- ---------- ----- ---- 610 02-14-2019 01:36 build.gradle 54 02-14-2019 01:28 settings.gradle 0 02-14-2019 01:28 src/ 0 02-14-2019 01:28 src/main/ 0 02-14-2019 01:28 src/main/java/ 0 02-14-2019 01:28 src/main/java/org/ 0 02-14-2019 01:28 src/main/java/org/hyperledger/ 0 02-14-2019 01:28 src/main/java/org/hyperledger/fabric/ 0 02-14-2019 01:28 src/main/java/org/hyperledger/fabric/example/ 5357 02-14-2019 01:28 src/main/java/org/hyperledger/fabric/example/SimpleChaincode.java --------- ------- 6021 10 files
Archive: example_maven.zip Length Date Time Name --------- ---------- ----- ---- 3313 02-14-2019 01:52 pom.xml 0 02-14-2019 01:28 src/ 0 02-14-2019 01:28 src/chaincode/ 0 02-14-2019 01:28 src/chaincode/example/ 4281 02-14-2019 01:28 src/chaincode/example/SimpleChaincode.java --------- ------- 7594 5 files
測試鏈碼
撰寫鏈碼之後,您必須進行測試。請參閱:
安裝與部署鏈碼
測試鏈碼之後,您可以依照部署鏈碼的一般工作流程 (Hyperledger Fabric v2.x) 或部署鏈碼的一般工作流程 (Hyperledger Fabric v1.4.7) 中的資訊來部署鏈碼。
升級鏈碼
您可以依照升級鏈碼 (Hyperledger Fabric v2.x) 或升級鏈碼 (Hyperledger Fabric v1.4.7) 中的步驟來升級已部署的鏈碼。