链码(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相关推荐

  1. Fabric 链码Chaincode 的安装、初始化、调用、升级

    Fabric 链码Chaincode 的安装.初始化.调用.升级 Fabric chaincode 上一篇文章,我们启动了一个Fabric网络,这篇文章来看看在Fabric网络进行应用的开发. 上一篇 ...

  2. Hyperledger Fabric 1.2 --- Chaincode Operator 解读和测试(一)

    前言 本文主要目的是用于整理Hyperledger  Fabric中关于chaincode 管理和操作的内容,作者以release-1.2为范本进行讲解. 主要参考链接: https://hyperl ...

  3. Fabric系列 - 多通道技术(Muti-channel)

    可在节点,通道和联盟级别上配置. 一个Fabric网络中能够运行多个账本,每个通道间的逻辑相互隔离不受影响,如下图所示,每种颜色的线条代表一个逻辑上的通道,每个Peer节点可以加入不同的通道,每个通道 ...

  4. Fabric系列 - 锚节点

    锚节点 锚节点是定义在一个已经加入到通道的组织的节点.该节点主要用于节点的发现. 在一个通道中,锚节点可以被这个通道的其他任何节点发现和通信.因此,每一个加入到管通内的组织都至少有一个锚节点,一个组织 ...

  5. Fabric系列 - 国密改造

    Hyperledger Fabric 国密改造项目介绍 有关bccsp的改造方案的RFC文档 Fabric国密改造项目由Hyperlegder中国工作组(TWGC)发起执行,旨在构建支持国密算法且密码 ...

  6. fabric contract链码案例

        fabric提供了合约的操作接口,这些接口从原来的源代码里独立出来了,变成fabric-contract-api-go,这里以fabric v1.4.8 + fabric-contract-a ...

  7. Fabric 系统链码

    什么是系统链码 fabric 自 1.0 版本开始,将链码分为系统链码和普通链码两种.普通链码(智能合约)用于实现业务逻辑,而系统链码则是用于系统管理,例如 lscc.qscc等. 与普通链码需要独立 ...

  8. Hyperledger Fabric 2.0 chaincode lifecycle

    Chaincode Lifecycle 环境准备参见 Fabric 2.0 debug 环境准备 脚本部分 2.0 新增 _lifecycle 系统 chaincode 管理 Chaincode 生命 ...

  9. Fabric安装链码出现的问题01

    在安装链码中出现了: Error: chaincode install failed with status: 500 - failed to invoke backing implementatio ...

最新文章

  1. 2020年人工神经网络第二次作业-参考答案第一题
  2. Nuxt.js asyncData 多请求
  3. 保姆级教学:缓存穿透、缓存击穿和缓存雪崩!
  4. C语言字符串倒排,C语言兑现简单的倒排文件索引
  5. python笔记之单行json数据组成的json文件按行解析:read_json()
  6. C++_类和对象_对象特性_空指针访问成员函数_用法和问题解决---C++语言工作笔记050
  7. 最大值、数据排序、九九乘法表、杨辉三角
  8. 百度如流首发AI智能办公标准 ,BATH持续发力企业办公
  9. Modem Device on High Definition Audio Bus
  10. 【最强大脑】天才数学家陶哲轩亲授25条职业建议
  11. Tue Feb 23 2021 00:00:00 GMT+0800 (中国标准时间)时间格式转换
  12. UTM(Urchin Tracking Module)简介
  13. 中央农村工作会议释放重要信号,AI 技术助力农业的十种路径,未来可期
  14. 【动态规划 floyd】SPOJ ACPC13
  15. 《易经》全文翻译(值得收藏)
  16. 【web安全学习篇2】kali基本命令
  17. 使用FP-growth算法来高效发现频繁项集
  18. Oracle 培训笔记
  19. 音质好的linux主机,5千音质好的HIFI播放器有哪些?5款性价比“神砖”简评
  20. pagehelper原理 分页

热门文章

  1. 精雕软件怎么把图片转成灰度图_怎么把普通的照片变成浮雕用的灰度图 精雕图 灰度图 浮雕图之间怎么能联系起来使用...
  2. 硬盘格式化了数据还能恢复吗?
  3. 南京航空航天大学民航管理系统课程设计
  4. STM32入门之文件结构
  5. Shell脚本入门 03:字符串与数组
  6. 他们研制出了世界上最强的电池 | 2019 诺贝尔化学奖解读
  7. freemarker ftl java_通过springframework的mvc返回freemarker的ftl文件ModelAndView模板内容代码示例...
  8. google earth engine(GEE)如何在看某一点的经纬度、波段信息
  9. 职高计算机word教学视频,浅谈中职《计算机应用基础》Word教学方法
  10. 【公告】新博客、新地址,欢迎交换友链