欢迎来到 Hyperledger Fabric教程.
在本教程中,我们将学习如何创建第一个Hyperledger应用程序以及其他重要内容,如果您是对区块链进行了深入投资并希望开始使用Hyperledger Fabric的开发人员之一.
任何企业级框架都需要专业知识才能工作。如果您是新手,您会发现自己在解决小问题上费了很多力气。这就是为什么重要的是要尽早开始并以自己的方式练习.
但为什么 超级账本面料 也不是 其他企业区块链框架?
原因是Hyperledger Fabric是一流的企业区块链框架,提供了强大的许可分布式账本技术(DLT)。它具有一些强大的功能,使其成为企业的理想选择.
您可以通过检查其受欢迎程度来衡量其受欢迎程度,该成员包括CISCO,IBM,Intel,SAP,Accenture等.
什么是Hyperledger Fabric?
Hyperledger Fabric是一个开源企业级框架。它依靠许可的分布式分类帐技术来提供急需的应用程序和解决方案。 Linux Foundation正在从事各种各样的项目,而Hyperledger Fabric就是其中之一。.
由于它是开源的,所以任何人都可以加入该项目并为该项目做出贡献。目前,有35个组织正在共同努力,使Hyperledger Fabric成为目前最好的企业框架.
Hyperledger Fabric的核心是可配置和模块化的。这意味着企业可以使用该框架无缝地工作。所有这些令人满意的功能使Hyperledger Fabric成为绝佳的选择!在撰写本文时,您可以试用Hyperledger Fabric v1.4,它具有新的功能和特性.
超级账本结构功能
Hyperledger Fabric具有五个主要功能。他们如下
- 身份管理:身份管理对于任何允许的网络都是至关重要的。这就是为什么身份管理是Hyperledger结构中的关键功能之一。通过给管理员设置适当的身份管理,企业可以确保他们使用多层权限.
- 高效的处理:Hyperledger Fabric是高效的。这是因为网络角色被分配为节点类型。通过使事务处理与承诺和订购分开进行,还可以提高效率.
- 模块化设计: Hyperledger Fabric利用模块化设计,这意味着可以轻松地将服务或其他系统集成到其中。这也意味着您可以指定共识算法,身份等.
- 隐私权和机密性: Hyperledger Fabric还提供适当的机密性和隐私性,这对于企业而言非常重要。他们提供适当的数据渠道,以确保信息不会泄漏,并且可以不惜一切代价维护机密性.
- 链码功能: Hyperledger Fabric提供链码功能,该功能使逻辑仅在调用特定类型的事务时才能被调用.
Hyperledger架构的其他关键功能包括质量代码,开源,出色的可伸缩性和效率以及行业范围内的使用.
Hyperledger Fabric教程
在开始开发应用程序之前,最好先了解Hyperledger Fabric的系统架构。通过这样做,我们可以了解其内部运作方式。然后,可以使用这些知识来开发您的第一个Hyperledger Fabric应用程序.
系统架构
核心是节点。节点彼此通信并建立网络。但是,有些程序是由区块链本身运行的。它们是chaincode。链码负责保存分类帐和状态数据,还负责事务执行.
在Hyperledger Fabric中,当交易作为操作进行交易时,chaincode最为重视。另一方面,交易需要通过背书来验证。只能提交认可的交易.
交易次数
Hyperledger Fabric上的事务可以有两种类型:
- 部署事务: 这种类型的事务负责创建带有程序参数的新链码。完成后,据说链码已“安装”在区块链上.
- 调用事务:调用事务是在以前的链码部署的上下文中执行的事务.
区块链数据结构
区块链中使用的基本数据结构是键值存储(KVS)。键主要是名称,值是blob。链码可以通过以下两个KVS操作来操纵数据结构.
- 放
- 得到
整个数据结构被视为一种状态.
分类帐
分类帐也是成功状态更改和失败尝试的顺序。它们是有序的,以便以后可以引用。同样,它们是交易的有序哈希链块。分类账按顺序包含块,而这些块又包含有序交易数组.
节点数
节点可以是网络中的任何通信实体.
客户
客户是可以代表最终用户行事的人.
同行
对等方处理分类帐的状态,并确保网络以最佳状态运行。同行可以认可同行,这有助于认可交易.
编写您的第一个Hyperledger Fabric应用程序
现在我们已经了解了Hyperledger Fabric的体系结构,现在是时候创建您的第一个应用程序了。通过遍历该应用程序,您将能够了解Fabric应用程序的工作方式。在本教程中,您将学习如何在框架内使用简单,智能合约和其他应用程序.
为了使我们的开发更加容易,我们将使用应用程序SDK来轻松引用密钥
功能,包括调用智能合约和其他查询.
开发Hyperledger Fabric应用程序时需要遵循的三个主要步骤包括:
- 设置开发环境。开发环境为您的应用程序提供了必要的网络。它也使您能够使智能合约也能正常工作.
- 了解样本智能合约。在这里,您必须阅读智能合约并了解其交易。我们将运行应用程序模拟的查询,并使用它来更新分类帐.
- 开发示例应用程序:在最后一步,您将使用智能合约创建一个示例应用程序。.
建立第一个网络
在开始使用该应用程序之前,让我们建立我们的第一个网络。首先,我们需要安装一些先决条件。这些先决条件将确保一切按预期运行.
查看他们的必备安装指南 这里.
另请查看Hyperledger Composer:构建企业区块链
您可能需要安装二进制文件,示例和docker映像。查看安装指南 这里.
安装样本后,您会发现其中包含的面料样本。它应包含在“面料样品”存储库中。在存储库中,有第一个网络样本.
要移至该目录,请使用cd命令移至该文件夹,如下所示.
cd fabric-samples /第一个网络
要运行第一个网络示例,您需要使用byfn.sh脚本。该脚本旨在与四个对等点快速启动项目。四个同行代表两个不同的组织。它还将启动容器,链码和事务。该容器将使更多的对等方加入网络.
生成网络工件
现在,您可以为网络实体生成证书和密钥。为此,您需要运行以下命令.
.byfn.sh生成
在开始该过程之前,系统将要求您确认。按Y键开始用必要的信息填充网络,包括为订购服务供电,配置等。.
供电网络
接下来,我们需要为网络供电。可以使用下面的简单命令为网络供电.
./byfn.sh向上
一旦运行命令,您将框架编译Golang链码图像。此外,关联的容器还将启动,以为新的对等方提供加入网络的方式.
默认情况下,您将看到“执行中”。那是因为Go是chaincode的默认语言。但是,这并不意味着您不能使用其他编程语言。 Chaincode还支持Node.js和Java。要更改为节点,可以使用以下命令.
.byfn.sh up -l节点
同样,您可以 更改为Java 如果你需要.
.byfn.sh up -l java
如果您希望使用多种链码语言,则需要使用订购服务,包括Raft或Kafka.
./byfn.sh up -o etcdraft
./byfn.sh up -o kafka
每次使用该命令时,您都将要求在执行该命令之前再次确认.
要进一步了解如何构建和维护您的第一个网络,请查看网络构建教程 这里.
启动网络
现在,您已经安装了示例并进入了前提条件页面,现在是时候启动网络了.
为了简单起见,我们将不使用JavaScript。另外,您需要fabcar子目录。也制作一个fabric-sample repo本地克隆.
要启动网络,您需要使用startFabric.sh Shell脚本。启动后,您将获得一个具有证书颁发机构,订购者,对等实体等的区块链网络。当使用fabcar子目录时,将自动安装并启动FabCar智能合约.
启动网络的命令如下:
./startFabric.sh javascript
安装应用程序
现在,该安装该应用程序了。但是,在此之前,我们需要安装依赖项.
npm安装
上面的命令将开始安装在 package.json
在程序包中,将要启动的重要类包括
- 光纤网络类→启用交易,身份,钱包
- fabric-ca-client→将用户注册到其各自的证书颁发机构
完成后,我们将移至fabcar / javascript目录。让我们看一下下面的目录文件:
- encrollAdmin.js
- node_modules
- package.json
- registerUser.js
- invoke.js
- package-lock.json
- query.js
- 钱包
与证书颁发机构进行通信
现在,我们拥有一个正在运行的网络,让我们学习如何与证书颁发机构进行通信.
证书签名请求(CSR)
我们的首要任务是经历企业社会责任的过程。在此过程中, 行政 与证书颁发机构联系以生成公用,专用和X.509证书。用于执行的程序是enroll.js
要注册管理员,请使用以下命令.
节点enrollAdmin.js
现在,所有信息都存储在 钱包 目录.
如果要注册另一个用户,则需要遵循相同的过程。让我们尝试注册另一个用户- 新用户
节点reisterUser.js
这将注册新用户并将其凭据与管理员一起存储在钱包中.
查询分类帐
由于区块链网络具有分类帐的副本,因此您可以对其进行查询以查找信息。分类帐是只读的,这就是为什么只能执行读取查询的原因。为了更好地理解,让我们看看下面的图片.
来源:Hyperledger Fabric文档
分类帐中的值也保留在 世界国家. 这是本教程前面讨论的密钥对值。因此,查询可以显示键中的数据。好消息是您可以使用CouchDB之类的数据库。可以将世界状态配置为使用关系数据库.
要获取分类帐上所有汽车的列表,请运行以下命令,
节点query.js
为了更好地了解查询的工作原理,您可能需要打开 query.js 文件并通过它。让我们在下面浏览一下.
const {FileSystemWallet,Gateway} = require(‘fabric-network’);
在上一行中,建立了网络连接
然后,创建一个网关以供应用程序连接。使用下面的行来完成.
const gateway =新的Gateway();
等候gateway.connect(ccp,{钱包,身份:’user1′});
这 ccp 用于识别用户身份和相关的钱包信息.
由于Hyperledger Fabric网络运行多个通道,因此连接到应用程序的特定通道很重要.
const contract = network.getContract(’fabcar’);
了解智能合约
为了更好地了解智能合约,让我们仔细研究一下。它还将展示通过它进行的交易.
要访问它,您需要转到子目录 链码/ fabcar / javascript / lib. 到达那里后,在编辑器中打开fabcar.js.
在那里,您将看到使用Contract类来定义智能合约。此外,在智能合约中将定义明确的事务,包括queryCar,queryAllCars,initLedger,changeCarOwner和createCar.
事务如下所示:
异步queryCar(ctx,carNumber){…}
让我们看一下queryCar交易.
异步queryAllCars(ctx){
const startKey =’CAR0′;
const endKey =’CAR999′;
const iterator =等待ctx.stub.getStateByRange(startKey,endKey);
来源:Hyperledger Fabric文档
更新分类帐:购买新车
最后一步是用新信息更新分类帐。在这种情况下,让我们使用invoke.js创建一辆新车。您需要打开文件并向其中添加以下命令.
等待contract.submitTransaction(’createCar’,’CAR12’,’CarBrand’,’Model’,’Color’,’Owner’);
在上面的代码中,该应用程序调用createCar智能合约交易。作为回报,它将使用其属性(包括CarBrand,Color,Model和Owner)创建汽车。.
现在,运行以下代码将其推送到分类帐
节点invoke.js
这将导致分类帐更新,并且您将获得成功的输出.
结论
这导致我们结束本教程。在本教程中,我们的目标是仅覆盖表面。如果您想深入研究,可以查看他们的官方Hyperledger Fabric文档,其中详细讨论了所有内容.
那么,您将使用Hyperledger Fabric来构建企业区块链吗?在下面发表评论,让我们知道.