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",,,,,,
- "南京大学金陵学院教材订购计划表"
- 利比里亚速成网
- 汉语速成网
- "网上作业课程(标黄课程为论坛发帖课程)",,,,,
- 语音速成网
hostslim美国独立日活动正在进行中,针对一款大硬盘荷兰专用服务器:双E5-2620v2/4x 1TB SATA硬盘,活动价60美元月。HostSlim荷兰服务器允许大人内容,不过只支持电汇、信用卡和比特币付款,商家支持7天内退款保证,有需要欧洲服务器的可以入手试试,记得注册的时候选择中国,这样不用交20%的税。hostslim怎么样?HostSlim是一家成立于2008年的荷兰托管服务器商,...
搬瓦工vps(bandwagonhost)现在面向中国大陆有3条顶级线路:美国 cn2 gia,香港 cn2 gia,日本软银(softbank)。详细带宽是:美国cn2 gia、日本软银,都是2.5Gbps~10Gbps带宽,香港 cn2 gia为1Gbps带宽,搬瓦工是目前为止,全球所有提供这三种带宽的VPS(云服务器)商家里面带宽最大的,成本最高的,没有第二家了! 官方网站:https...
hypervmart怎么样?hypervmart是一家成立了很多年的英国主机商家,上一次分享他家还是在2年前,商家销售虚拟主机、独立服务器和VPS,VPS采用Hyper-V虚拟架构,这一点从他家的域名上也可以看出来。目前商家针对VPS有一个75折的优惠,而且VPS显示的地区为加拿大,但是商家提供的测速地址为荷兰和英国,他家的优势就是给到G口不限流量,硬盘为NVMe固态硬盘,这个配置用来跑跑数据非常...
速成网为你推荐
sns平台SNS分类及代表性网站有哪些phpwindPHPWIND怎么和PHPWIND整合centos6.5centos 6.5服务器基本配置有哪些企业ssl证书ssl证书多少钱一年?filezillaserver谁用过FileZilla_Server啊,请教全国企业信息查询想查一个企业的信息,哪个网站提供信息查询?美要求解锁iPhone怎么用爱思手机助手解锁苹果手机?结点cuteftp宜人贷官网宜人贷是不是骗人的刚刚网女友刚开始用震动棒很舒服身上抽搐时,她说疼不让用了,是真的疼还是太刺激她受不了?
深圳网站空间 河北服务器租用 堪萨斯服务器 韩国空间 阿里云代金券 debian6 华为4核 777te cpanel空间 qingyun 域名和空间 电信虚拟主机 搜索引擎提交入口 申请网页 789电视剧 全能空间 114dns 聚惠网 新网dns 西部数码主机 更多