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",,,,,,
- "南京大学金陵学院教材订购计划表"
- 利比里亚速成网
- 汉语速成网
- "网上作业课程(标黄课程为论坛发帖课程)",,,,,
- 语音速成网
香港ceranetworks提速啦是成立于2012年的十分老牌的一个商家这次给大家评测的是 香港ceranetworks 8核16G 100M 这款产品 提速啦老板真的是豪气每次都给高配我测试 不像别的商家每次就给1核1G,废话不多说开始跑脚本。香港ceranetworks 2核2G 50G硬盘20M 69元/月30M 99元/月50M 219元/月100M 519元/月香港ceranetwork...
无忧云怎么样?无忧云服务器好不好?无忧云值不值得购买?无忧云,无忧云是一家成立于2017年的老牌商家旗下的服务器销售品牌,现由深圳市云上无忧网络科技有限公司运营,是正规持证IDC/ISP/IRCS商家,自营有国内雅安高防、洛阳BGP企业线路、香港CN2线路、国外服务器产品等,非常适合需要稳定的线路的用户,如游戏、企业建站业务需求和各种负载较高的项目,同时还有自营的高性能、高配置的BGP线路高防物理...
特网云为您提供高速、稳定、安全、弹性的云计算服务计算、存储、监控、安全,完善的云产品满足您的一切所需,深耕云计算领域10余年;我们拥有前沿的核心技术,始终致力于为政府机构、企业组织和个人开发者提供稳定、安全、可靠、高性价比的云计算产品与服务。官方网站:https://www.56dr.com/ 10年老品牌 值得信赖 有需要的请联系======================特网云推出多IP云主机...
速成网为你推荐
支持ipad现有新的ios更新可用请从ios14be苹果xr可不可以更新ios14filezillaserver如何使用filezilla serversqlserver2000挂起SQL server2000 安装为什么老是提示挂起?重庆400年老树穿楼生长重庆的树为什么都长胡须?客服电话赶集网客服电话是多少即时通EC营销即时通是什么?做什么的?欢迎光临本店宾馆欢迎语都有哪些? 越多越专业越好开源网店开源网店iWebMall中会员管理包括哪些只要内容呢?powerbydedecms如何去掉织梦网站底部的powered by dedecms方法
ubuntu更新源 轻量 100m空间 129邮箱 可外链网盘 流量计费 福建铁通 hdd 服务器监测 爱奇艺会员免费试用 linux使用教程 后门 大化网 认证机构 服务器是什么 美国达拉斯 一句话木马 海尔t68g 瓦工工资 魔兽世界服务器维护 更多