【21天轉型區塊鏈】DAY6
區塊鏈核心技術——智慧合約
鏈碼(智慧合約)的基本概念
智慧合約是由事件驅動的、具有狀態的、儲存和執行在區塊鏈上的程式
Fabric鏈碼基本概念
Channel — 通道,子鏈
1、同一peer可加入不不同channel 鏈碼的操作基於Channel進行
2、同一channel上的peer結點同步其上鍊碼執行的結果
Endorser — 模擬執行鏈碼
1、分離計算任務,減輕共識節點負擔,增加吞吐量
2、支援endorsement policy
Orderer — 對鏈碼執行結果共識
支援solo/kafka/FBFT不同的ordering策略
Committer — 將鏈碼執行結果寫進賬本ledger
交易執行的流程
鏈碼的開發
必須要實現的介面:
type Chaincode interface {
// 初始化工作,一般情況下僅被調⽤用一次
Init(stub ChaincodeStubInterface)
pb.Response
// 查詢或更新world state,可多次被調⽤
Invoke(stub ChaincodeStubInterface)
pb.Response
}
鏈碼示例和Demo-註冊會員
鏈碼示例和Demo-申請幫助
交易內容的區塊結構
如何除錯
習題:
1. 下列哪些不是fabric支援的可用鏈碼語言?
A.Go B.python C.C++ D.C
答:BCD
2. 哪些不是基於fabric鏈程式碼的預定義介面?
A. Init B. Invoke C.Query D. Delete
答:D
3. 下列哪些屬於fabric中賬本資料讀寫方法?
A. GetState B. Putstate C. Delstate D. GetStateByRange
答:ABCD
4. 同一個鏈程式碼(名字版本一樣)安裝在3個peer上在通道例項化幾次?
a. 1 b. 2 c. 3 d.無限
答:A
5. 同一個(名字版本一樣)鏈程式碼在peer上安裝幾次?
a. 1 b. 2 c. 3 d.無限
答:A
(圖片均來源於課件)