Board logo

标题: Hyperledger Composer 基础,第 1 部分 建模和测试您的区块链网络-1 [打印本页]

作者: look_w    时间: 2018-3-17 12:22     标题: Hyperledger Composer 基础,第 1 部分 建模和测试您的区块链网络-1

本教程将帮助您开始开发一个区块链网络。我将介绍  和它的用户界面 ,在该用户界面中,您只需使用 Docker 和 Web 浏览器就能建模和测试您的网络。
前提条件要跟随本教程操作,您应该在计算机上安装以下软件:
Hyperledger Composer 是什么? 是 The Linux Foundation 主办的一个                 项目,它是一组让构建区块链应用程序变得更容易的工具,它由以下部分组成:
CTO 代表什么?CTO 目前与任何事物都没有关联。根据项目提交者 ,为文件提供 CTO                    扩展名是因为原始项目名为“Concerto”。(您需要使用您的  进行登录。)

在教程系列的这一部分,我将介绍 CTO 建模语言和 Hyperledger Composer Playground。CLI 将留到本系列的第 2                部分进行介绍,届时我将介绍 CLI 的所有方面(以及其他许多特性)。
Hyperledger Composer 建模语言 (CTO)Hyperledger Composer 拥有自己的建模语言(名为 CTO),用该语言来建模业务网络。在第 1 部分,我将介绍如何使用 CTO                建模样本 。这个样本业务网络将演示种植者、航运商和进口商如何根据从航运集装箱收到的温度读数来为易腐货物的价格定义合约。
Hyperledger Composer PlaygroundHyperledger Composer Playground                是一个基于浏览器的接口,可用来建模您的业务网络:交换哪些有价值的货物(资产),谁参与了货物的交换(参与者),如何保护货物(访问控制),流程中涉及何种业务逻辑(交易),等等。
Hyperledger Composer Playground(下文简称                Playground)使用浏览器的本地存储来模拟区块链网络的状态存储,这意味着您不需要运行真实的验证对等节点网络来使用                Playground。
您将在本教程中完成以下任务:在第 2 部分,我将介绍如何安装全套 Hyperledger Composer 开发工具,如何使用 CTO 语言的更多高级特性(包括事件),如何对                JavaScript 智能合约执行单元测试,如何使用命令行接口 (CLI) 与真实的 Hyperledger Fabric                区块链网络进行交互。
在第 3 部分,我将更深入地剖析 Composer:如何使用 Yeoman 生成 REST 接口和 GUI,如何将区块链网络应用程序部署到 IBM                Cloud 上的 Bluemix 中。
业务网络概念获取最佳免费工具、培训和社区资源的每月集萃,帮助您开始使用区块链。

大体上讲,业务网络是一组协同实现特定目标的实体。为了实现这些目标,业务网络的成员之间必须就以下方面达成一致意见:
在下一节,我将介绍常见的业务网络术语。首先,我想介绍您的第一个区块链业务网络将会解决的业务问题:运输易腐货物。更重要的是,如何使用物联网、温度传感器和云来确保易腐货物在理想情况下进行运输(以及如果没有在理想情况下,将会发生什么)。
Perishable Goods 网络IoT 与该网络有何关系?物联网似乎无处不在。Perishable Goods 网络从一个 IoT 传感器阵列获取温度读数,这些传感器将货物集装箱中的温度传输到 IBM                    Cloud,然后,IBM Cloud 中的传感器数据存储到区块链中。
进一步了解 。

基于物联网 (IoT) 的 是一个业务网络,它涉及:
整个本系列教程都将使用此业务网络作为示例。随着您继续学习本系列,您会注意到,随着我介绍更多的 Hyperledger Composer                概念,并展示它们与区块链和 IBM Cloud 之间的关系,该应用程序会变得越来越复杂。
资产资产是可以在业务协议中的各方间交换的任何有价值的物品。这意味着资产可以是任何物品。示例包括:
您想到的任何物品。如果某个物品拥有感知价值,而且可以在各方之间交换,那么它就是资产。在 Perishable Goods                网络中,资产包括易腐货物本身、这些货物的装运,以及管理交换货物期间执行的活动的合约。
参与者参与者是业务网络的成员。对于 Perishable Goods                网络,参与者包括生产易腐货物的种植者、将它们从种植者那里运输到港口的航运商,以及在港口接收商品的进口商。显然,这个模型过于简化,但它应能让您了解真实的应用程序是如何使用业务网络术语来建模的。
访问控制在业务网络中,不是所有参与者都能访问所有信息。例如,种植者不能访问航运商与进口商之间的合约。访问控制用于限制谁(在哪些条件下)能访问哪些信息。
交易“涉及”资产时,这种交互可能影响区块链账本的状态。交互在 Hyperledger Composer 中建模为交易
Perishable Goods 网络中的交易示例包括:
交易是系统的业务逻辑(或智能合约)。
事件事件是一种通知,它由区块链应用程序生成,并以发布/订阅方式由外部实体(比如应用程序)使用。
尽管区块链账本会在系统中的资产发生交换时进行更新,但这是一个内部(系统)流程。但是,在某些时候,外部实体需要获知账本的状态已更改,或者系统中发生了(或者本应发生但没有发生)其他值得注意的事。在这种情况下,区块链应用程序可以使用事件。
Perishable Goods 网络中的事件示例包括:
在下一节,我将介绍如何建模由资产、参与者和交易组成的 Perishable Goods 网络。我将介绍访问控制,并将事件留到本系列第 2                部分进行介绍。
我们将了解如何使用 Hyperledger Composer                            构建一个样本区块链应用程序,以便与一个去中心化的能源网络进行交互。
该应用程序背后的思路是,一个街区的住户通过太阳能电池板生产能源并将过剩的能源出售给其他需要的邻居。


在计算机上使用 Docker 运行 PlaygroundPlayground 是什么?Playground                是一个用于快速构建并测试区块链业务网络的环境。它不需要一个正在运行的区块链网络,所以它降低了定义、验证和测试业务网络的复杂性。
Playground 在 Docker 容器中运行,可以通过两种模式安装到计算机上:
使用 Hyperledger Fabric 验证对等节点网络此模式通过 Hyperledger Fabric 验证对等节点网络来安装 Playground,还包括用于 Playground 的 Docker                容器,以及其他所有运行 Hyperledger Fabric 验证对等节点网络的 Docker 容器。
随着更深入地学习第 2 和 3 部分,您将需要一个完整的 Hyperledger Fabric 验证对等节点网络。目前不需要这么做,因为第 1                部分中执行的所有活动都不需要它。
纯浏览器模式通过使用纯浏览器模式,可以使用一个位于浏览器本地存储中的模拟区块链账本来建模并测试业务网络。
这是我将在第 1 部分中使用的方法。
运行 Playground从一个终端窗口 (Mac/Linux) 或命令提示符 (Windows) 执行此命令:
docker run --name composer-playground --publish 8080:8080 hyperledger/composer-playground




这会以交互方式启动 Docker。我喜欢像这样运行 Playground,以便看到向 STDOUT 记录了哪些信息:
$ docker run --name composer-playground --publish 8080:8080 hyperledger/composer-playground
0|composer | PlaygroundAPI            :createServer()            > 8080
0|composer | ConnectionProfileManager :constructor()             Created a new ConnectionProfileManager {"fs":{"constants":{"O_RDONLY":0,"O_WRONLY":1,"O_RDWR":2,"S_IFMT":61440,"S_IFREG":32768,"S_IFDIR":16384,"S_IFCHR":8192,"S_IFBLK":24576,"S_IFIFO":4096,"S_IFLNK":40960,"S_IFSOCK":49152,"O_CREAT":64,"O_EXCL":128,"O_NOCTTY":256,"O_TRUNC":512,"O_APPEND":1024,"O_DIRECTORY":65536,"O_NOATIME":262144,"O_NOFOLLOW":131072,"O_SYNC":1052672,"O_DIRECT":16384,"O_NONBLOCK":2048,"S_IRWXU":448,"S_IRUSR":256,"S_IWUSR":128,"S_IXUSR":64,"S_IRWXG":56,"S_IRGRP":32,"S_IWGRP":16,"S_IXGRP":8,"S_IRWXO":7,"S_IROTH":4,"S_IWOTH":2,"S_IXOTH":1,"F_OK":0,"R_OK":4,"W_OK":2,"X_OK":1},"F_OK":0,"R_OK":4,"W_OK":2,"X_OK":1}}
0|composer | PlaygroundAPI            :createServer()            Playground API started on port 8080
0|composer | PlaygroundAPI            :createServer()            <
0|composer | Composer                 :main()                    >




如果您想要分开运行 Playground,只需添加 --detach:
docker run --name composer-playground --publish 8080:8080 --detach hyperledger/composer-playground




现在,打开浏览器并访问 http://localhost:8080,您会看到一个类似图 1 的屏幕:
图 1. Playground 欢迎屏幕运行 Playground 后,交互模式下可以用 ctrl+c 结束该容器。如果在分离模式下运行,可执行此命令:
docker stop composer-playground




现在清理 Docker 容器(否则在您尝试再次运行该容器时,Docker 会报错):
docker rm --force composer-playground




视频:运行 Playground,浏览 UI 在该视频中,我将展示如何使用 Docker 运行 Playground,并引导您了解 Playground UI。





欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0