撰寫鏈碼

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

如果您正在撰寫 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 鏈碼

如果您正在撰寫 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

測試鏈碼

撰寫鏈碼之後,您必須進行測試。請參閱:

安裝與部署鏈碼

測試鏈碼之後,您可以依照部署鏈碼的一般工作流程 (Hyperledger Fabric v2.x) 部署鏈碼的一般工作流程 (Hyperledger Fabric v1.4.7) 中的資訊來部署鏈碼。

升級鏈碼

您可以依照升級鏈碼 (Hyperledger Fabric v2.x) 升級鏈碼 (Hyperledger Fabric v1.4.7) 中的步驟來升級已部署的鏈碼。