您好,登錄后才能下訂單哦!
這篇文章主要介紹fabric鏈碼Python開發包怎么用,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
Fabric-chaincode-python 開發包適用于Hyperledger Fabric區塊鏈Python鏈碼的開發,支持Fabric 1.4和2.0,官方下載地址:http://sc.hubwiz.com/codebag/fabric-chaincode-python/。
Fabric-chaincode-ptyon開發包主要包含以下特性:
完整覆蓋Fabric官方開發包(go/java/node)提供的API接口
基于asyncio異步模型實現,并發性能更出色
內置wiz工具箱,可快速搭建Hyperledger Fabric開發環境
Fabric-chaincode-python開發包運行在**Python 3.7+**環境下,當前版本1.0.0,主要類/接口及關系如下圖所示:
Fabric-chaincode-python開發包的主要代碼文件清單參見官網說明:http://sc.hubwiz.com/codebag/fabric-chaincode-python/
Wiz工具箱可以快速搭建一個簡單的Fabric網絡作為鏈碼和應用開發環境,該網絡中僅包含單一的peer節點和orderer節點,主要特征如下:
機構及MSPID:Org1/Org1MSP
通道名稱:ch2
鏈碼名稱:wizcc
排序節點:127.0.0.1:7050
對等節點:127.0.0.1:7051/7052
啟動Fabric網絡需要使用三個終端,并分別為這三個終端設置wiz工具箱的環境變量:
~/fabric-chaincode-python$ source wiz_env.sh
STEP 1:在1#終端創建一個新目錄devnet
用來初始化一個fabric項目:
~/fabric-chaincode-python$ mkdir devnet && cd devnet ~/fabric-chaincode-python/devnet$ wiz init
結果如下:
STEP 2:在1#終端使用wiz net reset
初始化Fabric網絡的密碼學資料和通道初始化交易資料:
~/fabric-chaincode-python/devnet$ wiz net reset
結果如下:
STEP 3:在1#終端使用wiz net start
啟動Fabric網絡的peer節點和orderer節點:
~/fabric-chaincode-python/devnet$ wiz net start
結果如下:
STEP 4:在2#終端使用wiz cc start
啟動wiz工具箱預置的Python鏈碼:
~/fabric-chaincode-python/devnet$ wiz cc start
結果如下:
STEP 5:在3#終端使用wiz ch start
命令創建通道ch2
并將peer節點加入通道:
~/fabric-chaincode-python/devnet$ wiz ch start
結果如下:
測試鏈碼:在3#終端使用wiz admin
命令進入管理控制臺:
~/fabric-chaincode-python/devnet$ wiz admin
結果如下:
使用peer chaincode query
命令測試預置鏈碼的查詢:
admin@org1> peer chaincode query -n wizcc -c '{"args":[]}' -C ch2
結果如下:
使用peer chaincode invoke
命令測試預置鏈碼的交易:
admin@org1> peer chaincode invoke -n wizcc -c '{"args":[]}' -C ch2
結果如下:
在Hyperledger Fabric網絡啟動之后,我們就可以使用預置的演示鏈碼直接替換devnet中的鏈碼。
例如,要運行token_demo.py示例,首先在2#終端按ctrl+c
停止wiz預置鏈碼的運行,然后進入fabric-chaincode-python根目錄執行演示鏈碼即可:
~/fabric-chaincode-python$ python3 token_demo.py
在3#終端的管理控制臺測試余額查詢和轉賬:
admin@org1> peer chaincode query -n wizcc -c '{"args":["balance","tommy"]}' -C ch2 admin@org1> peer chaincode invoke -n wizcc -c '{"args":["transfer","tommy","jerry","10"]}' -C ch2
下面的Python代碼使用Fabric-chaincode-python實現了一個簡單代幣的發行、轉賬與余額查詢,說明詳見注釋部分:
from fabric_shim import Shim #引入fabric_shim class TokenChaincode: #定義鏈碼 async def init(self,stub): #鏈碼初始化處理 await stub.put_state('tommy',b'1000') #向tommy發行1000代幣 await stub.put_state('jerry',b'1000') #向jerry發行1000代幣 return Shim.success(b'init ok') #返回成功信息 async def invoke(self,stub): #鏈碼交易處理 fcn, args = stub.get_function_and_parameters() #獲取鏈碼調用方法名和參數列表 if fcn == 'reset': #根據方法名進行路由 return await self.init(stub) if fcn == 'balance': return await self.balance(stub,args[0]) if fcn == 'transfer': return await self.transfer(stub,args[0],args[1],args[2]) return Shim.error(b'method not supported') #未知的方法名返回錯誤信息 async def balance(self,stub,account): #賬戶余額查詢方法 value = await stub.get_state(account) #從賬本讀取余額 return Shim.success(b'balance => ' + value) #返回余額信息 async def transfer(self,stub,owner,to,value): #代幣轉賬方法 value = int(value) owner_balance = await stub.get_state(owner) owner_balance = int(owner_balance) - value #扣除轉出方余額 to_balance = await stub.get_state(to) to_balance = int(to_balance) + value #增加轉入放余額 await stub.put_state(owner, #更新轉出方狀態 bytes(str(owner_balance),'utf-8')) await stub.put_state(to,bytes(str(to_balance),'utf-8')) #更新轉入方狀態 return Shim.success(b'transfer ok') #返回成功信息 Shim.start( TokenChaincode() ) #啟動鏈碼
Shim
的主要API清單如下:
start():啟動鏈碼
success():創建成功響應對象
error():創建失敗響應對象
ChaincodeSupportClient
的主要API清單如下:
chat():啟動與peer節點的雙向通信流
ChaincodeStub
的主要API清單如下:
get_function_and_parameters():獲取鏈碼調用方法名和參數列表
get_txid():獲取鏈碼調用交易的ID
get_channel_id():獲取鏈碼調用交易的通道ID
get_creator():獲取鏈碼調用交易的用戶ID
get_transient():獲取鏈碼調用交易的暫態數據集
get_tx_timestamp():獲取鏈碼調用交易的時間戳
get_state():獲取賬本上指定鍵的狀態
put_state():更新賬本上指定鍵的狀態
delete_state():刪除賬本上指定鍵的狀態
set_state_validation_parameter():設置狀態驗證參數
get_state_validation_parameter():獲取狀態驗證參數
get_state_by_range():獲取賬本上指定范圍內的鍵的狀態
get_state_by_range_with_pagination():分頁獲取賬本上指定范圍內的鍵的狀態
get_query_result():獲取節點富查詢結果,僅在采用couchdb作為peer節點存儲庫是有效
get_query_result_with_pagination():分頁獲取節點富查詢結果
get_history_for_key():獲取賬本上指定鍵的更新歷史
invoke_chaincode():調用其他鏈碼
set_event():觸發鏈碼事件
create_composite_key():創建復合鍵
split_composite_key():拆分復合鍵,返回復合鍵類型和組成屬性值
get_state_by_partial_composite_key():使用部分復合鍵查詢賬本狀態
get_state_by_partial_composite_key_with_pagination():使用部分復合鍵分頁查詢賬本狀態
get_private_data():獲取指定私有數據集中的指定鍵的狀態
get_private_data_hash():獲取指定私有數據集中的指定鍵的狀態哈希
put_private_data():更新指定私有數據集中的指定鍵的狀態
delete_private_data():刪除指定私有數據集中的指定鍵
set_private_data_validation_parameter():設置私有數據的驗證參數
get_private_data_validation_parameter():獲取私有數據的驗證參數
get_private_data_by_range():獲取指定私有數據集中指定范圍的鍵的狀態
get_private_data_by_partial_composite_key():使用部分復合鍵查詢私有數據集
get_private_data_query_result():獲取私有數據集的富查詢結果,僅在啟用couchdb時有效
以上是“fabric鏈碼Python開發包怎么用”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。