鏈碼(chaincode)是 Hyperledger Fabric 提供的智能合約,是上層應用與底層區塊鏈平臺互動的媒介,現階段,Fabric 提供 Go、Java、Node.js 等語言撰寫的鏈碼
Fabric 智能合約鏈碼開發的基礎,一句話總結起來就是:一個基類,兩個查詢,一個寫入,
所有的鏈碼都實作兩個介面,init 和 invoke,
- Init(stubshim.ChaincodeStubInterface) :init用于合約初始化及升級初始化動作;
- Invoke(stubshim.ChaincodeStubInterface):Invoke是peer呼叫鏈碼的入口函式;
init 介面
用于初始化合約,在整個鏈碼的生命周期里,該介面僅僅執行一次,
invoke 介面
是撰寫業務邏輯的唯一入口,雖然只有一個入口,但是可以根據引數傳遞的不同自由區分不同業務邏輯,靈活性很高,比如應用開發者規定 Invoke 介面的第一個引數是合約方法名,剩余的 Invoke 引數串列是傳遞給該方法的引數,那么就可以在 Invoke 介面方法體中根據方法名的不同分流不同業務了,
撰寫鏈碼還有一個非常重要的原則:不要出現任何本地化和隨機邏輯,
fabric默認的狀態資料庫是個k-v庫,常用到的方法
- 兩個查詢
- getState(k)獲取單獨的key對應的value值,
- rangeQueryState(k1,k2),獲取k1開始,k2結束的所有k-v物件, 回傳的是個Map<String,String>物件, 其中k1,k2按字典序排序
- 一個寫入
- putState(k,v), 寫入資料,此處要注意下,putState資料并不會馬上落到賬本上, 要等到第二段交易提交共識達成后,資料才會落地,
-
往期精彩回顧:
- 區塊鏈知識系列
- 密碼學系列
- 共識系列
- 公鏈調研系列
- 以太坊系列
- EOS系列
- 智能合約系列
- Token系列
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/281329.html
標籤:區塊鏈
上一篇:谷粒商城專案環境搭建
