Composer:加速构建Hyperledger Fabric区块链应用的核心框架

Composer:加速构建Hyperledger Fabric区块链应用的核心框架

【免费下载链接】composer :warning: :warning: :warning: Hyperledger Composer has been deprecated :warning: :warning: :warning: 【免费下载链接】composer 项目地址: https://gitcode.com/gh_mirrors/comp/composer

引言:区块链应用开发的痛点与解决方案

你是否还在为Hyperledger Fabric区块链应用开发的复杂性而困扰?繁琐的智能合约编写、复杂的网络配置、冗长的部署流程,这些问题是否让你望而却步?本文将详细介绍Hyperledger Composer框架,它曾是构建Hyperledger Fabric区块链应用的得力助手,能够显著简化开发流程,提高开发效率。读完本文,你将了解Composer的核心功能、架构设计、使用方法,以及在当前环境下的迁移建议。

1. Hyperledger Composer概述

1.1 什么是Hyperledger Composer

Hyperledger Composer是一个应用开发框架,旨在简化和加速基于Hyperledger Fabric的区块链应用的创建过程。它提供了一套完整的工具链和编程模型,使开发者能够更轻松地定义业务网络、资产、参与者和交易,并快速部署和测试应用。

1.2 核心功能

Hyperledger Composer具有以下核心功能:

  • 业务网络定义(BND):使用简单的建模语言(CTO)定义资产、参与者、交易和关系。
  • 命令行工具(CLI):提供丰富的命令用于创建、部署、测试和管理业务网络。
  • REST服务器:自动生成REST API,方便与外部系统集成。
  • Playground:基于Web的可视化工具,用于设计、测试和部署业务网络。
  • 运行时环境:提供在Hyperledger Fabric上执行智能合约的运行时支持。

1.3 项目状态说明

注意:截至2019年8月29日,Hyperledger Composer项目已进入弃用状态。维护者不再积极开发新功能或提供GitHub issues支持,但仍会合并代码更改的拉取请求。强烈建议使用Hyperledger Fabric v1.4+,它对开发者体验进行了重大改进,包括新的编程模型。

2. Composer架构设计

2.1 整体架构

Hyperledger Composer的架构主要由以下组件构成:

mermaid

2.2 核心组件详解

2.2.1 容器(Container)

容器负责启动引擎,将客户端和管理API的调用路由到引擎,并通过一组服务向引擎公开区块链。目前有两种容器实现:

2.2.2 引擎(Engine)

引擎提供管理业务网络、注册表和资源以及执行交易处理器函数的所有核心代码。引擎代码必须支持多个"进行中"请求,这通过容器传递给引擎的上下文(Context)实现。

2.2.3 服务(Services)

容器提供一组服务供引擎使用,主要包括:

  • 日志服务:用于写入日志条目。
  • 数据服务:用于与世界状态交互。

3. 快速入门:使用Composer构建区块链应用

3.1 环境设置

在开始使用Composer之前,需要安装以下工具:

  • Git
  • Docker和Docker Compose
  • Node.js v8.9或更高版本(但不支持Node v9)
  • Chrome浏览器(用于测试)
  • softhsm 2.0.0(用于完整的集成测试)

安装命令示例(Ubuntu):

# 安装Docker和Docker Compose
sudo apt-get update
sudo apt-get install docker.io docker-compose

# 安装Node.js
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs

# 安装softhsm 2.0.0
sudo apt-get -y install libssl-dev
mkdir softhsm && cd softhsm
curl -O https://dist.opendnssec.org/source/softhsm-2.0.0.tar.gz
tar -xvf softhsm-2.0.0.tar.gz
cd softhsm-2.0.0
./configure --disable-non-paged-memory --disable-gost
make
sudo make install
sudo mkdir -p /var/lib/softhsm/tokens
sudo chmod 777 /var/lib/softhsm/tokens
softhsm2-util --init-token --slot 0 --label "ForComposer" --so-pin 1234 --pin 98765432

3.2 安装Composer组件

# 安装Composer CLI
npm install -g composer-cli

# 安装Composer REST服务器
npm install -g composer-rest-server

# 安装Composer Playground(可选,用于本地运行)
npm install -g composer-playground

3.3 创建业务网络定义

3.3.1 定义模型(CTO文件)

创建一个名为sample.cto的文件,定义资产、参与者和交易:

namespace org.example.basic

asset SampleAsset identified by assetId {
  o String assetId
  o String value
  --> SampleParticipant owner
}

participant SampleParticipant identified by participantId {
  o String participantId
  o String firstName
  o String lastName
}

transaction SampleTransaction {
  --> SampleAsset asset
  o String newValue
}
3.3.2 编写交易处理器函数

创建一个名为logic.js的文件,实现交易逻辑:

/**
 * Sample transaction processor function.
 * @param {org.example.basic.SampleTransaction} tx The sample transaction instance.
 * @transaction
 */
function sampleTransaction(tx) {
    // Update the asset's value
    tx.asset.value = tx.newValue;
    
    // Get the asset registry for the asset
    return getAssetRegistry('org.example.basic.SampleAsset')
        .then(function(assetRegistry) {
            // Update the asset in the asset registry
            return assetRegistry.update(tx.asset);
        });
}
3.3.3 创建业务网络归档(BNA)

使用Composer CLI创建BNA文件:

composer archive create --sourceType dir --sourceName . -a basic-sample-network.bna

3.4 部署业务网络

3.4.1 启动Hyperledger Fabric网络
# 下载Fabric开发环境脚本
curl -O https://raw.githubusercontent.com/hyperledger/composer-tools/master/packages/fabric-dev-servers/fabric-dev-servers.zip
unzip fabric-dev-servers.zip
cd fabric-dev-servers

# 下载Fabric镜像
./downloadFabric.sh

# 启动Fabric网络
./startFabric.sh
./createPeerAdminCard.sh
3.4.2 部署BNA文件
# 安装业务网络
composer network install --card PeerAdmin@hlfv1 --archiveFile basic-sample-network.bna

# 启动业务网络
composer network start --networkName basic-sample-network --networkVersion 0.0.1 --card PeerAdmin@hlfv1 --networkAdmin admin --networkAdminEnrollSecret adminpw

# 创建业务网络卡片
composer card import --file admin@basic-sample-network.card

# 验证部署
composer network ping --card admin@basic-sample-network

3.5 启动REST服务器

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

启动后,可以通过访问http://localhost:3000来使用自动生成的REST API。

4. Composer CLI详解

Composer提供了丰富的命令行工具,用于管理业务网络、资产、参与者和交易等。以下是一些常用命令:

4.1 业务网络管理

# 创建业务网络归档
composer archive create --sourceType dir --sourceName <directory> -a <archive-file>

# 安装业务网络
composer network install --card <card-name> --archiveFile <archive-file>

# 启动业务网络
composer network start --networkName <network-name> --networkVersion <version> --card <card-name> --networkAdmin <admin-id> --networkAdminEnrollSecret <admin-secret>

# 升级业务网络
composer network upgrade --networkName <network-name> --networkVersion <new-version> --card <card-name>

#  ping业务网络
composer network ping --card <card-name>

4.2 资产和参与者管理

# 创建资产
composer asset create -c <card-name> -d '{"$class":"org.example.basic.SampleAsset","assetId":"asset1","value":"Hello World","owner":"resource:org.example.basic.SampleParticipant#participant1"}'

# 列出资产
composer asset list -c <card-name> -n org.example.basic.SampleAsset

# 创建参与者
composer participant create -c <card-name> -d '{"$class":"org.example.basic.SampleParticipant","participantId":"participant1","firstName":"John","lastName":"Doe"}'

4.3 交易提交

# 提交交易
composer transaction submit -c <card-name> -d '{"$class":"org.example.basic.SampleTransaction","asset":"resource:org.example.basic.SampleAsset#asset1","newValue":"New Value"}'

4.4 身份管理

# 注册身份
composer identity issue -c <card-name> -f <identity-card-file> -u <user-id> -a "resource:org.example.basic.SampleParticipant#participant1"

# 导入身份卡片
composer card import -f <identity-card-file>

# 列出所有卡片
composer card list

# 删除卡片
composer card delete -c <card-name>

5. Composer Playground使用指南

Composer Playground是一个基于Web的可视化工具,用于设计、测试和部署业务网络。可以通过以下方式启动:

composer-playground

然后访问http://localhost:8080即可使用。

5.1 主要功能

  • 业务网络设计:通过图形界面定义资产、参与者和交易。
  • 测试:在浏览器中模拟交易,测试业务逻辑。
  • 部署:将业务网络部署到本地或远程Fabric网络。
  • 身份管理:创建和管理网络身份。

5.2 使用流程

  1. 创建新的业务网络或导入现有网络。
  2. 使用模型编辑器定义资产、参与者和交易。
  3. 使用脚本编辑器编写交易处理器函数。
  4. 部署业务网络到Fabric运行时。
  5. 创建测试参与者和资产。
  6. 提交交易并验证结果。

6. 从Composer迁移到Hyperledger Fabric v1.4+

由于Hyperledger Composer已被弃用,建议用户迁移到Hyperledger Fabric v1.4+。以下是迁移的主要步骤和注意事项:

6.1 Composer与Fabric v1.4+的主要差异

特性Hyperledger ComposerHyperledger Fabric v1.4+
建模语言CTO (Composer Modeling Language)Chaincode (Go/Node.js/Java)
交易处理Transaction Processor FunctionsChaincode Functions
资产管理Declarative (CTO) + JavaScriptImperative (Chaincode)
访问控制ACL RulesFabric Access Control Lists + Chaincode Logic
部署方式BNA文件 + Composer CLIChaincode Package + Fabric CLI

6.2 迁移步骤概要

  1. 学习Fabric新编程模型:熟悉Fabric的链码开发、通道配置、身份管理等概念。
  2. 转换业务模型:将CTO文件中的资产、参与者和交易定义转换为Fabric链码中的数据结构。
  3. 重写业务逻辑:将Composer交易处理器函数转换为Fabric链码函数。
  4. 重构访问控制:将Composer ACL规则转换为Fabric ACL和链码中的访问控制逻辑。
  5. 修改部署流程:使用Fabric CLI替代Composer CLI进行链码打包、安装和实例化。
  6. 更新应用集成:修改应用程序以使用Fabric SDK替代Composer Client SDK。

6.3 资源推荐

7. 总结与展望

Hyperledger Composer曾是加速Hyperledger Fabric应用开发的强大框架,它通过提供高级建模语言、可视化工具和简化的部署流程,大大降低了区块链应用开发的门槛。然而,随着Hyperledger Fabric的不断发展,其内置的开发体验已经得到了显著改善,Composer的功能逐渐被Fabric本身所吸收。

虽然Composer项目已被弃用,但它在区块链应用开发史上留下了重要的一笔。对于仍在使用Composer的项目,建议逐步迁移到Hyperledger Fabric v1.4+或更高版本,以享受更强大、更稳定的区块链开发体验。

未来,随着Hyperledger Fabric的持续演进,我们可以期待更加简化的开发流程、更丰富的功能和更好的性能,从而进一步推动区块链技术在企业中的应用和普及。

8. 附录:常用资源

8.1 官方文档

8.2 社区资源

8.3 示例项目


希望本文能帮助你了解Hyperledger Composer框架及其在区块链应用开发中的作用。如果你有任何问题或建议,请在评论区留言。别忘了点赞、收藏并关注我们,获取更多区块链技术相关内容!

下期预告:《Hyperledger Fabric v2.x新特性详解与实战》

【免费下载链接】composer :warning: :warning: :warning: Hyperledger Composer has been deprecated :warning: :warning: :warning: 【免费下载链接】composer 项目地址: https://gitcode.com/gh_mirrors/comp/composer

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值