{"id":18488541,"url":"https://github.com/IBM/Decentralized-Energy-Composer","last_synced_at":"2025-04-08T21:30:36.629Z","repository":{"id":66064689,"uuid":"97759710","full_name":"IBM/Decentralized-Energy-Composer","owner":"IBM","description":"WARNING: This repository is no longer maintained :warning: We are no longer showing the Hyperledger Composer Service.","archived":true,"fork":false,"pushed_at":"2019-06-26T17:12:25.000Z","size":3496,"stargazers_count":129,"open_issues_count":4,"forks_count":133,"subscribers_count":27,"default_branch":"master","last_synced_at":"2024-12-20T23:33:22.170Z","etag":null,"topics":["blockchain","hyperledger-composer","hyperledger-fabric","ibmcode"],"latest_commit_sha":null,"homepage":"https://developer.ibm.com/code/patterns/decentralized-energy-hyperledger-composer/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/IBM.png","metadata":{"files":{"readme":"README-cn.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-07-19T20:46:17.000Z","updated_at":"2024-06-28T03:20:28.000Z","dependencies_parsed_at":"2023-02-20T18:30:18.071Z","dependency_job_id":null,"html_url":"https://github.com/IBM/Decentralized-Energy-Composer","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IBM%2FDecentralized-Energy-Composer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IBM%2FDecentralized-Energy-Composer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IBM%2FDecentralized-Energy-Composer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IBM%2FDecentralized-Energy-Composer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/IBM","download_url":"https://codeload.github.com/IBM/Decentralized-Energy-Composer/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247930983,"owners_count":21020146,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["blockchain","hyperledger-composer","hyperledger-fabric","ibmcode"],"created_at":"2024-11-06T12:51:53.448Z","updated_at":"2025-04-08T21:30:36.624Z","avatar_url":"https://github.com/IBM.png","language":"TypeScript","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"readme":"*阅读本文的其他语言版本：[English](README.md)。*\n# 通过 Hyperledger Composer 实现去中心化能源\n\n人们正在探索的一种关键的区块链应用是去中心化能源网络。这个想法源于一个街区，其中某些住户通过太阳能电池板或其他途径制造能源，而且能将过剩的能源销售给其他需要能源的住户。交易是基于每个住户帐户中的硬币进行的。根据预先确定的合约和价格，在一个特定的结算期内，从使用者那里取出资金，并将其存到生产者那里。每次交易都必须是原子性的，并添加到一个区块链账本中，以建立信任和执行验证。该网络可以包含银行，以便可以用硬币向银行换取法定货币（美元）。还可以包含电力公司，电力公司可以通过该网络购买或提供能源。\n\n在本 Code Pattern 中，我们将使用 Hyperledger Composer 创建这样一个区块链应用程序。该网络由住户、银行和电力公司组成。住户可以彼此交换硬币来获取能源。  该应用程序设想了一个预付费系统，在该系统中，交易发生在使用能源和更新价值之后。  住户可以在该网络上与银行交换硬币来获取法定货币（美元）。  住户还可以在该网络上通过硬币向电力公司换取能源。\n\n本 Code Pattern 适合希望开始通过 Hyperledger Composer 构建区块链应用程序的开发人员。读者完成本 Code Pattern 后，将会掌握如何：\n\n* 使用 Hyperledge Composer 创建业务网络并在区块链账本上记录交易\n* 将该网络部署到一个 Hyperledger Fabric 实例\n* 构建一个 Angular 应用程序来通过 REST API 与该网络交互\n\n\n# 架构流程\n\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"650\" height=\"200\" src=\"images/arch.png\"\u003e\n\u003c/p\u003e\n\n1. 管理员与一个包含 Angular 框架的去中心化能源用户界面进行交互。\n2. 应用程序通过 REST API 处理用户对网络的请求。\n3. 向 Hyperledger Fabric V1 上的区块链状态数据库发出请求\n4. 使用 REST API 检索数据库的状态\n5. Angular 框架通过对 REST API 执行 GET 调用来获取数据\n\n# 包含的组件\n\n* Hyperledger Composer\n* Angular 框架\n* Loopback\n\n\n# 运行应用程序\n按照这些步骤来设置并运行本 Code Pattern。下面详细介绍了这些步骤。\n\n## 前提条件\n- 操作系统：Ubuntu Linux 14.04 / 16.04 LTS（均为 64 位）或 Mac OS 10.12\n- [Docker](https://www.docker.com/)（17.03 或更高版本）\n- [npm](https://www.npmjs.com/)  (v5.x)\n- [Node](https://nodejs.org/en/)（8.9 或更高版本 - 请注意，不支持第 9 版）\n  * 要安装特定的 Node 版本，可以使用 [nvm](https://davidwalsh.name/nvm)\n- [Hyperledger Composer](https://hyperledger.github.io/composer/installing/development-tools.html)\n  * 要安装 composer cli，请使用以下命令\n    `npm install -g composer-cli`\n  * 要安装 composer-rest-server，请使用以下命令\n    `npm install -g composer-rest-server`\n  * 要安装 generator-hyperledger-composer，请使用以下命令\n    `npm install -g generator-hyperledger-composer`\n\n## 步骤\n1. [克隆存储库](#1-clone-the-repo)\n2. [设置 Fabric](#2-setup-fabric)\n3. [生成业务网络归档文件](#3-generate-the-business-network-archive)\n4. [部署到 Fabric](#4-deploy-to-fabric)\n5. [运行应用程序](#5-run-application)\n6. [创建参与者](#6-create-participants)\n7. [执行交易](#7-execute-transactions)\n\n## 1. 克隆存储库\n\n本地克隆 `Decentralized-Energy-Composer 代码`。在终端中，运行：\n\n`git clone https://github.com/IBM/Decentralized-Energy-Composer`\n\n## 2. 设置 Fabric\n\n这些命令将停止并移除所有运行的容器，而且还会移除所有以前创建的 Hyperledger Fabric 链代码镜像：\n\n```none\ndocker kill $(docker ps -q)\ndocker rm $(docker ps -aq)\ndocker rmi $(docker images dev-* -q)\n```\n\n所有脚本都在 `/fabric-tools` 目录中。  启动 fabric 并创建对等节点管理员卡：\n\n```\ncd fabric-tools/\n./downloadFabric.sh\n./startFabric.sh\n./createPeerAdminCard.sh\n```\n\n## 3. 生成业务网络归档文件\n\n接下来从根目录生成业务网络归档 (BNA) 文件：\n\n```\ncd ../\nnpm install\n```\n\n`package.json` 中的 `composer archive create` 命令已创建了一个名为 `decentralized-energy-network@0.1.15.bna` 的文件。\n\n\n## 4. 部署到 Fabric\n\n现在，我们已准备好将业务网络部署到 Hyperledger Fabric。这需要将 Hyperledger Composer 链代码安装在对等节点上，然后必须将业务网络归档文件 (.bna) 发送给该对等节点，还必须创建一个新参与者、身份和关联卡作为网络管理员。最后，必须导入网络管理员业务网络卡供使用，然后对该网络执行 ping 操作来检查它是否会响应。\n\n首先，安装业务网络：\n\n```\ncomposer network install --card PeerAdmin@hlfv1 --archiveFile decentralized-energy-network@0.1.15.bna\n```\n\n启动业务网络：\n\n```\ncomposer network start --networkName decentralized-energy-network --networkVersion 0.1.15 --networkAdmin admin --networkAdminEnrollSecret adminpw --card PeerAdmin@hlfv1 --file networkadmin.card\n```\n\n导入网络管理员身份作为适用的业务网络卡：\n```\ncomposer card import --file networkadmin.card\n```\n\n检查业务网络是否已成功部署，运行以下命令对该网络执行 ping 操作：\n```\ncomposer network ping --card admin@decentralized-energy-network\n```\n\n## 5. 运行应用程序\n\n首先，进入 `angular-app` 文件夹并安装依赖项：\n\n```\ncd ../angular-app/\nnpm install\n```\n\n要启动应用程序，请执行以下操作：\n```\nnpm start\n```\n\n该应用程序现在应在以下位置运行：\n`http://localhost:4200`\n\n\u003cdiv style='border: 2px solid #f00;'\u003e\n  \u003cimg width=\"800\" src=\"images/app_scrnshot.png\"\u003e\n\u003c/div\u003e\n\u003c/br\u003e\n\n将与网络进行通信的 REST 服务器位于以下位置：\n`http://localhost:3000/explorer/`\n\n\n## 6. 创建参与者\n\n打开应用程序后，创建参与者并填入虚拟数据。  创建住户、银行和电力公司。\n\n\n## 7. 执行交易\n\n在住户之间、住户与银行之间，以及住户与电力公司之间手动执行交易。  执行交易后，确保参与者帐户价值已更新。\n\n\n在会话结束后，停止 Fabric：\n\n```\ncd ~/fabric-tools\n./stopFabric.sh\n./teardownFabric.sh\n```\n\n## 扩展 Code Pattern\n\n这个应用程序演示了使用区块链的去中心化能源网络的基本概念，可通过多种方式对其进行扩展：\n* 添加特定的权限和参与者访问权\n* 设置参与者之间的实时交易\n* 集成 IoT 来读取电表读数和分配能源\n\n## 部署到 IBM Cloud\n\n可以将区块链网络部署到 IBM Cloud。 \n可以使用 [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。\n\n## 附加资源\n* [Hyperledger Fabric 文档](http://hyperledger-fabric.readthedocs.io/en/latest/)\n* [Hyperledger Composer 文档](https://hyperledger.github.io/composer/latest/introduction/introduction.html)\n\n## 许可\n[Apache 2.0](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FIBM%2FDecentralized-Energy-Composer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FIBM%2FDecentralized-Energy-Composer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FIBM%2FDecentralized-Energy-Composer/lists"}