日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Fabric学习笔记-智能合约

發布時間:2025/3/15 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Fabric学习笔记-智能合约 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文介紹了什么是智能合約,以及如何在Fabric下編寫一個簡單的智能合約Demo。

什么是智能合約?

智能合約是一種旨在以信息化方式傳播、驗證或執行合同的計算機協議。智能合約允許在沒有第三方的情況下進行可信交易。這些交易可追蹤且不可逆轉,Fabric為智能合約提供了一個可信的執行環境。

Fabric下的智能合約

Chaincode是Fabric下智能合約的代碼實現,是一段在區塊鏈上驗證,存儲和執行的代碼,只有通過Chaincode才能與Fabric網絡進行交互。

在Fabric下又分為系統Chaincode和普通Chaincode。

  • 系統Chaincode運行于peer節點內而非一個隔離的容器中,沒有生命周期的概念,用于實現一些系統行為。
  • 普通Chaincode運行在一個單獨的容器中,對外提供操作Fabric網絡的接口,有打包、安裝、實例化和升級四個生命周期并且有相應的函數提供調用,操作更加的靈活也是我們通常所指Chaincode。

Chaincode的運行過程

  • Channel負責連接不同的Peer,同步連接到的Peer對Chaincode的執行結果,相當于將一些節點劃分為一個子集同時同步Chaincode的執行結果。
  • Endorser負責執行Chaincode。
  • Orderer負責對Chaincode的執行結果進行共識,目前支持solo/kafka/sBFT三種共識方式。
  • Committer負責將Chaincode經過共識后的結果寫入Ledger。

編寫Chaincode

Chaincode必須實現兩個接口。

type Chaincode interface { // 初始化?作,?般情況下僅被調??次,升級時也會調用該函數Init(stub ChaincodeStubInterface) pb.Response// 查詢或更新world state,可多次被調?Invoke(stub ChaincodeStubInterface) pb.Response }

下面是一個最小智能合約所需要的結構。

package main import ( "fmt" "github.com/hyperledger/fabric/core/chaincode/shim" )type SimpleAsset struct {}func (t *SimpleAsset) Init(stub shim.ChaincodeStubInterface) peer.Response {} func (t *SimpleAsset) Invoke(stub shim.ChaincodeStubInterface) peer.Response {}func main() {if err := shim.Start(new(SimpleAsset)); err != nil {fmt.Printf("Error starting SimpleAsset chaincode: %s", err)} }

具體的業務邏輯都在Invoke這個函數里面進行編寫。

首先,我們完善一下Init函數

func (t *SimpleAsset) Init(stub shim.ChaincodeStubInterface) peer.Response {args := stub.GetStringArgs()if len(args) != 2 {return shim.Error("Incorrect arguments. Expecting a key and a value")}// 實例化的時候初始化一下狀態err := stub.PutState(args[0], []byte(args[1]))if err != nil {return shim.Error(fmt.Sprintf("Failed to create asset: %s", args[0]))}return shim.Success(nil) }

接著在Invoke里編寫業務邏輯

func (t *SimpleAsset) Invoke(stub shim.ChaincodeStubInterface) peer.Response {fn, args := stub.GetFunctionAndParameters()var result stringvar err errorif fn == "set" {result, err = set(stub, args)} else {result, err = get(stub, args)}if err != nil {return shim.Error(err.Error())}return shim.Success([]byte(result)) }

Invoke根據不同的參數決定調用查詢或者是設置狀態。

編寫set和get函數

func set(stub shim.ChaincodeStubInterface, args []string) (string, error) {if len(args) != 2 {return "", fmt.Errorf("Incorrect arguments. Expecting a key and a value")}err := stub.PutState(args[0], []byte(args[1]))if err != nil {return "", fmt.Errorf("Failed to set asset: %s", args[0])}return args[1], nil }func get(stub shim.ChaincodeStubInterface, args []string) (string, error) {if len(args) != 1 {return "", fmt.Errorf("Incorrect arguments. Expecting a key")}value, err := stub.GetState(args[0])if err != nil {return "", fmt.Errorf("Failed to get asset: %s with error: %s", args[0], err)}if value == nil {return "", fmt.Errorf("Asset not found: %s", args[0])}return string(value), nil }

github上有完整代碼,代碼非常簡單就是根據命令查詢或者設置世界狀態。

執行效果如下圖:

這樣就在Fabric上實現了一個簡單的智能合約。

https://zhuanlan.zhihu.com/p/33750599

總結

以上是生活随笔為你收集整理的Fabric学习笔记-智能合约的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 森林影视官网在线观看 | 国产欧美日韩91 | 欧美xxxxxx片免费播放软件 | 欧美成人精品在线视频 | 免费看黄色网 | 欧美混交群体交 | 美国性生活大片 | 亚洲精品无码久久久久久久 | 亚洲小视频在线 | 欧美性猛交xxxx乱大交 | 六月激情婷婷 | 少妇色综合 | 久久久欧美精品sm网站 | 午夜视频日韩 | 亚洲精品一区在线 | 天堂网一区| 黄色一级视频在线观看 | 日日噜噜噜夜夜爽爽狠狠 | 人妻少妇精品中文字幕av蜜桃 | 999国产精品亚洲77777 | 蜜臀久久精品久久久久久酒店 | av黄色成人 | 美女靠逼视频网站 | 国产aaa大片 | 红色假期黑色婚礼2 | 日本大胆人体视频 | 蜜桃成熟时李丽珍国语 | 制服丝袜国产精品 | 免费啪视频在线观看 | 污污网站在线免费观看 | 丰满少妇中文字幕 | 在线观看中文字幕 | 亚洲欧美日韩在线一区二区 | 最新中文字幕av | 一区二区传媒有限公司 | 国产午夜精品一区二区理论影院 | 99re国产| 自拍偷拍福利视频 | 综合色在线视频 | 韩国三级hd中文字幕的背景音乐 | 97自拍网| 91精品国产色综合久久不8 | 亚洲经典一区二区三区 | 日韩在线视频不卡 | 日韩综合在线视频 | 欧美一区二区三区公司 | 亚洲成人午夜电影 | 久久久国产精品一区二区三区 | 成人免费高清在线播放 | 宿舍女女闺蜜调教羞辱 | 性――交――性――乱睡觉 | 蜜桃成人在线 | 久草欧美 | 天天操女人 | 日韩高清不卡 | 黄色免费在线视频 | 国产精品日日摸夜夜爽 | 欧美三级日本三级 | 亚洲第一黄色片 | 中文字幕在线播放 | 视频三区在线 | 96av视频 | 神马午夜在线 | 国语对白做受xxxxx在线中国 | 日韩精品第1页 | 欧美 日韩 国产精品 | 自由 日本语 热 亚洲人 | 免费高清毛片 | 国产免费一区二区三区视频 | 久久中文视频 | 放荡的美妇在线播放 | 久久人人爽爽人人爽人人片av | 26uuu精品一区二区 | 毛片久久久久久 | 成人在线播放av | 欧美激情在线免费观看 | 男女野外做受全过程 | 欧美日韩少妇 | 午夜影院黄 | www午夜 | 日本r级电影在线观看 | 成人在线免费网站 | 亚洲狠狠婷婷综合久久久久图片 | 亚洲永久精品在线观看 | xxxxx在线| 日本三级久久 | 男人阁久久 | 亚洲欧美中文日韩在线观看 | 国产高清二区 | 欧美成人性生活 | 刘亦菲一区二区三区免费看 | 成人免费一区二区三区 | 免费黄在线 | 亚洲AV无码久久精品浪潮 | 国产白浆在线观看 | 久久成人国产精品 | 国产一卡二卡三卡 | 欧美人与动牲交a欧美精品 欧美三级在线看 | 被灌满精子的波多野结衣 |