当前位置: 首页 > news >正文

做外贸英语要什么网站免费做app网站建设

做外贸英语要什么网站,免费做app网站建设,图片类网站建设,开发网站要多少钱hi#xff0c;好久没有更新Fabric相关文章#xff0c;今天给大家带来fabric-contract-api-go快速上手#xff0c;相较于原文省略较多#xff0c;希望深入理解的小伙伴可以点原文学习。 背景 Fabric提供了大量的API来开发智能合约#xff0c;支持 Go, Node.js, 和Java。本…hi好久没有更新Fabric相关文章今天给大家带来fabric-contract-api-go快速上手相较于原文省略较多希望深入理解的小伙伴可以点原文学习。 背景 Fabric提供了大量的API来开发智能合约支持 Go, Node.js, 和Java。本文对fabric-contract-api-go进行简单梳理可以使读者快速上手。 原文https://github.com/hyperledger/fabric-contract-api-go/blob/main/tutorials/getting-started.md 一、环境准备 装好Docker、Go的ubuntu版本尽量新一点。详细请参考原文。 二、contractapi 简述 contractapi 通过打包一个或多个合约打包成一个chaincode链码在链码中使用的合约需要实现 contractapi.ContractInterface接口实现接口相当于继承其中的方法与属性最简单的方式就是在我们自己创建的合约中嵌入contractapi.Contract结构体。代码示例 package main import (errorsfmtgithub.com/hyperledger/fabric-contract-api-go/contractapi ) // SimpleContract contract for handling writing and reading from the world state type SimpleContract struct {contractapi.Contract }三、合约函数编写的一些规则 合约仅可以返回0个、1个或2个值。0个值的情况下所有调用都返回成功1个值的情况下可以返回规定中的任意类型或error2个值的情况下第一个值是数据第二个值是error。 四、Create合约函数解释 Create函数可以在Fabric的world state中存储键值对。因为需要和world state交互我们需要传入交易的上下文在示例代码中使用了默认的contractapi.TransactionContextInterfaceTransactionContextInterface是一个接口类型实现该接口的交易上下文可以传入。然后交易上下文获取 // Create adds a new key with value to the world state func (sc *SimpleContract) Create(ctx contractapi.TransactionContextInterface, key string, value string) error {existing, err : ctx.GetStub().GetState(key)if err ! nil {return errors.New(Unable to interact with world state)}if existing ! nil {return fmt.Errorf(Cannot create world state pair with key %s. Already exists, key)}err ctx.GetStub().PutState(key, []byte(value))if err ! nil {return errors.New(Unable to interact with world state)}return nil }附上package shim的官方解释 // Package shim provides APIs for the chaincode to access its state // variables, transaction context and call other chaincodes.stub的官方解释 // ChaincodeStub is an object passed to chaincode for shim side handling of // APIs.个人理解我们在编写合约时使用stub来对账本进行操作shim提供了API进行实际的操作即链码与peer节点之间的通信。 五、完整的合约 package mainimport (errorsfmtgithub.com/hyperledger/fabric-contract-api-go/contractapi )// SimpleContract contract for handling writing and reading from the world state type SimpleContract struct {contractapi.Contract }// Create adds a new key with value to the world state func (sc *SimpleContract) Create(ctx contractapi.TransactionContextInterface, key string, value string) error {existing, err : ctx.GetStub().GetState(key)if err ! nil {return errors.New(Unable to interact with world state)}if existing ! nil {return fmt.Errorf(Cannot create world state pair with key %s. Already exists, key)}err ctx.GetStub().PutState(key, []byte(value))if err ! nil {return errors.New(Unable to interact with world state)}return nil }// Update changes the value with key in the world state func (sc *SimpleContract) Update(ctx contractapi.TransactionContextInterface, key string, value string) error {existing, err : ctx.GetStub().GetState(key)if err ! nil {return errors.New(Unable to interact with world state)}if existing nil {return fmt.Errorf(Cannot update world state pair with key %s. Does not exist, key)}err ctx.GetStub().PutState(key, []byte(value))if err ! nil {return errors.New(Unable to interact with world state)}return nil }// Read returns the value at key in the world state func (sc *SimpleContract) Read(ctx contractapi.TransactionContextInterface, key string) (string, error) {existing, err : ctx.GetStub().GetState(key)if err ! nil {return , errors.New(Unable to interact with world state)}if existing nil {return , fmt.Errorf(Cannot read world state pair with key %s. Does not exist, key)}return string(existing), nil }六、使用合约 在同一个文件夹中创建一个main.go添加main函数。通过 contractapi.NewChaincode()方法使用先前的合约创建出来一个chaincode。 package mainimport (github.com/hyperledger/fabric-contract-api-go/contractapi )func main() {simpleContract : new(SimpleContract)cc, err : contractapi.NewChaincode(simpleContract)if err ! nil {panic(err.Error())}if err : cc.Start(); err ! nil {panic(err.Error())} }
http://www.zqtcl.cn/news/487482/

相关文章:

  • 为什么要用CGI做网站网站建设 自学 电子版 pdf下载
  • 建设网站的规则营销型网站建设jm3q
  • 深圳建网站价格防水堵漏公司做网站效果怎样
  • 网站建设东莞老铁博客外国炫酷网站网址
  • 笔杆子写作网站牡丹江信息网0453免费发布信息
  • 网站建设介绍推广用语解释seo网站推广
  • 加盟企业网站建设目的速卖通下载app
  • 阳江北京网站建设网页设计与网站建设pdf
  • 做考试平台的网站网站之前没备案
  • 网站维护要多久时间北京网站优化哪家好
  • 单页推广网站模版网站建设一个购买链接
  • 湖南门户网站设计公司免费自媒体网站
  • 美食网站建设项目预算域名解析站长工具
  • 网站如何备案工信局学网站开发首先学哪些基础
  • 什么网站利于优化河北省建设局网站材料备案
  • 自学装修设计从哪里入手沈阳百度seo
  • 做jsp网站用哪些软件下载如何利用网站赚钱
  • 注册网站域名需要什么湘潭公司做网站
  • 一个网站如何优化企业资质查询平台
  • 模板网站为什么做不了优化山西网络网站建设销售公司
  • 建设什么网站可以赚钱设计本网站是用什么做的
  • 荆州市网站建设策划师
  • 苏州中国建设银行招聘信息网站中国企业登记网
  • 网站服务器的重要性新闻软文范例大全
  • 茶叶网站建设一般的风格加大志愿服务网站建设
  • 湖州医院网站建设方案网页游戏知乎
  • 以网站建设为开题报告临海门户网站住房和城乡建设规划局
  • 河南省大型项目建设办公室网站wordpress置顶功能
  • 奉化网站建设三合一网站建设多少钱
  • wordpress文章页怎么调用网站图片wordpress菜单锚点定位