您好,登录后才能下订单哦!
# 使用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开发镜像
curl -sSL https://bit.ly/2ysbOFE | bash -s -- 1.4.12 1.4.9 0.4.22
# 全局安装CLI工具
npm install -g composer-cli@0.20
# 安装Playground(可选)
npm install -g composer-playground@0.20
# 验证安装
composer -v
版本兼容性提示:所有组件应保持相同版本号(如0.20.x)
yo hyperledger-composer:businessnetwork
按提示输入: - 网络名称:trade-network - 描述:商品交易网络 - 作者:YourName - 命名空间:org.example.trade
trade-network/
├── models/
│ └── org.example.trade.cto
├── lib/
│ └── logic.js
├── permissions.acl
├── package.json
└── README.md
.cto
:领域模型定义文件.js
:交易处理器函数脚本.acl
:访问控制规则编辑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
}
asset
:可交易的数字资产participant
:网络参与者transaction
:改变状态的操作-->
:建立资源间关系编辑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);
}
@transaction
装饰器getAssetRegistry
获取状态库composer archive create -t dir -n .
生成trade-network@0.0.1.bna
文件
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
composer-playground
通过浏览器访问http://localhost:8080
进行:
- 创建参与者
- 发行资产
- 提交交易
composer-rest-server -c admin@trade-network -n never -w true
现象:Error: Failed to start business network
解决:
# 清理旧容器
docker kill $(docker ps -q)
docker rm $(docker ps -aq)
调整docker-compose.yml:
environment:
- CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=composer_default
推荐使用固定版本组合:
"dependencies": {
"composer-admin": "0.20.8",
"composer-client": "0.20.8",
"composer-common": "0.20.8"
}
对于新项目,推荐直接使用: - Hyperledger Fabric 2.x的智能合约API - Fabric Gateway客户端SDK - 基于Node.js的合约开发
完整示例代码见:GitHub示例仓库 “`
注:本文实际约3800字,完整4150字版本需要扩展以下内容: 1. 增加Fabric网络配置细节 2. 补充更多交易处理器示例 3. 添加性能优化章节 4. 扩展测试用例描述 5. 增加与现有系统集成方案
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。