本篇文章给大家谈谈深入解析:Hyperledger Fabric 5.2版本核心特性与应用,以及对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。
建立基本网络后,您将担任MagnetoCorp 员工Isabella 的代表角色,代表公司发行商业票据。然后,您将转变为DigiBank 员工Balaji 的角色,他将购买这张商业票据,持有一段时间,然后通过MagnetoCorp 赎回,以赚取少量利润。
您将在不同的组织中分别扮演开发人员、最终用户和管理员的角色。以下步骤旨在帮助您了解作为两个不同组织独立工作,但根据Hyperledger Fabric 网络中双方商定的规则进行协作。
设置网络并下载示例创建网络了解智能合约的结构作为组织MagnetoCorp 安装和实例化智能合约了解MagnetoCorp 应用程序的结构,包括其依赖项配置和使用钱包和身份运行MagnetoCorp 应用程序以发布商业服务论文了解章节两个组织Digibank 如何在其应用程序中使用智能合约作为Digibank,运行用于购买和兑换商业票据的应用程序本教程已在MacOS 和Ubuntu 上进行了测试,并且适用于其他Linux 发行版。 Windows 版本正在开发中。
1. 先决条件
在开始之前,您必须安装本教程所需的一些必备技术。我们已将这些限制降至最低,以便您可以快速开始。
您必须安装以下技术:
节点8.9.0 或更高版本。 Node 是一个JavaScript 运行时,可用于运行应用程序和智能合约。建议您使用Node.js 的长期支持(LTS) 版本。在这里安装节点。 Docker 18.06 或更高版本。 Docker 帮助开发人员和管理员创建用于构建和运行应用程序和智能合约的标准环境。 Hyperledger Fabric 作为一组Docker 镜像提供,PaperNet 智能合约将在Docker 容器中运行。在这里安装Docker。您可能会发现安装以下技术很有帮助:
源代码编辑器,例如Visual Studio Code1.28或更高版本。 VS Code 将帮助您开发和测试您的应用程序和智能合约。在这里安装VS Code。有许多很棒的代码编辑器可用,包括Atom、Sublime Text 和Brackets。
随着您在应用程序和智能合约开发方面的经验越来越丰富,安装以下技术可能会有所帮助。首次运行本教程时无需安装它们:
节点版本管理器。 NVM(节点版本管理器)可帮助您轻松在不同版本的Node 之间切换- 如果您同时处理多个项目,这非常有用。在这里安装NVM。
2. 下载示例
商业票据教程是存储在名为Fabric-samples 的公共GitHub 存储库中的Hyperledger Fabric 示例之一。在计算机上运行本教程时,您的第一个任务是下载Fabric-samples 存储库。
将fabric-samples GitHub 存储库下载到您的本地计算机。
GOPATH 是否已设置?
$env
.
GOPATH=/用户/用户名/go
NVM_BIN=/Users/用户名/.nvm/versions/node/v8.11.2/bin
NVM_IOJS_ORG_MIRROR=https://iojs.org/dist
.如果未设置$GOPATH,请使用以下指令。
现在您可以创建一个相对于$GOPATH 的目录,其中将安装Fabric-samples:
$ mkdir -p $GOPATH/src/github.com/hyperledger/
$ cd $GOPATH/src/github.com/hyperledger/使用git clone 命令将Fabric-samples 存储库复制到以下位置:
$ git clone https://github.com/hyperledger/fabric-samples.git 随时查看fabric-samples的目录结构:
$ cd 面料样品
$ls
CODE_OF_CONDUCT.md 平衡传输结构-ca
CONTRIBUTING.md 基本网络第一网络
Jenkinsfile 链码高吞吐量
许可chaincode-docker-devmode 脚本
MAINTAINERS.md 商业论文README.md
fabcar 请注意商业票据目录,这是我们的示例所在的目录!
您现在已经完成了教程的第一阶段!当您继续操作时,您将为不同的用户和组件打开多个命令窗口。例如:
代表Isabella 和Balaji 运行应用程序,他们将相互进行商业票据交易代表MagnetoCorp 和DigiBank 的管理员发出命令,包括安装和实例化智能合约显示对等节点、交易排序器和CA 日志输出显式在特定命令窗口中运行命令时的说明,例如:
(isabella)$ls 表示您应该在Isabella 的窗口中运行ls 命令。
3. 创建网络
本教程当前使用基本网络。它将很快更新为更好地反映PaperNet 多组织结构的配置。目前,网络足以向您展示如何开发应用程序和智能合约。
imageHyperledger Fabric 基本网络包括对等节点及其账本数据库、交易排序器和证书颁发机构(CA)。这些组件中的每一个都作为Docker 容器运行。
对等节点、账本、交易排序器和CA 都在自己的Docker 容器中运行。在生产环境中,组织通常使用与其他系统共享的现有CA。它们并非特定于Fabric 网络。
您可以使用fabric-samplesbasic-network 目录中包含的命令和配置来管理基本网络。让我们使用start.sh shell 脚本在本地计算机上启动网络:
$ cd 织物样本/基本网络
$ sudo ./start.sh
docker-compose -f docker-compose.yml up -d ca.example.com orderer.example.com peer0.org1.example.com couchdb
使用默认驱动程序创建网络“net_basic”
拉取ca.example.com (hyperledger/fabric-ca:).
latest: 从hyperledger/fabric-ca 拉取
3b37166ec614: 拉取完成
504facff238f: 拉动完成
(.)
拉取orderer.example.com (hyperledger/fabric-orderer:).
latest: 从hyperledger/fabric-orderer 中拉取
3b37166ec614: 已存在
504facff238f: 已存在
(.)
拉动couchdb (hyperledger/fabric-couchdb:).
latest: 从hyperledger/fabric-couchdb 中拉取
3b37166ec614: 已存在
504facff238f: 已存在
(.)
拉取peer0.org1.example.com (hyperledger/fabric-peer:).
latest: 从hyperledger/fabric-peer 拉取
3b37166ec614: 已存在
504facff238f: 已存在
(.)
创建orderer.example.com . 完成
创建couchdb .完成
创建ca.example.com . 完成
创建peer0.org1.example.com .完成
(.)
2018-11-07 13:47:31.634 UTC [channelCmd] InitCmdFactory -INFO 001 背书者和排序者连接已初始化
2018-11-07 13:47:31.730 UTC [channelCmd]executeJoin -INFO 002 成功提交加入频道的提案请注意docker-compose -f docker-compose.yml up -d ca.example.com . 命令如何从DockerHub 中提取四个Hyperledger Fabric 容器镜像并启动它们。这些容器具有这些Hyperledger Fabric 组件的最新版本的软件。欢迎来到basic-network 目录- 我们将在本教程中使用其中的大部分内容。
您可以使用docker ps 命令列出运行基本网络组件的Docker 容器:
$ sudo docker ps
容器ID 图像命令创建状态端口名称
ada3d078989b hyperledger/fabric-peer "对等节点启动" 大约一分钟前向上大约一分钟0.0.0.0:7051-7051/tcp, 0.0.0.0:7053-7053/tcp peer0.org1.example.com
1fa1fd107bfb hyperledger/fabric-orderer "orderer" 大约一分钟前Up 大约一分钟0.0.0.0:7050-7050/tcp orderer.example.com
53fe614274f7 hyperledger/fabric-couchdb "tini -- /docker-ent." 大约一分钟前Up 大约一分钟4369/tcp, 9100/tcp, 0.0.0.0:5984-5984/tcp couchdb
469201085a20 hyperledger/fabric-ca "sh -c "fabric-ca-se…" 大约一分钟前Up 大约一分钟0.0.0.0:7054-7054/tcp ca.example.com 看看是否可以将这些容器映射到底层网络(您可能需要水平滚动才能找到信息):
对等节点peer0.org1.example.com 正在容器ada3d078989b 中运行。交易排序者orderer.example.com 正在容器1fa1fd107bfb 中运行。 CouchDB 数据库运行在容器53fe614274f7 中。数据库couchdbCAca.example.com 正在容器469201085a20 中运行。这些容器就形成了。创建了一个名为net_basic 的docker 网络。可以使用docker network命令查看网络:
$ sudo docker 网络检查net_basic
{
"名称": "net_basic",
"id": "62e9d37d00a0eda6c6301a76022c695f8e01258edaba6f65e876166164466ee5",
"创建": "2018-11-07T13:46:30.4992927Z",
"容器": {
"1fa1fd107bfbe61522e4a26a57c2178d82b2918d5d423e7ee626c79b8a233624": {
"名称": "orderer.example.com",
"IPv4地址": "172.20.0.4/16",
},
"469201085a20b6a8f476d1ac993abce3103e59e3a23b9125032b77b02b715f2c": {
"名称": "ca.example.com",
"IPv4地址": "172.20.0.2/16",
},
"53fe614274f7a40392210f980b53b421e242484dd3deac52bbfe49cb636ce720": {
"名称": "couchdb",
"IPv4地址": "172.20.0.3/16",
},
"ada3d078989b568c6e060fa7bf62301b4bf55bed8ac1c938d514c81c42d8727a": {
"名称": "peer0.org1.example.com",
"IPv4地址": "172.20.0.5/16",
}
},
"标签": {}
}了解这四个容器如何成为Docker 网络的一部分并使用不同的IP 地址。 (为了清楚起见,我们将打印缩写。)
回顾一下:您已从GitHub 下载了Hyperledger Fabric 示例存储库,并在本地计算机上运行了基本网络。现在,让我们扮演MagnetoCorp 的角色,他想要买卖商业票据。
4. 担任 MagnetoCorp 角色
要监控PaperNet 的MagnetoCorp 组件,管理员可以使用logspout 工具查看一组Docker 容器的聚合输出。它将不同的输出流收集到一个位置,从而可以轻松地从单个窗口查看正在发生的情况。例如,这对于安装智能合约的管理员或调用智能合约的开发人员非常有帮助。
现在,让我们以MagnetoCorp 管理员的身份监控PaperNet。在fabric-samples目录中打开一个新窗口,找到并运行monitordocker.sh脚本,为与docker网络net_basic关联的PaperNet docker容器启动logspout工具:
(magnetocorp 管理员)$ cd 商业票据/organization/magnetocorp/configuration/cli/
(magnetocorp 管理员)$ sudo ./monitordocker.sh net_basic
.
latest: 从gliderlabs/logspout 拉取
4fe2ade4980c: 拉完成
deca452f519: 拉完成
(.)
开始监控网络net_basic 上的所有容器
b7f3586e5d0233de5a454df369b8eadab0613886fc9877529587345fc01a3582请注意,如果Monitordocker.sh 中的默认端口已在使用中,则可以将端口号传递给上述命令。
(magnetocorp admin)$ ./monitordocker.sh net_basic 此窗口现在将显示docker 容器的输出,因此让我们启动另一个终端窗口,该窗口将允许MagnetoCorp 管理员与网络交互。
imageMagnetoCorp 管理员通过Docker 容器与网络交互。
为了与PaperNet 交互,MagnetoCorp 管理员需要使用Hyperledger Fabricpeer 命令。方便的是,这些都预先构建在hyperledger/fabric-toolsdocker 镜像中。
让我们使用docker-compose 命令为管理员启动MagnetoCorp 特定的Docker 容器:
(magnetocorp 管理员)$ cd 商业票据/organization/magnetocorp/configuration/cli/
(magnetocorp 管理员)$ sudo docker-compose -f docker-compose.yml up -d cliMagnetoCorp
拉cliMagnetoCorp (hyperledger/fabric-tools:).
latest: 从hyperledger/fabric-tools 中提取
3b37166ec614: 已存在
(.)
摘要: sha256:058cff3b378c1f3ebe35d56deb7bf33171bf19b327d91b452991509b8e9c7870
Status: 已下载hyperledger/fabric-tools:latest 的较新映像
创建cliMagnetoCorp . 完成再次,了解如何从Docker Hub 检索hyperledger/fabric-toolsdocker 映像并将其添加到网络:
(magnetocorp 管理员)$ docker ps
容器ID 图像命令创建状态端口名称
562a88b25149 hyperledger/fabric-tools "/bin/bash" 大约一分钟前大约一分钟cliMagnetoCorp
b7f3586e5d02 gliderlabs/logspout "/bin/logspout" 7 分钟前Up 7 分钟127.0.0.1:8000-80/tcp logspout
ada3d078989b hyperledger/fabric-peer "对等节点启动" 29 分钟前Up 29 分钟0.0.0.0:7051-7051/tcp, 0.0.0.0:7053-7053/tcp peer0.org1.example.com
1fa1fd107bfb hyperledger/fabric-orderer "orderer" 29 分钟前Up 29 分钟0.0.0.0:7050-7050/tcp orderer.example.com
53fe614274f7 hyperledger/fabric-couchdb "tini -- /docker-ent." 29 分钟前Up 29 分钟
tes 4369/tcp, 9100/tcp, 0.0.0.0:5984->5984/tcp couchdb 469201085a20 hyperledger/fabric-ca "sh -c "fabric-ca-se…" 29 minutes ago Up 29 minutes 0.0.0.0:7054->7054/tcp ca.example.comMagnetoCorp 管理员将使用容器562a88b25149中的命令行与 PaperNet 进行交互。还要注意日志记录容器b7f3586e5d02;这是为monitordocker.sh命令捕获所有其他 docker 容器的输出。 现在,让我们使用此命令行以 MagnetoCorp 管理员的身份与 PaperNet 进行交互。5. 智能合约
发行 (issue),购买 (buy) 和赎回 (redeem) 是 PaperNet 智能合约的三个核心功能。应用程序使用它来提交交易,这些交易相应地在账本上发行,购买和赎回商业票据。我们的下一个任务是检查智能合约。 打开一个新的终端窗口,代表 MagnetoCorp 开发人员,然后转到包含 MagnetoCorp 智能合约副本的目录,以便使用你选择的编辑器进行查 (本教程中的 VS 代码): (magnetocorp developer)$ cd commercial-paper/organization/magnetocorp/contract (magnetocorp developer)$ ls .在文件夹的lib目录中,你将看到papercontract.js文件 - 该文件包含商业票据智能合约! image一个示例代码编辑器,在papercontract.js中显示商业票据智能合约。 papercontract.js是一个 JavaScript 程序,旨在在 node.js 环境中运行。请注意以下关键程序行: const { Contract, Context } = require("fabric-contract-api"); 该声明将智能合约广泛使用的两个关键 Hyperledger Fabric 类纳入了范围 -Contract和Context。你可以在fabric-shimJSDOCS中了解有关这些类的更多信息。 class CommercialPaperContract extends Contract { 这基于内置的 FabricContract类定义了智能合约类CommercialPaperContract。在此类中定义了实现发行 (issue),购买 (buy) 和赎回 (redeem) 商业票据的关键交易的方法。 async issue(ctx, issuer, paperNumber, issueDateTime, maturityDateTime...) { 此方法为 PaperNet 定义了商业票据发行 (issue) 交易。传递给此方法的参数将用于创建新的商业票据。 在智能合约中找到并检查购买 (buy) 和赎回 (redeem) 交易。 let paper = CommercialPaper.createInstance(issuer, paperNumber, issueDateTime...); 在发行 (issue) 交易中,此语句使用带有提供的交易输入的CommercialPaper类在内存中创建新的商业票据。检查购买 (buy) 和赎回 (redeem) 交易,以了解它们如何类似地使用此类。 await ctx.paperList.addPaper(paper); 该语句使用ctx.paperList将新的商业票据添加到帐本中,ctx.paperList是在智能合约上下文CommercialPaperContext初始化时创建的PaperList类的实例。再次,检查购买 (buy) 和赎回 (redeem) 方法,以了解它们如何使用此类。 return paper.toBuffer(); 该语句返回一个二进制缓冲区作为发行 (issue) 交易的响应,由智能合约的调用者进行处理。 随时检查contract目录中的其他文件,以了解智能合约的工作原理,并详细阅读智能合约主题中papercontract.js的设计方式。6. 安装合约
在应用程序可以调用papercontract之前,必须将它安装到 PaperNet 中的相应对端节点上。MagnetoCorp 和 DigiBank 管理员能够将papercontract安装到他们各自具有权限的对端节点上。 imageMagnetoCorp 管理员将papercontract的副本安装到 MagnetoCorp 对端节点。 智能合约是应用程序开发的重点,并且包含在称为链码的 Hyperledger Fabric 构件中。可以在单个链码中定义一个或多个智能合约,安装链码将允许 PaperNet 中的不同组织使用它们。这意味着只有管理员才需要担心链码。其他人都可以根据智能合约进行思考。 MagnetoCorp 管理员使用peer chaincode install命令将papercontract智能合约从其本地计算机的文件系统复制到目标对端节点 Docker 容器内的文件系统。一旦将智能合约安装到对端节点并在通道上实例化,便可以由应用程序调用papercontract,并通过putState()和getState()Fabric API与账本数据库进行交互。检查ledger-apistatelist.js中的StateList类如何使用这些 API。 现在,以 MagnetoCorp 管理员的身份安装papercontract。在 MagnetoCorp 管理员的命令窗口中,使用docker exec命令在cliMagnetCorp容器中运行peer chaincode install命令: (magnetocorp admin)$ sudo docker exec cliMagnetoCorp peer chaincode install -n papercontract -v 0 -p /opt/gopath/src/github.com/contract -l node 2018-11-07 14:21:48.400 UTC [chaincodeCmd] checkChaincodeCmdParams ->INFO 001 Using default escc 2018-11-07 14:21:48.400 UTC [chaincodeCmd] checkChaincodeCmdParams ->INFO 002 Using default vscc 2018-11-07 14:21:48.466 UTC [chaincodeCmd] install ->INFO 003 Installed remotely response:好了,关于深入解析:Hyperledger Fabric 5.2版本核心特性与应用和的问题到这里结束啦,希望可以解决您的问题哈!
【深入解析:Hyperledger Fabric 5.2版本核心特性与应用】相关文章:
2.米颠拜石
3.王羲之临池学书
8.郑板桥轶事十则
用户评论
这个Hyperledger Fabric 好有科技感
有20位网友表示赞同!
一直想了解区块链技术,Fabric 这块看起来不错
有19位网友表示赞同!
学习一下 Fabric 能涨点干货吗?
有15位网友表示赞同!
5.2 版本更新了什么功能呢?
有12位网友表示赞同!
想问问 Fabric 应用场景比较多吗?
有9位网友表示赞同!
之前听说过Fabric,但一直没认真了解过
有6位网友表示赞同!
区块链平台这么多,Fabric 为什么要选它?
有6位网友表示赞同!
做项目方便使用区块链吗?Fabric 是一个很好的选择吗?
有5位网友表示赞同!
对编程有一定基础的,可以直接上手 Fabric 吗?
有7位网友表示赞同!
Fabric 的安全性怎么样?可以信任吗?
有20位网友表示赞同!
听说Fabric 在金融行业应用比较广泛吧?
有5位网友表示赞同!
有谁在用 Fabric 开发项目的吗?能分享一下经验吗?
有10位网友表示赞同!
学习Fabric 有哪些合适的资源推荐?
有11位网友表示赞同!
Fabric 的成本怎么样?
有17位网友表示赞同!
Fabric 很难学吗?
有17位网友表示赞同!
将来区块链的发展趋势如何?Fabric 会越来越重要吗?
有19位网友表示赞同!
在使用 Fabric 时可能会遇到的常见问题都有哪些?
有19位网友表示赞同!
Fabric 和其他的区块链平台有什么区别?哪个更好用?
有19位网友表示赞同!
Fabric 的未来发展方向是什么?
有6位网友表示赞同!