# 使用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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。