github.com/muhammedhassanm/blockchain@v0.0.0-20200120143007-697261defd4d/Decentralized-Energy-Composer-master/README-cn.md (about)

     1  *阅读本文的其他语言版本:[English](README.md)。*
     2  # 通过 Hyperledger Composer 实现去中心化能源
     3  
     4  人们正在探索的一种关键的区块链应用是去中心化能源网络。这个想法源于一个街区,其中某些住户通过太阳能电池板或其他途径制造能源,而且能将过剩的能源销售给其他需要能源的住户。交易是基于每个住户帐户中的硬币进行的。根据预先确定的合约和价格,在一个特定的结算期内,从使用者那里取出资金,并将其存到生产者那里。每次交易都必须是原子性的,并添加到一个区块链账本中,以建立信任和执行验证。该网络可以包含银行,以便可以用硬币向银行换取法定货币(美元)。还可以包含电力公司,电力公司可以通过该网络购买或提供能源。
     5  
     6  在本 Code Pattern 中,我们将使用 Hyperledger Composer 创建这样一个区块链应用程序。该网络由住户、银行和电力公司组成。住户可以彼此交换硬币来获取能源。  该应用程序设想了一个预付费系统,在该系统中,交易发生在使用能源和更新价值之后。  住户可以在该网络上与银行交换硬币来获取法定货币(美元)。  住户还可以在该网络上通过硬币向电力公司换取能源。
     7  
     8  本 Code Pattern 适合希望开始通过 Hyperledger Composer 构建区块链应用程序的开发人员。读者完成本 Code Pattern 后,将会掌握如何:
     9  
    10  * 使用 Hyperledge Composer 创建业务网络并在区块链账本上记录交易
    11  * 将该网络部署到一个 Hyperledger Fabric 实例
    12  * 构建一个 Angular 应用程序来通过 REST API 与该网络交互
    13  
    14  
    15  # 架构流程
    16  
    17  <p align="center">
    18    <img width="650" height="200" src="images/arch.png">
    19  </p>
    20  
    21  1. 管理员与一个包含 Angular 框架的去中心化能源用户界面进行交互。
    22  2. 应用程序通过 REST API 处理用户对网络的请求。
    23  3. 向 Hyperledger Fabric V1 上的区块链状态数据库发出请求
    24  4. 使用 REST API 检索数据库的状态
    25  5. Angular 框架通过对 REST API 执行 GET 调用来获取数据
    26  
    27  # 包含的组件
    28  
    29  * Hyperledger Composer
    30  * Angular 框架
    31  * Loopback
    32  
    33  
    34  # 运行应用程序
    35  按照这些步骤来设置并运行本 Code Pattern。下面详细介绍了这些步骤。
    36  
    37  ## 前提条件
    38  - 操作系统:Ubuntu Linux 14.04 / 16.04 LTS(均为 64 位)或 Mac OS 10.12
    39  - [Docker](https://www.docker.com/)(17.03 或更高版本)
    40  - [npm](https://www.npmjs.com/)  (v5.x)
    41  - [Node](https://nodejs.org/en/)(8.9 或更高版本 - 请注意,不支持第 9 版)
    42    * 要安装特定的 Node 版本,可以使用 [nvm](https://davidwalsh.name/nvm)
    43  - [Hyperledger Composer](https://hyperledger.github.io/composer/installing/development-tools.html)
    44    * 要安装 composer cli,请使用以下命令
    45      `npm install -g composer-cli`
    46    * 要安装 composer-rest-server,请使用以下命令
    47      `npm install -g composer-rest-server`
    48    * 要安装 generator-hyperledger-composer,请使用以下命令
    49      `npm install -g generator-hyperledger-composer`
    50  
    51  ## 步骤
    52  1. [克隆存储库](#1-clone-the-repo)
    53  2. [设置 Fabric](#2-setup-fabric)
    54  3. [生成业务网络归档文件](#3-generate-the-business-network-archive)
    55  4. [部署到 Fabric](#4-deploy-to-fabric)
    56  5. [运行应用程序](#5-run-application)
    57  6. [创建参与者](#6-create-participants)
    58  7. [执行交易](#7-execute-transactions)
    59  
    60  ## 1. 克隆存储库
    61  
    62  本地克隆 `Decentralized-Energy-Composer 代码`。在终端中,运行:
    63  
    64  `git clone https://github.com/IBM/Decentralized-Energy-Composer`
    65  
    66  ## 2. 设置 Fabric
    67  
    68  这些命令将停止并移除所有运行的容器,而且还会移除所有以前创建的 Hyperledger Fabric 链代码镜像:
    69  
    70  ```none
    71  docker kill $(docker ps -q)
    72  docker rm $(docker ps -aq)
    73  docker rmi $(docker images dev-* -q)
    74  ```
    75  
    76  所有脚本都在 `/fabric-tools` 目录中。  启动 fabric 并创建对等节点管理员卡:
    77  
    78  ```
    79  cd fabric-tools/
    80  ./downloadFabric.sh
    81  ./startFabric.sh
    82  ./createPeerAdminCard.sh
    83  ```
    84  
    85  ## 3. 生成业务网络归档文件
    86  
    87  接下来从根目录生成业务网络归档 (BNA) 文件:
    88  
    89  ```
    90  cd ../
    91  npm install
    92  ```
    93  
    94  `package.json` 中的 `composer archive create` 命令已创建了一个名为 `decentralized-energy-network@0.1.15.bna` 的文件。
    95  
    96  
    97  ## 4. 部署到 Fabric
    98  
    99  现在,我们已准备好将业务网络部署到 Hyperledger Fabric。这需要将 Hyperledger Composer 链代码安装在对等节点上,然后必须将业务网络归档文件 (.bna) 发送给该对等节点,还必须创建一个新参与者、身份和关联卡作为网络管理员。最后,必须导入网络管理员业务网络卡供使用,然后对该网络执行 ping 操作来检查它是否会响应。
   100  
   101  首先,安装业务网络:
   102  
   103  ```
   104  composer network install --card PeerAdmin@hlfv1 --archiveFile decentralized-energy-network@0.1.15.bna
   105  ```
   106  
   107  启动业务网络:
   108  
   109  ```
   110  composer network start --networkName decentralized-energy-network --networkVersion 0.1.15 --networkAdmin admin --networkAdminEnrollSecret adminpw --card PeerAdmin@hlfv1 --file networkadmin.card
   111  ```
   112  
   113  导入网络管理员身份作为适用的业务网络卡:
   114  ```
   115  composer card import --file networkadmin.card
   116  ```
   117  
   118  检查业务网络是否已成功部署,运行以下命令对该网络执行 ping 操作:
   119  ```
   120  composer network ping --card admin@decentralized-energy-network
   121  ```
   122  
   123  ## 5. 运行应用程序
   124  
   125  首先,进入 `angular-app` 文件夹并安装依赖项:
   126  
   127  ```
   128  cd ../angular-app/
   129  npm install
   130  ```
   131  
   132  要启动应用程序,请执行以下操作:
   133  ```
   134  npm start
   135  ```
   136  
   137  该应用程序现在应在以下位置运行:
   138  `http://localhost:4200`
   139  
   140  <div style='border: 2px solid #f00;'>
   141    <img width="800" src="images/app_scrnshot.png">
   142  </div>
   143  </br>
   144  
   145  将与网络进行通信的 REST 服务器位于以下位置:
   146  `http://localhost:3000/explorer/`
   147  
   148  
   149  ## 6. 创建参与者
   150  
   151  打开应用程序后,创建参与者并填入虚拟数据。  创建住户、银行和电力公司。
   152  
   153  
   154  ## 7. 执行交易
   155  
   156  在住户之间、住户与银行之间,以及住户与电力公司之间手动执行交易。  执行交易后,确保参与者帐户价值已更新。
   157  
   158  
   159  在会话结束后,停止 Fabric:
   160  
   161  ```
   162  cd ~/fabric-tools
   163  ./stopFabric.sh
   164  ./teardownFabric.sh
   165  ```
   166  
   167  ## 扩展 Code Pattern
   168  
   169  这个应用程序演示了使用区块链的去中心化能源网络的基本概念,可通过多种方式对其进行扩展:
   170  * 添加特定的权限和参与者访问权
   171  * 设置参与者之间的实时交易
   172  * 集成 IoT 来读取电表读数和分配能源
   173  
   174  ## 部署到 IBM Cloud
   175  
   176  可以将区块链网络部署到 IBM Cloud。 
   177  可以使用 [IBM Blockchain Platform](https://console.bluemix.net/catalog/services/blockchain) 并在 `Starter Membership Plan` 下免费开始部署。  遵循[这些指示信息](https://console.bluemix.net/docs/services/blockchain/develop_starter.html#deploying-a-business-network) 将业务网络部署到 IBM Blockchain Platform。
   178  
   179  ## 附加资源
   180  * [Hyperledger Fabric 文档](http://hyperledger-fabric.readthedocs.io/en/latest/)
   181  * [Hyperledger Composer 文档](https://hyperledger.github.io/composer/latest/introduction/introduction.html)
   182  
   183  ## 许可
   184  [Apache 2.0](LICENSE)