1.简介
在本文中,我们将介绍使用无代码方法将区块链技术(特别是Hyperledger Fabric网络)集成到一个成熟的Web应用程序中。
1.1区块链和数字分类帐技术(DLT)
最近,有许多关于区块链技术发生革命性变化的预测,从银行业转向供应链乃至政府。即使你不熟悉这个术语,你也许会听说像比特币那样利用区块链技术的加密货币的兴起。区块链究竟是什么?
首先,最好理解一个称为数字分类帐技术(DLT)的更广泛的术语。DLT只是一个分散的数据库,数据由没有中央权限的计算机网络存储。Blockchain是一种特定类型的DLT,其中网络中的记录使用加密技术进行链接,并且无法更改。这有助于解决因集中权威而存在信任和效率低下问题。
有许多区块链实现,大致分为无权限或许可。无权的区块链网络基本上是公共的,所以任何人都可以参与,而被许可的区域链则用于限制私人使用。无权网络适用于加密货币等公共领域,但在企业环境和许多行业中,私有网络至关重要。
企业区块链网络通常可能跨越整个行业的多个组织。由于需要获得许可的私人网络和多个组织的参与,区块链解决方案如何获得足够的采用才能成功?这是Hyperledger的用武之地。
1.2 Hyperledger和Hyperledger Fabric
Hyperledger不是公司,也不是特定产品,而是企业用例的开源区块链项目的保护伞。由Linux基金会和250多个参与组织共同主持,这些项目分为框架和工具。框架是区块链技术的不同实现,每种技术对于不同的用例具有不同的优势。另一方面,工具是帮助管理或补充框架的实用程序。
目前最流行和最成熟的框架是Hyperledger Fabric。Fabric最初由IBM提供,正在成为企业区块链平台的事实标准,其商业实施和主要供应商(包括IBM,Oracle和SAP)的支持。
1.3 Hyperledger Fabric概念
如果您不熟悉区块链技术,那么需要学习和理解很多概念。出于此示例应用程序的目的,以下是一些用于配置区块链集成的更重要的术语。
区块链分类帐是存储在分布式网络中的所有事务和数据的日志。
对等节点是托管区块链分类帐副本的网络组件。
成员是区块链网络的组织
证书颁发机构(CA)颁发证书以识别属于组织的用户。
会员服务提供商(MSP)将证书映射到成员组织。
事务是将数据读取或写入分类帐的请求
订购服务是将事务分配到要写入分类帐的块中的节点
频道是私人通信机制,用于保持网络中成员之间的机密性。
智能合约(在Fabric中称为链代码)是区块链网络中的代码,用于查询或更新分类帐
下面的Hyperledger Fabric项目提供的图表显示了应用程序如何通过智能合约与区块链网络集成:
Hyperledger Fabric文档中提供了更多详细信息。
2.应用程序概述
为了演示区块链技术在应用程序中的结合,让我们设计一个使用Hyperledger Fabric提供的示例Fabcar网络的Joget应用程序。Fabcar样本基本上是用于学习目的的最小精简Fabric网络。
为了演示对区块链网络的读取和写入,该应用程序支持以下用例:
查询和区块链网络中所有记录的列表
查询并查看区块链网络中的特定记录
在批准过程之后将新记录写入区块链网络
使用Joget,可以开发区块链应用程序而无需编码。表单是可视化设计的,之后App Generator用于快速创建完整的应用程序。然后,通过简单地配置一组Joget Hyperledger Fabric插件,可以实现与Hyperledger Fabric区块链网络的集成。
要安装并试用最终的工作应用程序:
确保Hyperledger Fabric示例Fabcar网络已启动并正在运行。
确保Joget Enterprise Edition的实例已启动并正在运行。
下载Hyperledger Fabric Plugins JAR文件,并通过System Settings下的Manage Plugins上传下载的jar文件。
下载Joget jwa应用程序并导入它。
配置fabric_host 环境变量以指向相应的IP /主机名。
发布应用程序并从App Center访问它。
以下是应用程序的一些屏幕截图:
欢迎:主页
Fabcar列表:区块链网络的所有记录列表
Fabcar表格:查看区块链网络的特定记录
审批流程:批准创建新记录
接下来的几节提供了更详细的信息来设置示例Hyperledger Fabric网络,以及开发和配置应用程序。
3.安装并设置Hyperledger Fabric网络
首先,安装Hyperledger Fabric v1.3和Fabcar Network Sample。
以下汇总的安装步骤在Ubuntu 18.04上进行了测试。
3.1安装先决条件
(https://hyperledger-fabric.readthedocs.io/en/release-1.3/prereqs.html)
安装cURL:
sudo apt install -y curl
安装Docker和Docker Compose(在usermod命令之后注销并登录):
sudo apt install -y docker.io
sudo apt install -y
docker -compose sudo usermod -aG docker $ USER
#logout并在usermod命令后登录
安装Go:
sudo apt install -y golang
安装NodeJS:
sudo apt install -y nodejs
sudo apt install -y npm
3.2安装Hyperledger Fabric示例,二进制文件和Docker镜像
(https://hyperledger-fabric.readthedocs.io/en/release-1.3/install.html)
curl -sSL https://raw.githubusercontent.com/hyperledger/fabric/release-1.3/scripts/bootstrap.sh | bash -s 1.3.0
3.3设置样本Fabcar网络
(https://hyperledger-fabric.readthedocs.io/en/release-1.3/write_first_app.html)
cd fabric-samples/fabcar
npm install
./startFabric.sh
node enrollAdmin.js
node registerUser.js
node query.js
一旦成功安装和执行最后一个命令,你应该从区块链网络接收查询响应,即
Query has completed, checking results
Response is [{“Key”:”CAR0″, “Record”:{“colour”:”blue”,”make”:”Toyota”,”model”:”Prius”,”owner”:”Tomoko”}},{“Key”:”CAR1″, “Record”:{“colour”:”red”,”make”:”Ford”,”model”:”Mustang”,”owner”:”Brad”}},{“Key”:”CAR2″, “Record”:{“colour”:”green”,”make”:”Hyundai”,”model”:”Tucson”,”owner”:”Jin Soo”}},{“Key”:”CAR3″, “Record”:{“colour”:”yellow”,”make”:”Volkswagen”,”model”:”Passat”,”owner”:”Max”}},{“Key”:”CAR4″, “Record”:{“colour”:”black”,”make”:”Tesla”,”model”:”S”,”owner”:”Adriana”}},{“Key”:”CAR5″, “Record”:{“colour”:”purple”,”make”:”Peugeot”,”model”:”205″,”owner”:”Michel”}},{“Key”:”CAR6″, “Record”:{“colour”:”white”,”make”:”Chery”,”model”:”S22L”,”owner”:”Aarav”}},{“Key”:”CAR7″, “Record”:{“colour”:”violet”,”make”:”Fiat”,”model”:”Punto”,”owner”:”Pari”}},{“Key”:”CAR8″, “Record”:{“colour”:”indigo”,”make”:”Tata”,”model”:”Nano”,”owner”:”Valeria”}},{“Key”:”CAR9″, “Record”:{“colour”:”brown”,”make”:”Holden”,”model”:”Barina”,”owner”:”Shotaro”}}]
4.设计Joget应用程序
现在您已经启动并运行了Fabcar网络,让我们开始设计Joget应用程序,该应用程序将查询和更新区块链分类帐中的记录。Joget平台提供模块化动态插件架构以扩展功能。在这种情况下,我们将使用一套带有Joget Enterprise Edition的Hyperledger Fabric插件。
4.1设计新应用
第一步是设计一个新的Joget应用程序。在Joget App Center中,以管理员身份登录,然后单击“设计新应用程序”按钮。键入相关细节,例如
App ID:fabcar
App Name:Hyperledger Fabric Fabcar Sample
4.2设计Fabcar表单
使用Joget表单生成器,设计一个表单,其中的字段与Fabcar记录中的属性相匹配。
在这种情况下,创建ID与Fabcar记录匹配的文本字段
Key
make
model
colour
owner
单击“保存”按钮以保存表单。
4.3使用App Generator创建应用程序
保存表单后,单击Generate App按钮以使用App Generator。检查Generate Datalist,Generate CRUD和Generate Process – Approval Process的选项,然后选择Generate。
注意:App Generator是Joget Enterprise Edition功能,但您也可以在Community Edition中手动创建列表,流程和UI。
5.配置Joget Hyperledger Fabric插件
此时,已创建用于管理记录的完整应用程序以及用于创建新记录的审批流程。这些记录虽然在内部Joget数据库中,但现在我们将开始配置Hyperledger Fabric插件以直接与区块链网络集成。
5.1上传Joget Hyperledger Fabric插件
下载Hyperledger Fabric Plugins JAR文件,并通过System Settings下的Manage Plugins上传下载的jar文件。
5.2配置列表以查询Hyperledger Fabric Ledger
在应用程序中,启用快速编辑模式,以便您可以查看可编辑元素。浏览Fabcar列表并单击List的快速编辑链接以打开Datalist Builder。
切换到Source选项卡,选择Hyperledger Fabric Datalist Binder,然后单击Next。在插件配置中,键入相关详细信息。此处显示的值适用于默认的Fabcar示例网络,但将fabric_host更改为环境中正确的主机名或IP:
如果配置正确,“设计”选项卡将显示要在数据列表中使用的相应Fabcar列。添加需要显示的列,然后单击“保存”。
5.3配置表单以查看Hyperledger Fabric Ledger记录
在Fabcar列表中,单击记录上的View。单击Fabcar Form快速编辑链接以打开表单生成器。
切换到Properties选项卡,选择Hyperledger Fabric Form Binder作为Load Binder,然后单击Next。在插件配置中,键入相关详细信息。Hyperledger Fabric用户和通道值类似于之前用于datalist binder的配置。
注意:#requestParam.id#是一个请求参数哈希变量,用于表示URL中的id参数。
单击“保存”。
5.4配置更新Hyperledger Fabric Ledger的流程
在Design App> Processes中,单击Design Process以启动Process Builder。
在状态为“Approval” 的活动中,添加名为Invoke Fabric Transaction的工具。在Map Tools to Plugins页面中,选择Hyperledger FabricTool。
在插件配置中,键入相关详细信息。Hyperledger Fabric 用户和通道值类似于之前用于datalist binder的配置。
注意:#form.fabcar.field#是表示表单字段值的表单哈希变量。
6.接下来是什么
此示例用于演示使用Joget平台构建区块链应用程序而无需编码的简单性。