合约速成网

速成网  时间:2021-04-14  阅读:()
HyperledgerFabric智能合约速成教程HyperledgerFabric智能合约速成教程01Fabric智能合约整体介绍02如何使用Java语言开发智能合约03如何使用Go语言开发智能合约04开发建议第一章Fabric智能合约整体介绍01Fabric智能合约整体介绍Fabric架构01Fabric智能合约整体介绍Fabric交易流程01Fabric智能合约整体介绍1.
Fabric中智能合约又称链码(chaincode),是用计算机语言描述合约条款、交易的条件、交易的业务逻辑等,通过调用链码实现交易的自动执行和对账本数据的操作,是应用程序与底层交互的媒介.
2.
链码在一个独立于peer节点的docker容器中执行,通过grpc与背书节点进行通讯3.
一个chaincode的账本是与其他chaincode相互隔离的,不能直接访问,只有在相同网络中的chaincode获取相应的许可以后才能调用其他chaincode来访问其他账本.
4.
链码支持多种语言编写,包括golang、java、node.
js.
FabricChaincode简介01Fabric智能合约整体介绍Chaincode包括两种链码(系统链码和用户链码).
系统链码运行在节点进程中,不以单独的docker运行,包括LSCC、CSCC、QSCC.
用户链码都必须实现chaincode接口,链码包含:Init,Invoke.
其中Init方法会在chaincode接收到instantiate或者upgrade交易时被调用,使chaincode执行必要的初始化操作,包括初始化应用的状态.
Invoke方法接收和处理链下业务系统调用事务处理提案,其参数包含调用的链码程序中函数的名称和具体业务处理数据参数,即在Invoke中根据不同的方法参数调用其他分支处理响应的业务,可以简单理解为链码方法的入口.
Chaincode开发01Fabric智能合约整体介绍Chaincode开发LSCC:生命周期系统chaincode,处理生命周期相关的功能CSCC:配置系统chaincode,处理peer侧channel的配置QSCC:查询系统chaincode,提供账本查询API,比如获取区块及交易等01Fabric智能合约整体介绍Chaincode包括两种链码(系统链码和用户链码).
系统链码运行在节点进程中,不以单独的docker运行,包括LSCC、CSCC、QSCC.
用户链码都必须实现chaincode接口,链码包含:Init,Invoke两个方法.
其中Init方法会在chaincode接收到instantiate或者upgrade交易时被调用,使chaincode执行必要的初始化操作,包括初始化应用的状态.
Invoke方法接收和处理链下业务系统调用事务处理提案,其参数包含调用的链码程序中函数的名称和具体业务处理数据参数,即在Invoke中根据不同的方法参数调用其他分支处理响应的业务,可以简单理解为链码方法的入口.
Chaincode开发01Fabric智能合约整体介绍当chaincode开发完成或者需要升级时,需要进行chaincode部署.
chaincode操作贯穿chaincode的整个生命周期,包含打包(package)、安装(install)、实例化(instantiate)、更新(upgrade)、停止和启动(stopandstart).
在安装并实例化成功chaincode之后,就可以调用chaincode中的方法与账本进行交互.
在BSN中,您无需关心chaincode操作,因为我们都已经帮您做好了.
Chaincode操作第二章如何使用Java语言开发智能合约02如何使用Java语言开发智能合约构建工具Java链码支持两种构建工具gradle和maven.
两种构建工具都需要如下三个步骤添加插件:遮蔽方式的FatJar指定mainClass路径添加fabric-chaincode相关依赖02如何使用Java语言开发智能合约构建工具pom.
xml示例如图为pom的配置信息,要确保sourceDirectory和mainClass拼接起来的路径能够找到main方法所在的文件02如何使用Java语言开发智能合约构建工具build.
gradle示例如图为gradle的配置信息,要确保Main-Class路径能够找到main方法所在的文件02如何使用Java语言开发智能合约Javachaincode常用方法方法名称描述publicListgetArgs()获取链码调用请求中的调用参数publicListgetStringArgs()获取链码调用请求中的调用参数publicStringgetFunction()获取链码调用的函数名,默认第一个参数为函数名publicListgetParameters()获取链码调用请求中的调用参数publicResponseinvokeChaincode(StringchaincodeName,Listargs,Stringchannel)调用其它链码的方法publicStringgetChannelId()获取当前的通道名称publicStringgetTxId()获取交易的交易IDpublicbyte[]getState(Stringkey)获取指定键对应的值publicvoidputState(Stringkey,byte[]value)在账本中添加或者更新键值publicvoiddelState(Stringkey)在账本中删除键值02如何使用Java语言开发智能合约Javachaincode示例02如何使用Java语言开发智能合约Javachaincode示例第三章如何使用Go语言开发智能合约03如何使用Go语言开发智能合约链码支持多种语言编写,包括golang、java、node.
js每个链码程序都必须实现Chaincode接口,链码必须包含:Init,Invoke两个方法.
Init方法:链码初始化的方法,在链码实例化或者升级的时候调用一次,以便链码可以执行任何必要的初始化,包括应用程序状态的初始化.
.
Invoke方法:接收和处理链下业务系统调用事务处理提案,其参数包含调用的链码程序中函数的名称和具体业务处理数据参数,即在Invoke中根据不同的方法参数调用其他分支处理响应的业务,可以简单理解为链码方法的入口.
Chaincode开发03如何使用Go语言开发智能合约Chaincode接口参数解析状态操作交易信息链码互操作链码事件其他03如何使用Go语言开发智能合约Gochaincode常用方法方法名称描述GetFunctionAndParameters()(string,[]string)返回一个方法调用描述对象,第一个值调用的链码方法名,第二个值要传入目标方法的参数对象GetArgs()[][]byte从链码调用请求中返回参数字符串数组,等价于getStringArgs()GetStringArgs()[]string返回链码调用请求中的参数字符串数组.
GetState(keystring)([]byte,error)获取指定状态变量键的当前值.
PutState(keystring,value[]byte)error更新状态库中指定的状态变量键DelState(keystring)error从状态库中删除指定的状态变量键GetTxID()string返回当前链码调用请求的交易ID.
交易ID在通道范围内唯一标识一个交易InvokeChaincode(chaincodeNamestring,args[][]byte,channelstring)pb.
Response跨链提交链码:如果被调用的链码在同一个通道,那么它只是简单地将被调用链码的读写集添加到被调用交易中.
GetStateByRange(startKey,endKeystring)(StateQueryIteratorInterface,error)返回一个账本状态键的迭代器,可用来遍历在起始键和结束键之间的所有状态键GetQueryResult(querystring)(StateQueryIteratorInterface,error)在状态数据库上执行一个rich查询.
仅支持couchdbGetHistoryForKey(keystring)(HistoryQueryIteratorInterface,error)返回指定状态键的值历史记录SetEvent(namestring,payload[]byte)error注册事件03如何使用Go语言开发智能合约BsnBaseCC代码详解03如何使用Go语言开发智能合约BsnBaseCC代码详解03如何使用Go语言开发智能合约BsnBaseCC代码详解03如何使用Go语言开发智能合约BsnBaseCC代码详解03如何使用Go语言开发智能合约BsnBaseCC代码详解03如何使用Go语言开发智能合约BsnBaseCC代码详解第四章开发建议04开发建议链码编程禁忌123不稳定的外部依赖随机函数系统时间04开发建议有几点链码开发过程中的规范需要提醒各位一下123校验所有链码方法参数信息不要在Init方法中大量初始化数据需要使用govendor管理引用第三方包4发布服务时,链码包打包时进入项目根目录进行打包,格式为.
zip5发布服务时,添加链码包的链码名称要与项目名称相同04开发建议在链码开发过程中有许多需要注意的地方12345关于key的定义关于根据key值模糊查询关于浮点数计算关于链码索引关于跨链调用(InvokeChaincode)小结Fabric架构Fabric交易流程FabricChaincode简介Chaincode生命周期使用Java语言开发链码使用Go语言开发链码链码开发禁忌链码开发建议谢谢大家www.
bsnbase.
com区块链服务网络BSN公众号

racknerd新上架“洛杉矶”VPS$29/年,3.8G内存/3核/58gSSD/5T流量

racknerd发表了2021年美国独立日的促销费用便宜的vps,两种便宜的美国vps位于洛杉矶multacom室,访问了1Gbps的带宽,采用了solusvm管理,硬盘是SSDraid10...近两年来,racknerd的声誉不断积累,服务器的稳定性和售后服务。官方网站:https://www.racknerd.com多种加密数字货币、信用卡、PayPal、支付宝、银联、webmoney,可以付...

CYUN专注海外精品服务器资源 国庆钜惠 最低5折起 限量促销

国庆钜惠 最低5折起 限量促销CYUN专注海外精品服务器资源,主营香港CN2 GIA、美国CERA、美国高防服务器资源,实体公司,ISP/IDC资质齐全,客服配备齐全。本次针对国庆推出非常给力的促销活动,旗下所有平台同享,新老客户同享,限时限量,售完截止。活动截止时间:2021年10月9日官网地址:www.cyun.net参与机型:香港CN2 GIA云服务器、香港双程CN2云服...

BuyVM新设立的迈阿密机房速度怎么样?简单的测评速度性能

BuyVM商家算是一家比较老牌的海外主机商,公司设立在加拿大,曾经是低价便宜VPS主机的代表,目前为止有提供纽约、拉斯维加斯、卢森堡机房,以及新增加的美国迈阿密机房。如果我们有需要选择BuyVM商家的机器需要注意的是注册信息的时候一定要规范,否则很容易出现欺诈订单,甚至你开通后都有可能被禁止账户,也是这个原因,曾经被很多人吐槽的。这里我们简单的对于BuyVM商家新增加的迈阿密机房进行简单的测评。如...

速成网为你推荐
SetSysIdroutecentos6.5如何安装linux centos6.5www.topit.mehttp://www.topit.me/ 中自己上传的照片如何删除ipad代理想买个ipad,3000至4000元左右有什么好的刚刚网刚刚网上刷单被骗了5万多怎么办啊 报警有用吗pintang目前世界上最稀有、最珍贵的钱币是什么?123456hd有很多App后面都有hd是什么意思邮件管理系统什么邮箱管理软件好用?站长统计【求站长统计工具CNZZ的详细使用方法】seo基础教程SEO小白如何自学SEO入门到精通
免费vps 购买域名和空间 新通用顶级域名 流媒体服务器 日志分析软件 网站实时监控 网站被封 好看qq空间 linux空间 国外免费全能空间 七夕快乐英文 网站卫士 美国在线代理服务器 空间技术网 爱奇艺会员免费试用 上海联通宽带测速 linode支付宝 英国伦敦 免费asp空间 国外的代理服务器 更多