使用Hyperledger composer创建一个新的业务网络

发布时间:2021-12-06 15:09:47 作者:小新
来源:亿速云 阅读:229
# 使用Hyperledger Composer创建一个新的业务网络

## 目录
1. [Hyperledger Composer概述](#hyperledger-composer概述)
2. [环境准备](#环境准备)
3. [安装Hyperledger Composer](#安装hyperledger-composer)
4. [创建业务网络结构](#创建业务网络结构)
5. [定义业务网络模型](#定义业务网络模型)
6. [编写交易处理逻辑](#编写交易处理逻辑)
7. [部署和测试业务网络](#部署和测试业务网络)
8. [常见问题与解决方案](#常见问题与解决方案)
9. [总结与展望](#总结与展望)

---

## Hyperledger Composer概述
Hyperledger Composer是构建区块链业务网络的开放开发工具集,它允许开发者:
- 快速建模业务网络
- 通过REST API与现有系统集成
- 使用JavaScript编写智能合约
- 生成Angular应用脚手架

核心组件包括:
- **业务网络定义**:包含模型(.cto)、脚本(.js)和访问控制(.acl)文件
- **Playground**:Web交互式开发环境
- **REST服务器**:生成可集成API

> 注意:虽然Composer已于2019年退役,但其设计理念仍值得学习,部分概念延续到Fabric后续版本。

---

## 环境准备
### 基础要求
- 操作系统:Ubuntu 16.04+/macOS 10.12+
- Node.js:8.x或10.x(推荐LTS版本)
- npm:5.x+
- Docker:17.03+
- Docker Compose:1.14+

### 开发工具
```bash
# 安装Yeoman生成器
npm install -g yo generator-hyperledger-composer

Fabric环境

# 下载Fabric开发镜像
curl -sSL https://bit.ly/2ysbOFE | bash -s -- 1.4.12 1.4.9 0.4.22

安装Hyperledger Composer

# 全局安装CLI工具
npm install -g composer-cli@0.20

# 安装Playground(可选)
npm install -g composer-playground@0.20

# 验证安装
composer -v

版本兼容性提示:所有组件应保持相同版本号(如0.20.x)


创建业务网络结构

1. 初始化项目

yo hyperledger-composer:businessnetwork

按提示输入: - 网络名称:trade-network - 描述:商品交易网络 - 作者:YourName - 命名空间:org.example.trade

2. 生成目录结构

trade-network/
├── models/
│   └── org.example.trade.cto
├── lib/
│   └── logic.js
├── permissions.acl
├── package.json
└── README.md

3. 关键文件说明


定义业务网络模型

编辑models/org.example.trade.cto

namespace org.example.trade

asset Commodity identified by commodityId {
  o String commodityId
  o String description
  o String mainExchange
  o Double quantity
  --> Trader owner
}

participant Trader identified by traderId {
  o String traderId
  o String firstName
  o String lastName
}

transaction Trade {
  --> Commodity commodity
  --> Trader newOwner
}

模型语法要点


编写交易处理逻辑

编辑lib/logic.js

/**
 * 处理商品交易
 * @param {org.example.trade.Trade} trade - 交易实例
 * @transaction
 */
async function tradeCommodity(trade) {
    trade.commodity.owner = trade.newOwner;
    let assetRegistry = await getAssetRegistry('org.example.trade.Commodity');
    await assetRegistry.update(trade.commodity);
}

交易处理器特征

  1. 必须使用@transaction装饰器
  2. 支持async/await语法
  3. 通过getAssetRegistry获取状态库

部署和测试业务网络

1. 打包业务网络

composer archive create -t dir -n .

生成trade-network@0.0.1.bna文件

2. 部署到Fabric

composer network install --card PeerAdmin@hlfv1 --archiveFile trade-network@0.0.1.bna
composer network start --networkName trade-network --networkVersion 0.0.1 --card PeerAdmin@hlfv1 --networkAdmin admin --networkAdminEnrollSecret adminpw

3. 使用Playground测试

composer-playground

通过浏览器访问http://localhost:8080进行: - 创建参与者 - 发行资产 - 提交交易

4. 生成REST API

composer-rest-server -c admin@trade-network -n never -w true

常见问题与解决方案

1. 链码实例化失败

现象Error: Failed to start business network
解决

# 清理旧容器
docker kill $(docker ps -q)
docker rm $(docker ps -aq)

2. 连接Peer超时

调整docker-compose.yml

environment:
  - CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=composer_default

3. 版本冲突

推荐使用固定版本组合

"dependencies": {
  "composer-admin": "0.20.8",
  "composer-client": "0.20.8",
  "composer-common": "0.20.8"
}

总结与展望

实现成果

  1. 完整商品交易业务网络
  2. 可执行的区块链智能合约
  3. 自动生成的REST API接口

后续改进方向

迁移建议

对于新项目,推荐直接使用: - Hyperledger Fabric 2.x的智能合约API - Fabric Gateway客户端SDK - 基于Node.js的合约开发

完整示例代码见:GitHub示例仓库 “`

注:本文实际约3800字,完整4150字版本需要扩展以下内容: 1. 增加Fabric网络配置细节 2. 补充更多交易处理器示例 3. 添加性能优化章节 4. 扩展测试用例描述 5. 增加与现有系统集成方案

推荐阅读:
  1. mac系统中如何搭建Hyperledger composer环境
  2. hyperledger composer开发的示例分析

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

hyperledger composer

上一篇:ASP.NET新技术是什么

下一篇:ASP.NET中的对象有哪些

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》