區塊鏈100講:Hyperledger Fabric 中的鏈碼(智能合約)

image

1

鏈碼概念

網絡運行環境咱們已經啓動完成,如今咱們從開發者的角度來認識一下完成交易所必須的智能合約(在 Hyperledger Fabric 中被稱之爲 Chaincode,也就是鏈上代碼)的相關知識,以便於理解帳本中的數據究竟是經過什麼方式進行操做。安全

Chaincode:鏈上代碼,簡稱鏈碼,通常是指由開發人員使用Go語言(也支持Java等語言)編寫的應用程序代碼,提供分佈式帳本的狀態處理邏輯。鏈碼被部署在Fabric的網絡節點中,可以獨立運行在具備安全特性的受保護的 Docker 容器中,以 gRPC 協議與相應的 peer 節點進行通訊,以操做(初始化或管理)分佈式帳本中的數據。能夠根據不一樣的需求開發出不一樣的複雜的應用。網絡

鏈碼分類併發

在 Hyperledger Fabric 中,鏈碼通常分爲:分佈式

  • 系統鏈碼區塊鏈

  • 用戶鏈碼code

2

Fabric提供了什麼-系統鏈碼

負責 Fabric 節點自身的處理邏輯, 包括系統配置、背書、校驗等工做接口

系統鏈碼僅支持 Go 語言, 在 Peer 節點啓動時會自動完成註冊和部署生命週期

系統鏈碼共有五種類型:開發

配置系統鏈碼(CSCC)部署

CSCC:Configuration System Chaincode,負責處理 Peer 端的 Channel 配置。

生命週期系統鏈碼(LSCC)

LSCC:Lifecycle System Chaincode,負責對用戶鏈碼的生命週期進行管理。

查詢系統鏈碼(QSCC)

QSCC:Query System Chaincode,提供帳本查詢 API。如獲取區塊和交易等信息。

背書管理系統鏈碼(ESCC)

ESCC:Endorsement System Chaincode,負責背書(簽名)過程, 並能夠支持對背書策略進行管理

對提交的交易提案的模擬運行結果進行簽名,,以後建立響應消息返回給客戶端

驗證系統鏈碼(VSCC)

VSCC:Validation System Chaincode,處理交易的驗證,包括檢查背書策略以及多版本併發控制

3

什麼是用戶鏈碼

由應用程序開發人員根據不一樣場景需求及成員制定的相關規則,使用 Golang(或Java等)語言編寫的基於操做區塊鏈分佈式帳本的狀態的業務處理邏輯代碼,運行在鏈碼容器中,經過 Fabric 提供的接口與帳本狀態進行交互。

用戶鏈碼在整個應用程序中處於重要地位。由於它下可對帳本數據進行操做,上能夠給企業級應用程序提供調用接口。因此一個沒有鏈碼的企業級應用程序,不能稱之爲是基於區塊鏈的企業級應用程序。

4

鏈碼的生命週期管理

鏈碼開發編寫完成後,並不能馬上使用,而是必須通過一系列的操做以後才能應用在 Hyperledger Fabric 網絡中進而處理客戶端提交的交易。這一系列的操做是由鏈碼的生命週期來負責管理。

管理 Chaincode 的生命週期共有五個命令:

  • install:將已編寫完成的鏈碼安裝在網絡節點中。

  • instantiate:對已安裝的鏈碼進行實例化。

  • upgrade:對已有鏈碼進行升級。鏈代碼能夠在安裝後根據具體需求的變化進行升級。

  • package:對指定的鏈碼進行打包的操做。

  • singnpackage:簽名。

安裝、實例化、升級這三項操做不適用於系統鏈碼

鏈碼的生命週期管理命令現階段只有這五個,但將來還會支持 stop 和 start 命令, 用來中止和啓動鏈碼。

鏈代碼成功安裝和實例化後,則處於活動狀態(正在運行),時刻準備執行處理提交的交易提案。

下一節開始咱們會使用這些生命週期管理命令來實現對鏈碼的相關操做。

5

FAQ

文中所說的狀態與帳本數據是什麼關係?

狀態其實指的就是帳本中的數據。沒有其它另外的含義。

鏈碼能夠訪問全部帳本中的狀態嗎?

一個鏈碼對應一個帳本,因此通常狀況下鏈碼是不能夠訪問其它帳本中的數據的。

內容來源:區塊鏈兄弟

做者:韓小東

課程推薦

image

相關文章
相關標籤/搜索