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公众号
- 合约速成网相关文档
- "东方文体资源配送服务菜单--A文学艺术1",,,,,,
- "南京大学金陵学院教材订购计划表"
- 利比里亚速成网
- 汉语速成网
- "网上作业课程(标黄课程为论坛发帖课程)",,,,,
- 语音速成网
如今我们无论线上还是线下选择商品的时候是不是习惯问问是不是有优惠活动,如果有的话会加速购买欲望。同样的,如果我们有准备选择Vultr商家云服务器的时候,也会问问是不是有Vultr优惠码或者优惠券这类。确实,目前Vultr商家有一些时候会有针对新注册用户赠送一定的优惠券活动。那就定期抽点时间在这篇文章中专门整理最新可用Vultr优惠码和商家促销活动。不过需要令我们老用户失望的,至少近五年我们看到Vu...
已经有一段时间没有听到Gigsgigscloud服务商的信息,这不今天看到商家有新增一款国际版线路的美国VPS主机,年付也是比较便宜的只需要26美元。线路上是接入Cogentco、NTT、AN2YIX以及其他亚洲Peering。这款方案的VPS主机默认的配置是1Gbps带宽,比较神奇的需要等待手工人工开通激活,不是立即开通的。我们看看这款服务器在哪里选择看到套餐。内存CPUSSD流量价格购买地址1...
pacificrack又追加了3款特价便宜vps搞促销,而且是直接7折优惠(一次性),低至年付7.2美元。这是本月第3波便宜vps了。熟悉pacificrack的知道机房是QN的洛杉矶,接入1Gbps带宽,KVM虚拟,纯SSD RAID10,自带一个IPv4。官方网站:https://pacificrack.com支持PayPal、支付宝等方式付款7折秒杀优惠码:R3UWUYF01T内存CPUSS...
速成网为你推荐
支持ipad安顺网易yeahflashfxp用Flashfxp上传网站的具体步骤重庆网络公司一九互联网络公司做一个网站大概需要多少钱重庆电信断网为什么电信宽带突然断网了支付宝账户是什么支付宝帐号,指的是什么帐号 是网营密码吗支付宝注册网站支付宝申请流程是怎么样的??360防火墙在哪里电脑或电脑360有联网防火墙吗,在哪里设置上海市浦东新区人民法院民事判决书(2009)浦民三(知)初字第206号资费标准电信4G套餐?
m3型虚拟主机 万网域名 大庆服务器租用 免费com域名申请 拜登买域名批特朗普 winscp 美国主机评测 godaddy主机 美国主机推荐 免费ddos防火墙 一元域名 北京双线 699美元 爱奇艺vip免费试用7天 微软服务器操作系统 备案空间 smtp服务器地址 永久免费空间 华为k3 徐州电信 更多