撰寫鏈碼
鏈碼以 Go、Node.js 或 Java 撰寫,然後封裝在 Oracle Blockchain Platform 網路上安裝的 ZIP 檔案中。
鏈碼定義分類帳中的資料結構描述、初始化、在應用程式觸發時完成更新,以及回應查詢。連鎖經營代碼也可以張貼事件,以通知應用程式並完成下游作業。例如,在採購單、發票和交貨記錄以鏈碼比對之後,它可以過帳事件,讓訂閱應用程式可以處理相關的付款並更新內部 ERP 系統。
Chaincode 開發的資源
Oracle Blockchain Platform 使用 Hyperledger Fabric 作為其基礎。請使用 Hyperledger Fabric 文件來協助您撰寫有效的鏈碼。
-
歡迎使用 Hyperledger Fabric 。撰寫您自己的鏈碼之前,請先閱讀「關鍵概念和教學課程」小節。
-
執行程式設計語言。Go 編譯器、工具和程式庫提供各種資源,可簡化撰寫鏈碼。
-
套裝程序 shim 。Package shim 為鏈碼提供 API,以存取其狀態變數、取得交易相關資訊環境,以及呼叫其他鏈碼。套裝軟體 shim 文件說明鏈碼所需的實際語法。
Oracle Blockchain Platform 提供可下載的樣本,協助您瞭解如何撰寫鏈碼和應用程式。請參閱何謂鏈碼範例?
您可以將 Rich-query 語法新增至鏈碼,以查詢狀態資料庫。請參閱 SQL Rich Query Syntax 和 CouchDB Rich Query Syntax 。
封裝 Go Chaincode
寫入鏈碼後,請將其壓縮成 ZIP 格式的檔案。您不需要為 Go 鏈碼建立套件或簽署該套件 — Oracle Blockchain Platform 安裝和部署程序會依照 Typical Workflow to Deploy Chaincodes (Hyperledger Fabric v2.x) 中的說明為您執行。
如果您的鏈碼有任何外部相依性,您可以將它們放置在 ZIP 檔案的供應商目錄中。
為 Go Chaincodes 提供商
Hyperledger Fabric v2.x 中不包含先前 Hyperledger Fabric 版本所包含的 Go 鏈碼影像相依性。現在必須對 Go 鏈碼進行廠商 (匯入) 後,才能將其安裝在對等節點上。
您可以使用 Go 模組或第三方工具 (例如協力廠商) 為鏈碼 Shim 提供廠商,並將其更新為與 Hyperledger Fabric v2.x 搭配運作的版本。
如需詳細資訊,請參閱 Hyperledger Fabric 文件中的 Chaincode shim changes (僅限 Go chaincode) 和 Upgrade Chaincodes with vendored shim 。如需有關「執行」模組的詳細資訊,請參閱執行模組參照。
封裝 Node.js Chaincode
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 Chaincode
如果您要撰寫 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
測試 Chaincode
在撰寫鏈碼後進行測試。請參閱下列主題:
安裝與部署 Chaincode
測試鏈碼之後,您可以依照部署鏈碼的典型工作流程 (Hyperledger Fabric v2.x) 中的資訊進行部署。
升級鏈碼
請依照升級鏈碼 (Hyperledger Fabric v2.x) 中的步驟升級部署的鏈碼。