Fabric系列 - 链码 ChainCode
链码(chaincode)是 Hyperledger Fabric 提供的智能合约,是上层应用与底层区块链平台交互的媒介。现阶段,Fabric 提供 Go、Java、Node.js 等语言编写的链码
Fabric 智能合约链码开发的基础,一句话总结起来就是:一个基类,两个查询,一个写入。
所有的链码都实现两个接口,init 和 invoke。
- Init(stubshim.ChaincodeStubInterface) :init用于合约初始化及升级初始化动作;
- Invoke(stubshim.ChaincodeStubInterface):Invoke是peer调用链码的入口函数;
init 接口
用于初始化合约,在整个链码的生命周期里,该接口仅仅执行一次。
invoke 接口
是编写业务逻辑的唯一入口,虽然只有一个入口,但是可以根据参数传递的不同自由区分不同业务逻辑,灵活性很高。比如应用开发者规定 Invoke 接口的第一个参数是合约方法名,剩余的 Invoke 参数列表是传递给该方法的参数,那么就可以在 Invoke 接口方法体中根据方法名的不同分流不同业务了。
编写链码还有一个非常重要的原则:不要出现任何本地化和随机逻辑。
fabric默认的状态数据库是个k-v库,常用到的方法
- 两个查询
- getState(k)获取单独的key对应的value值。
- rangeQueryState(k1,k2),获取k1开始,k2结束的所有k-v对象, 返回的是个Map<String,String>对象, 其中k1,k2按字典序排序
- 一个写入
- putState(k,v), 写入数据,此处要注意下,putState数据并不会马上落到账本上, 要等到第二段交易提交共识达成后,数据才会落地。
- 往期精彩回顾:
- 区块链知识系列
- 密码学系列
- 共识系列
- 公链调研系列
- 以太坊系列
- EOS系列
- 智能合约系列
- Token系列
Fabric系列 - 链码 ChainCode相关推荐
- Fabric 链码Chaincode 的安装、初始化、调用、升级
Fabric 链码Chaincode 的安装.初始化.调用.升级 Fabric chaincode 上一篇文章,我们启动了一个Fabric网络,这篇文章来看看在Fabric网络进行应用的开发. 上一篇 ...
- Hyperledger Fabric 1.2 --- Chaincode Operator 解读和测试(一)
前言 本文主要目的是用于整理Hyperledger Fabric中关于chaincode 管理和操作的内容,作者以release-1.2为范本进行讲解. 主要参考链接: https://hyperl ...
- Fabric系列 - 多通道技术(Muti-channel)
可在节点,通道和联盟级别上配置. 一个Fabric网络中能够运行多个账本,每个通道间的逻辑相互隔离不受影响,如下图所示,每种颜色的线条代表一个逻辑上的通道,每个Peer节点可以加入不同的通道,每个通道 ...
- Fabric系列 - 锚节点
锚节点 锚节点是定义在一个已经加入到通道的组织的节点.该节点主要用于节点的发现. 在一个通道中,锚节点可以被这个通道的其他任何节点发现和通信.因此,每一个加入到管通内的组织都至少有一个锚节点,一个组织 ...
- Fabric系列 - 国密改造
Hyperledger Fabric 国密改造项目介绍 有关bccsp的改造方案的RFC文档 Fabric国密改造项目由Hyperlegder中国工作组(TWGC)发起执行,旨在构建支持国密算法且密码 ...
- fabric contract链码案例
fabric提供了合约的操作接口,这些接口从原来的源代码里独立出来了,变成fabric-contract-api-go,这里以fabric v1.4.8 + fabric-contract-a ...
- Fabric 系统链码
什么是系统链码 fabric 自 1.0 版本开始,将链码分为系统链码和普通链码两种.普通链码(智能合约)用于实现业务逻辑,而系统链码则是用于系统管理,例如 lscc.qscc等. 与普通链码需要独立 ...
- Hyperledger Fabric 2.0 chaincode lifecycle
Chaincode Lifecycle 环境准备参见 Fabric 2.0 debug 环境准备 脚本部分 2.0 新增 _lifecycle 系统 chaincode 管理 Chaincode 生命 ...
- Fabric安装链码出现的问题01
在安装链码中出现了: Error: chaincode install failed with status: 500 - failed to invoke backing implementatio ...
最新文章
- 2020年人工神经网络第二次作业-参考答案第一题
- Nuxt.js asyncData 多请求
- 保姆级教学:缓存穿透、缓存击穿和缓存雪崩!
- C语言字符串倒排,C语言兑现简单的倒排文件索引
- python笔记之单行json数据组成的json文件按行解析:read_json()
- C++_类和对象_对象特性_空指针访问成员函数_用法和问题解决---C++语言工作笔记050
- 最大值、数据排序、九九乘法表、杨辉三角
- 百度如流首发AI智能办公标准 ,BATH持续发力企业办公
- Modem Device on High Definition Audio Bus
- 【最强大脑】天才数学家陶哲轩亲授25条职业建议
- Tue Feb 23 2021 00:00:00 GMT+0800 (中国标准时间)时间格式转换
- UTM(Urchin Tracking Module)简介
- 中央农村工作会议释放重要信号,AI 技术助力农业的十种路径,未来可期
- 【动态规划 floyd】SPOJ ACPC13
- 《易经》全文翻译(值得收藏)
- 【web安全学习篇2】kali基本命令
- 使用FP-growth算法来高效发现频繁项集
- Oracle 培训笔记
- 音质好的linux主机,5千音质好的HIFI播放器有哪些?5款性价比“神砖”简评
- pagehelper原理 分页
热门文章
- 精雕软件怎么把图片转成灰度图_怎么把普通的照片变成浮雕用的灰度图 精雕图 灰度图 浮雕图之间怎么能联系起来使用...
- 硬盘格式化了数据还能恢复吗?
- 南京航空航天大学民航管理系统课程设计
- STM32入门之文件结构
- Shell脚本入门 03:字符串与数组
- 他们研制出了世界上最强的电池 | 2019 诺贝尔化学奖解读
- freemarker ftl java_通过springframework的mvc返回freemarker的ftl文件ModelAndView模板内容代码示例...
- google earth engine(GEE)如何在看某一点的经纬度、波段信息
- 职高计算机word教学视频,浅谈中职《计算机应用基础》Word教学方法
- 【公告】新博客、新地址,欢迎交换友链