Hyperledger Fabric Chaincode 开发指的什么?Chaincode是什么呢?

区块链高级技术专家群内部讲座系列活动 。群内由区块链相关团队或组织的技术专家、学者和负责人等组成,目前仅限邀请加入 。分享内容会在 TechFirst 微信公众号进行首发,欢迎关注 。下面小编给大家介绍一下 。
嘉宾介绍
李超,现就职于 IBM 中国系统开发部门,一直从事基于主机系统将认知计算与关系型数据库进行结合的相关研究工作 。近一年来,一直在跟踪学习 Blockchain相关技术,尤其是 Hyperledger 开源项目,具有丰富的 chaincode 开发经验 。
讲座内容
Page 1

Hyperledger Fabric Chaincode 开发指的什么?Chaincode是什么呢?


Hello,大家好 。非常荣幸能被保华大大邀请来到这里跟大家分享我个人对Hyperledger Fabric 1.0 之上 Chaincode 开发的一些理解 。
简单自我介绍一下,我叫李超,是 IBM 软件开发部门的一名研发工程师 。之所以接触 Blockchain 技术,一开始完全是由于部门boss的推动,做了一些学习和demo的工作 。之后,看到这项技术的火爆,尤其是Hyperledger开源项目的极速发展,个人也就一直在坚持跟踪学习这项技术的最新进展 。
这里有我的微信二维码,非常欢迎添加好友多多交流 。
好了,进入正题 。我今天分享的内容的题目是Fabric1.0 Chaincode介绍 。除了介绍Chaincode程序编写、调试的基本方法之外,我还加入了一些有关Chaincode原理的内容,希望能够帮助大家更好地理解Chaincode,进而编写出更加高效的Chaincode程序以及更加快速地调试自己的Chaincode程序 。
Page 2
Hyperledger Fabric Chaincode 开发指的什么?Chaincode是什么呢?


我把内容分成了三个部分 。内容包括:在fabric 中Chaincode是什么、如何编写Chaincode程序以及如何调试Chaincode程序 。中间会穿插与Chaincode相关的重要概念介绍,以及Chaincode运行原理的介绍 。
Page 3
Hyperledger Fabric Chaincode 开发指的什么?Chaincode是什么呢?


首先是第一部分内容:在fabric中,Chaincode是什么呢?我觉得可以从以下几个方面来理解 。
第一,编写Chaincode程序实际上就是要编写一个类,并且这个类要实现fabric预先定义的一个接口 。关于这个接口后面第二部分会有更详细的介绍 。
第二,如何运行Chaincode程序呢?我们知道blockchain系统是一个网络,由若干结点构成 。Fabric区块链系统也不例外,而要运行Chaincode程序,就要把它首先部署到fabric系统的结点上 。也就是说,Chaincode程序是依赖于fabric系统结点的 。
第三点和第四点可以放在一块来看 。对于一个区块链系统来说,显然,区块链其中是最重要的组成部分 。右边这个图展示了最基本的区块链结构:首先区块链是由一个一个的区块串接而成,每个区块又是由若干的Transaction构成 。所以,可以说Transaction是一个区块链系统中最基本的组成要素 。而在Fabric中,Chaincode的运行是生成Transaction的唯一来源,也因此Chaincode是外界与Fabric区块链交互的唯一渠道 。由此可见chaincode的重要性 。
最后一点讲的是Chaincode与智能合约的关系 。相信大家都听说智能合约的概念,简单来讲智能合约就是用程序实现合约的内容,并且这个程序是事件驱动、有状态的 。智能合约是早就出现的概念,早于区块链提出 。但是,区块链的出现为智能合约的实现提供了一个非常理想的环境 。而在Fabric中,Chaincode就是开发者实现智能合约的方式 。
Page 4
Hyperledger Fabric Chaincode 开发指的什么?Chaincode是什么呢?


这一页是在fabric1.0中与Chaincode相关的几个比较重要的概念 。
Channel是1.0增加的一个比较大的feature 。字面意思,通道 。流过通道的数据对于加入该通道的结点是共享的 。因此,对于加入同一通道的结点来说,就相当于构建了一条子链 。这条子链上的内容对于通道外的结点是不可知的 。并且,同一个peer结点可以加入不同channel 。而Chaincode的执行是基于channel进行的,在一条channel上chaincode执行的结果会被该channel上所有的结点同步到本地Ledger中 。

推荐阅读