Golang开发Hyperledger Fabric 2.x链码

Coding Alan 4年前 (2021-05-12) 2911次浏览 0个评论 扫描二维码

安装

脚本基于 Ubuntu,本文中使用的是 Ubuntu 18.04。

配套代码地址:https://github.com/alanhou/blockchain/tree/main/fabric-chaincode-development

考虑国情,有时 github 的连接并不稳定,比如在出现Failed to connect to raw.githubusercontent.com port 443: Connection refused时在/etc/hosts中添加类似如下内容(相应的 ip 可通过https://www.ipaddress.com/等地址查询):

环境安装及 Fabric 安装

基础概念

分布式账本:追踪资产的状态

    • 真实世界事物的数据化表现(建模)

交易:管理资产状态

  • 业务逻辑调用
  • 链码用于实现业务逻辑
  • 在账本中进行记录

链码(chaincode):暴露一个或多个函数,Fabric 中的智能合约

  • 应用以交易的形式执行这些函数
  • 有些暴露的函数仅用于读取状态(无法写入)

客户端主要有两大api:invoke 和 query,区别在于前者会作为交易记入账本

链码生命周期

  1. 由组织Admin 在 peer 节点上独立安装
    • peer chaincode install
    • 读取 chaincode
    • 将链码发到运行中的 peer 节点
    • 验证、写入

    Golang开发Hyperledger Fabric 2.x链码

  2. 通过交易在通道进行一次实例化
    1. Peer 节点链码实例化
    2. Peer(Endorser)读取
    3. 初始化链码
    4. 请求事务的广播
    5. 在区块中发送交易

    Golang开发Hyperledger Fabric 2.x链码

  3. 通过交易进行升级
  4. 独立(手动)从 peer 节点上删除

实例化策略

  • 限制可实例化的 peer 组织
  • 标识组织的表达式
  • 使用peer chaincode package 添加标记进行设置

链码 Docker 容器

  • 首次调用(invoke)、查询(query)
    1. 创建 Docker镜像
    2. 创建链码容器
    3. 通过交易的形式升级
      • 创建新版本的链码包
      • 在 节点上安装新版本的链码
      • 通过更新交易将链码升级到新版本
      • 所有组织中的 Admin必须手动升级链码至最新版本
    4. 独立(手动)删除每个节点
      1. 组织可决定从 peer 节点中删除链码
      2. 删除链码不会影响到区块链网络或账本(删除需要手动执行,Fabric 不提供相关命令)

开发环境配置脚本

dev-init.sh 初始化开发配置

  • 生成 crypto 文件
  • 为网络生成配置文件
  • 根据参数启动多个容器
  • 设置 airline 通道
  • -h 显示帮助
  • -d 以DEV模式启动peer 节点(默认为 net)
  • -c 启动命令行/工具容器
  • -s 设置 peer 节点的数据库为 CouchDB
  • -e 启动 Hyperledger浏览器容器

dev-validate.sh :安装示例链码、实例化,对 peer 节点进行调用、查询操作;已安装链码添加 skip 参数进行验证

dev-stop.sh:删除容器,但在容器系统中保留账本数据

dev-start.sh:重新启动容器并添加保留的账本数据

dev-mode.sh:在控制台打印启动模式,如Peer Launch Mode=net

设置、显示组织上下文:

启动浏览器

链码执行工具

安装链码

日志

net 模式:链码由peer 节点启动

dev 模式:链码由开发者启动

 

喜欢 (0)
[]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址