区块链核心技术——智能合约
链码(智能合约)的基本概念
智能合约是由事件驱动的、具有状态的、存储和运行在区块链上的程序
Fabric链码基本概念
Channel — 通道,子链
1、同一peer可加入不不同channel 链码的操作基于Channel进行
2、同一channel上的peer结点同步其上链码执行的结果
Endorser — 模拟执行链码
1、分离计算任务,减轻共识节点负担,增加吞吐量
2、支持endorsement policy
Orderer — 对链码执行结果共识
支持solo/kafka/FBFT不同的ordering策略
Committer — 将链码执行结果写进账本ledger
交易执行的流程
链码的开发
必须要实现的接口:
type Chaincode interface {
// 初始化工作,一般情况下仅被调⽤用一次
Init(stub ChaincodeStubInterface)
pb.Response
// 查询或更新world state,可多次被调⽤
Invoke(stub ChaincodeStubInterface)
pb.Response
}
链码示例和Demo-注册会员
链码示例和Demo-申请帮助
交易内容的区块结构
如何调试
习题:
1. 下列哪些不是fabric支持的可用链码语言?
A.Go B.python C.C++ D.C
答:BCD
2. 哪些不是基于fabric链代码的预定义接口?
A. Init B. Invoke C.Query D. Delete
答:D
3. 下列哪些属于fabric中账本数据读写方法?
A. GetState B. Putstate C. Delstate D. GetStateByRange
答:ABCD
4. 同一个链代码(名字版本一样)安装在3个peer上在通道实例化几次?
a. 1 b. 2 c. 3 d.无限
答:A
5. 同一个(名字版本一样)链代码在peer上安装几次?
a. 1 b. 2 c. 3 d.无限
答:A
(图片均来源于课件)