Fabric--链码的概念与使用

本文详细介绍了Fabric链码的概念,包括用户链码和系统链码,如CSCC、ESCC、LSCC、QSCC和VSCC。链码的生命周期包括安装、实例化、升级和查询等操作。通过实例展示了如何在开发模式下构建、运行和测试链码,以及如何打包、签名和升级链码。
摘要由CSDN通过智能技术生成

链码的概念与使用

概念:

Chaincode: 链上代码, 简称链码, 一般是指用户编写的应用代码

链码被部署在Fabric网络节点上,

​ Peer 节点

​ – 背书节点

​ – commit节点

​ – Leader节点

​ – 锚节点

运行在隔离沙盒(当前为Docker容器)中,

并通过gRPC协议与相应的Peer节点进行交互, 以操作分布式账本中的数据

protobuf

分类

链码一般分为:

  • 用户链码
  • 系统链码

用户链码

由应用开发人员使用Go(Java/JS)语言编写基于区块链分布式账本的状态及处理逻辑

运行在链码容器中, 通过Fabric提供的接口与账本平台进行交互

系统链码

负责Fabric节点自身的处理逻辑, 包括系统配置、背书、校验等工作

系统链码仅支持Go语言, 在Peer节点启动时会自动完成注册和部署

系统链码共有五种类型:

配置系统链码(CSCC)

CSCC: Configuration System Chaincode

负责账本和链的配置管理

背书管理系统链码(ESCC)

ESCC: Endorsement System Chaincode

负责背书(签名)过程, 并可以支持对背书策略进行管理

对传入的链码提案的模拟运行结果进行签名, 之后创建响应消息返回给客户端

生命周期系统链码(LSCC)

LSCC: Lifecycle System Chaincode

负责对用户链码的生命周期进行管理

链码生命周期包括安装、部署、升级、权限管理、获取信息等环节.

查询系统链码(QSCC)

QSCC: Query System Chaincode

负责提供账本和链的信息查询功能

验证系统链码(VSCC)

VSCC: Verification System Chaincode

交易提交前根据背书策略进行检查

验证过程:

  1. 首先解析出交易结构, 并对交易结构格式进行校验
  2. 检查交易的读集合中元素版本跟本地账本中版本一致
  3. 检查带有合法的背书信息(主要是检查签名信息)
  4. 通过则返回正确, 否则返回错误消息

链码生命周期

管理Chaincode的生命周期四个命令:

安装, 实例化, 升级, 打包, 签名

packageinstallinstantiateupgrade

未来还会支持stopstart命令, 来禁用和重新启用链代码

链代码成功安装和实例化后,链代码处于活动状态(正在运行),可通过invoke命令调用处理事务

链代码可以在安装后随时升级

安装链码

install命令将链码的源码和环境等内容封装为一个链码安装打包文件(Chaincode Install Package, CIP), 并传输到背书节点.

背书节点解析后一般会保存在$CORE_PEER_FILESYSTEMPATH/chaincodes目录下

安装链码只需要与Peer交互

进入到sacc目录

$ cd ~/hyfa/fabric-samples/chaincode/sacc/

构建Chaincode

$ go get -u --tags nopkcs11 github.com/hyperledger/fabric/core/chaincode/shim

$ go build --tags nopkcs11
命令解释

go get: 根据要求和实际情况从互联网上下载或更新指定的代码包及其依赖包,并对它们进行编译和安装

-u: 利用网络来更新已有代码包及其依赖包。默认情况下,该命令只会从网络上下载本地不存在的代码包,而不会更新已有的代码包

go build: 加上可编译的go源文件可以得到一个可执行文件

如果在执行 go build --tags nopkcsll

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值