撰寫鏈碼

鏈碼會以 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 SyntaxCouchDB 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

如果您正在撰寫 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"
	}
}
下列封裝規則適用於 Node.js 鏈碼。
  • package.json 檔案必須位於根目錄中。
  • 項目 JavaScript 檔案可位於套裝軟體的任何位置。
  • 如果 package.json 檔案中未指定 "start" : "node <start>.js",則 server.js 檔案必須位於根目錄中。

.zip 格式壓縮鏈碼和封裝檔案,以將其安裝在 Oracle Blockchain Platform

封裝 Java Chaincode

如果您要撰寫 Java 鏈碼,可以選擇 Gradle 或 Maven 來建立鏈碼。

如果您使用 Gradle,請將鏈碼 build.gradle 和 settings.gradle 壓縮成 .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
如果您使用 Maven,請將鏈碼和 pom.xml 壓縮為 .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

在您測試鏈碼之後,您可以依照部署鏈碼的一般工作流程中的資訊進行部署。

升級鏈碼

依照升級鏈碼中的步驟來升級已部署的鏈碼。