1. 用户链码
- 由应用开发人员编写(Go/Java/JS语言)
- 基于区块链分布式账本的状态及处理逻辑运行在链码容器中, 通过Fabric提供的接口与账本平台进行交互.
2. 系统链码(ESCC)
- 负责Fabric节点自身的处理逻辑, 包括系统配置、背书、校验等工作。
- 系统链码仅支持Go语言, 在Peer节点启动时会自动完成注册和部署。
2.1 系统链码分为5种类型
- 配置系统链码(CSCC) Configuration System Chaincode 负责账本和链的配置管理
- 背书管理系统链码(ESCC) Endorsement System Chaincode负责背书(签名)过程, 并可以支持对背书策略进行管理,对传入的链码提案的模拟运行结果进行签名, 之后创建响应消息返回给客户端
- 生命周期系统链码(LSCC) Lifecycle System Chaincode负责对用户链码的生命周期进行管理, 链码生命周期包括安装、部署、升级、权限管理、获取信息等环节
- 查询系统链码(QSCC)QSCC: Query System Chaincode负责提供账本和链的信息查询功能
- 验证系统链码(VSCC)VSCC: Verification System Chaincode交易提交前根据背书策略进行检查验证过程:
step1. 首先解析出交易结构, 并对交易结构格式进行校验
step2. 检查交易的读集合中元素版本跟本地账本中版本一致
step3. 检查带有合法的背书信息(主要是检查签名信息)
step4. 通过则返回正确, 否则返回错误消息