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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

fabric 智能合约go语言模板

發(fā)布時間:2024/1/18 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 fabric 智能合约go语言模板 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

基于fabric分布式賬本 的存證智能合約模板

eg:

package mainimport ("encoding/json""fmt""strconv""strings""time""github.com/hyperledger/fabric/core/chaincode/shim""github.com/hyperledger/fabric/core/chaincode/shim/ext/cid"pb "github.com/hyperledger/fabric/protos/peer" )type chaincode struct { }type DataAsset struct {CtNo string `json:"ctNo"` ParentCtNo string `json:"parentCtNo"` RootCtNo string `json:"rootNo"` OpenName string `json:"openName"` OpenUscc string `json:"openUscc"` ReceiveName string `json:"receiveName"` ReceiveUscc string `json:"receiveUscc"` AcceptName string `json:"acceptName"` AcceptUscc string `json:"acceptUscc"` SignTime int64 `json:"signTime"` LoginUserId string `json:"loginUserId"` CreateDatetimeAsset int64 `json:"createDatetimeAsset"` DataType int `json:"dateType"` Operator string `json:"operator"` AssetTxId string `json:"assetTxId"` }type Contract struct {AgreementNo string `json:"agreementNo"` RelCtNo string `json:"relCtNo"` AgreementHash string `json:"agreementHash"` DataType int `json:"dateType"` CreateDatetimeCon int64 `json:"createDatetimeCon"` Operator string `json:"operator"` LoginUserId string `json:"loginUserId"` BillTxId string `json:"billTxId"` }func (t *chaincode) Init(stub shim.ChaincodeStubInterface) pb.Response {fmt.Println("SX Chaincode init......")return shim.Success(nil) }func (t *chaincode) Invoke(stub shim.ChaincodeStubInterface) pb.Response {function, args := stub.GetFunctionAndParameters()fmt.Println("SX Chaincode invoke is running " + function)fmt.Println("SX Chaincode ======>>> args: ")fmt.Println(args)fmt.Println("SX Chaincode =========")txId := stub.GetTxID()fmt.Println("SX Chaincode ======>>> txId: " + txId)// 開具簽收if function == "putAssetAndContract" {return t.putAssetAndContract(stub, args, txId)}if function == "getCurrentDatas" {return t.getCurrentDatas(stub, args)}return shim.Error(fmt.Sprintf("unknown function %s", function)) }func (t *chaincode) putAssetAndContract(stub shim.ChaincodeStubInterface, args []string, txId string) pb.Response {if len(args) != 21 {res := fmt.Sprintf("invalid number of args %d", len(args))fmt.Println(res)return shim.Error(res)}var params [21]stringfor i := 0; i < len(args); i++ {params[i] = strings.Replace(args[i], " ", "", -1)}fmt.Println("========== params ==========")fmt.Println(params)// 判斷資產(chǎn)是否存在keyAssets := params[1]assets, err := stub.GetState(keyAssets)if err != nil {return shim.Error("Failed to get asset: " + err.Error())} else if assets != nil {fmt.Println("This asset already exists")return shim.Error("This asset already exists")}// 判斷合同是否存在keyBills := params[18] + "_" + params[19]// bills, err := stub.GetState(keyBills)// if err != nil {// return shim.Error("Failed to get contract: " + err.Error())// } else if bills != nil {// fmt.Println("This contract already exists")// return shim.Error("This contract already exists")// }// 資產(chǎn)數(shù)據(jù)上鏈dt, _ := stub.GetTxTimestamp()amounts, _ := strconv.ParseFloat(params[10], 64)datetime := time.Unix(dt.Seconds, int64(dt.Nanos)).UnixNano() / 1e6val, ok, err := cid.GetAttributeValue(stub, "hf.EnrollmentID")if err != nil {return shim.Error(err.Error())}if !ok {return shim.Error("The client identity does not possess the attribute")}jkyamounts, _ := strconv.ParseFloat(params[11], 64)promiseTime, _ := strconv.ParseInt(params[12], 10, 64)signTime, _ := strconv.ParseInt(params[16], 10, 64)dataAsset := &DataAsset{params[1], params[2], params[3], params[4], params[5], params[6], params[7], params[8], params[9],amounts, jkyamounts, promiseTime, params[13], params[14], params[15], signTime, params[17], datetime, 1, val, txId}dataAssetJSONBytes, err := json.Marshal(dataAsset)if err != nil {return shim.Error(err.Error())}err = stub.PutState(keyAssets, dataAssetJSONBytes)if err != nil {return shim.Error(err.Error())}// 合同數(shù)據(jù)上鏈contract := &Contract{params[18], params[19], params[20], 2, datetime, val, params[17], txId}dataBillJSONBytes, err := json.Marshal(contract)if err != nil {return shim.Error(err.Error())}err = stub.PutState(keyBills, dataBillJSONBytes)if err != nil {return shim.Error(err.Error())}return shim.Success(nil) }func (t *chaincode) getCurrentDatas(stub shim.ChaincodeStubInterface, args []string) pb.Response {var params [2]stringfor i := 0; i < len(args); i++ {params[i] = strings.Replace(args[i], " ", "", -1)}dataBytes, err := stub.GetState(params[1])if err != nil {return shim.Error("Failed to delete")}return shim.Success(dataBytes) }func main() {err := shim.Start(new(chaincode))if err != nil {fmt.Printf("Error starting New key per invoke: %s", err)} }

總結(jié)

以上是生活随笔為你收集整理的fabric 智能合约go语言模板的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日日夜夜天天综合 | 在线激情av | 久久网页 | 国产在线激情视频 | 动漫同人高h啪啪爽文 | 99久热在线精品996热是什么 | 成年人av| 色777| 人人干人人搞 | 大色av| 黄色av高清| 亚洲视频国产 | 免费在线观看亚洲 | 国产精品免费看久久久无码 | 貂蝉被到爽流白浆在线观看 | 级毛片 | 91九色在线 | 久久夜色精品亚洲 | 青草伊人久久 | 国产无套粉嫩白浆内谢 | 国产成人愉拍精品久久 | 狠狠成人| 色大师av一区二区三区 | 波多野结衣办公室双飞 | 伊人久久天堂 | 少妇15p | 日韩精品在线观看一区二区 | 欧美三级视频在线播放 | 亚洲精品久久久久久无码色欲四季 | 日韩精品成人一区二区在线 | 96精品视频在线观看 | 在线观看黄色的网站 | 老司机福利精品 | 777午夜 | 日韩av一区二区在线观看 | 超碰人人人人人人人 | 韩国av不卡 | 在线中文字幕第一页 | 中文字幕第99页 | 肉丝美足丝袜一区二区三区四 | 中文字幕人成乱码熟女香港 | 男生和女生差差的视频 | 老女人一毛片 | 国内免费精品视频 | 在线色综合 | 国模一区二区三区 | 中文av在线播放 | 夜夜嗨影院 | 国产美女在线播放 | 国产精品欧美激情 | 久久亚洲一区二区三区四区 | 亚洲av高清一区二区三区 | 影音先锋伦理片 | 在线中文字幕第一页 | 亚洲人成免费电影 | 亚洲女同av | 夜夜爽夜夜 | 国产成人无码一区二区在线播放 | 国产a级大片 | 九九热在线视频 | 成人av不卡 | 国产88av| 亚洲精品一区三区三区在线观看 | xxxx久久 | 久草网站 | 黑料视频在线 | 97视频在线看 | 三级黄色短视频 | 亚洲天堂免费在线观看视频 | 国产在线高清 | 在线看片不卡 | 免费男女视频 | 国产免费一区 | 五月天婷婷爱 | 青青草原免费观看 | 日韩1区 | 亚洲成人一区二区三区 | 久久久国产精华液 | 欧美午夜精品久久久久久蜜 | 日韩欧美在线观看一区 | 777久久| 蜜桃av影视| 麻豆视频在线观看 | 日本精品中文字幕 | 综合在线视频 | www.久久国产 | 久久久免费精品 | 在线看欧美| 在线播放无码后入内射少妇 | 国产伦精品一区二区三区四区免费 | 精品一区二区三区免费毛片爱 | 国产精品久久久久国产a级 国产一区二区在线播放 | 爽天天天天天天天 | 黄色一级黄色片 | 巨大黑人极品videos精品 | 久久少妇av | 欧美色女人 | av在线一区二区三区 | 成年人视频在线看 |