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