阅读本文的其他语言版本:English。
人们正在探索的一种关键的区块链应用是去中心化能源网络。这个想法源于一个街区,其中某些住户通过太阳能电池板或其他途径制造能源,而且能将过剩的能源销售给其他需要能源的住户。交易是基于每个住户帐户中的硬币进行的。根据预先确定的合约和价格,在一个特定的结算期内,从使用者那里取出资金,并将其存到生产者那里。每次交易都必须是原子性的,并添加到一个区块链账本中,以建立信任和执行验证。该网络可以包含银行,以便可以用硬币向银行换取法定货币(美元)。还可以包含电力公司,电力公司可以通过该网络购买或提供能源。
在本 Code Pattern 中,我们将使用 Hyperledger Composer 创建这样一个区块链应用程序。该网络由住户、银行和电力公司组成。住户可以彼此交换硬币来获取能源。 该应用程序设想了一个预付费系统,在该系统中,交易发生在使用能源和更新价值之后。 住户可以在该网络上与银行交换硬币来获取法定货币(美元)。 住户还可以在该网络上通过硬币向电力公司换取能源。
本 Code Pattern 适合希望开始通过 Hyperledger Composer 构建区块链应用程序的开发人员。读者完成本 Code Pattern 后,将会掌握如何:
- 使用 Hyperledge Composer 创建业务网络并在区块链账本上记录交易
- 将该网络部署到一个 Hyperledger Fabric 实例
- 构建一个 Angular 应用程序来通过 REST API 与该网络交互
- 管理员与一个包含 Angular 框架的去中心化能源用户界面进行交互。
- 应用程序通过 REST API 处理用户对网络的请求。
- 向 Hyperledger Fabric V1 上的区块链状态数据库发出请求
- 使用 REST API 检索数据库的状态
- Angular 框架通过对 REST API 执行 GET 调用来获取数据
- Hyperledger Composer
- Angular 框架
- Loopback
按照这些步骤来设置并运行本 Code Pattern。下面详细介绍了这些步骤。
- 操作系统:Ubuntu Linux 14.04 / 16.04 LTS(均为 64 位)或 Mac OS 10.12
- Docker(17.03 或更高版本)
- npm (v5.x)
- Node(8.9 或更高版本 - 请注意,不支持第 9 版)
- 要安装特定的 Node 版本,可以使用 nvm
- Hyperledger Composer
- 要安装 composer cli,请使用以下命令
npm install -g composer-cli
- 要安装 composer-rest-server,请使用以下命令
npm install -g composer-rest-server
- 要安装 generator-hyperledger-composer,请使用以下命令
npm install -g generator-hyperledger-composer
- 要安装 composer cli,请使用以下命令
本地克隆 Decentralized-Energy-Composer 代码
。在终端中,运行:
git clone https://github.com/IBM/Decentralized-Energy-Composer
这些命令将停止并移除所有运行的容器,而且还会移除所有以前创建的 Hyperledger Fabric 链代码镜像:
docker kill $(docker ps -q)
docker rm $(docker ps -aq)
docker rmi $(docker images dev-* -q)
所有脚本都在 /fabric-tools
目录中。 启动 fabric 并创建对等节点管理员卡:
cd fabric-tools/
./downloadFabric.sh
./startFabric.sh
./createPeerAdminCard.sh
接下来从根目录生成业务网络归档 (BNA) 文件:
cd ../
npm install
package.json
中的 composer archive create
命令已创建了一个名为 decentralized-energy-network@0.1.15.bna
的文件。
现在,我们已准备好将业务网络部署到 Hyperledger Fabric。这需要将 Hyperledger Composer 链代码安装在对等节点上,然后必须将业务网络归档文件 (.bna) 发送给该对等节点,还必须创建一个新参与者、身份和关联卡作为网络管理员。最后,必须导入网络管理员业务网络卡供使用,然后对该网络执行 ping 操作来检查它是否会响应。
首先,安装业务网络:
composer network install --card PeerAdmin@hlfv1 --archiveFile decentralized-energy-network@0.1.15.bna
启动业务网络:
composer network start --networkName decentralized-energy-network --networkVersion 0.1.15 --networkAdmin admin --networkAdminEnrollSecret adminpw --card PeerAdmin@hlfv1 --file networkadmin.card
导入网络管理员身份作为适用的业务网络卡:
composer card import --file networkadmin.card
检查业务网络是否已成功部署,运行以下命令对该网络执行 ping 操作:
composer network ping --card admin@decentralized-energy-network
首先,进入 angular-app
文件夹并安装依赖项:
cd ../angular-app/
npm install
要启动应用程序,请执行以下操作:
npm start
该应用程序现在应在以下位置运行:
http://localhost:4200
将与网络进行通信的 REST 服务器位于以下位置:
http://localhost:3000/explorer/
打开应用程序后,创建参与者并填入虚拟数据。 创建住户、银行和电力公司。
在住户之间、住户与银行之间,以及住户与电力公司之间手动执行交易。 执行交易后,确保参与者帐户价值已更新。
在会话结束后,停止 Fabric:
cd ~/fabric-tools
./stopFabric.sh
./teardownFabric.sh
这个应用程序演示了使用区块链的去中心化能源网络的基本概念,可通过多种方式对其进行扩展:
- 添加特定的权限和参与者访问权
- 设置参与者之间的实时交易
- 集成 IoT 来读取电表读数和分配能源
可以将区块链网络部署到 IBM Cloud。
可以使用 IBM Blockchain Platform 并在 Starter Membership Plan
下免费开始部署。 遵循这些指示信息 将业务网络部署到 IBM Blockchain Platform。