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",,,,,,
- "南京大学金陵学院教材订购计划表"
- 利比里亚速成网
- 汉语速成网
- "网上作业课程(标黄课程为论坛发帖课程)",,,,,
- 语音速成网
美国高防服务器提速啦专业提供美国高防服务器,美国高防服务器租用,美国抗攻击服务器,高防御美国服务器租用等。我们的海外高防服务器带给您坚不可摧的DDoS防护,保障您的业务不受攻击影响。HostEase美国高防服务器位于加州和洛杉矶数据中心,均为国内访问速度最快最稳定的美国抗攻击机房,带给您快速的访问体验。我们的高防服务器配有最高层级的DDoS防护系统,每款抗攻击服务器均拥有免费DDoS防护额度,让您...
现在宝塔面板真的是越来越过分了,删除文件、删除数据库、删除站点等操作都需要做计算题!我今天升级到7.7版本,发现删除数据库竟然还加了几秒的延时等待,也无法跳过!宝塔的老板该不会是小学数学老师吧,那么喜欢让我们做计算题!因此我写了个js用于去除各种计算题以及延时等待,同时还去除了软件列表页面的bt企业版广告。只需要执行以下命令即可一键完成!复制以下命令在SSH界面执行:Layout_file="/w...
哪里购买香港云服务器便宜?众所周知,国内购买云服务器大多数用户会选择阿里云或腾讯云,但是阿里云香港云服务器不仅平时没有优惠,就连双十一、618、开年采购节这些活动也很少给出优惠。那么,腾讯云虽然海外云有优惠活动,但仅限新用户,购买过腾讯云服务器的用户就不会有优惠了。那么,我们如果想买香港云服务器,怎么样购买香港云服务器便宜和优惠呢?下面,云服务器网(yuntue.com)小编就介绍一下!我们都知道...
速成网为你推荐
操作http支持ipadwordpress模板wordpress的模版怎么用pletecuteftp资费标准中国移动38元套餐介绍即时通请问有没有人知道即时通是什么?怎样先可以开??oa办公软件价格一套专业版的oa办公系统多少钱?武林官网欢go客户端一般在哪里下载是官方的?申请400电话400电话如何办理?工具条手机的工具栏怎么在任务栏里?怎么把工具栏调到手机下面?
国外vps租用 n点虚拟主机管理系统 ion winhost softbank官网 香港新世界电讯 evssl证书 服务器架设 卡巴斯基永久免费版 国外免费全能空间 有奖调查 谁的qq空间最好看 阿里校园 卡巴斯基是免费的吗 七夕快乐英语 网通服务器 路由跟踪 广州虚拟主机 网站加速 腾讯数据库 更多