Fabric 2.0 之系统链码

  在Hyperledger Fabric中,链码分为两种类型:系统链码和普通链码。其中系统链码是系统内置的链码,用来完成一些系统功能等;普通链码是实现应用业务逻辑的链码。

系统链码vs普通链码

  系统链码和普通链码的几个不同点,如下表所示:

对比项 系统链码 普通链码
链码源码 无main函数 有main函数
运行空间 背书节点进程 Docker
调用方式 网络+进程内部 网络
启动参数 内置 动态输入
通信方式 Golang的通道机制 网络
数据存取 Golang的通道+本地文件 网络
升级方式 和背书节点一起升级 单独升级
背书策略

2.0版本中的系统链码

_lifecycle

  在所有 Peer 节点上运行,它负责管理节点上的链码安装、批准组织的链码定义、将链码定义提交到通道上。

生命周期系统链码(LSCC)

  负责为1.x版本的 Fabric 管理链码生命周期。该版本的生命周期要求在通道上实例化或升级链码

配置系统链码(CSCC)

  在所有 Peer 节点上运行,以处理通道配置的变化,比如策略更新。
  通过CSCC可以查询以下几个接口的信息:

查询接口 查询内容 说明
GetConfigBlock 查询链的配置区块 每次有配置更新的时候会更新记账节点本地维护的最新配置区块,配置区块是从本地缓存里获取的
GetChannels 获取加入链列表 记账节点加入的链列表也是从本地缓存获取的

查询系统链码(QSCC)

  在所有 Peer 节点上运行,以提供账本 API(应用程序编码接口),其中包括区块查询、交易查询等。

查询接口 查询内容 说明
GetTransactionByID 根据交易号获取交易 从索引数据库获取
GetBlockByNumber 根据区块号获取区块 从索引数据库获取
GetBlockByHash 根据区块哈希获取区块 从索引数据库获取
GetBlockByTxID 根据交易号获取区块 从索引数据库获取
GetChainInfo 根据通道名称获取最新的区块链信息 从本地缓存中获取

  从索引数据库查询通用的过程是根据查询项从索引数据库查询出FLP(File Location Pointer),再根据FLP在区块中定位获取所需内容。

背书系统链码(ESCC)

  在背书节点上运行,对交易结果进行结构转换和签名背书

验证系统链码(VSCC)

  主要功能是记账前对区块和交易进行验证,包括检查背书策略和读写集版本。

参考资料:1. Smart Contracts and Chaincode
     2.《深度探索区块链-Hyperledger技术与应用》

猜你喜欢

转载自blog.csdn.net/weixin_43839871/article/details/106716110