部署InfoChain

部署 InfoChain 服务有两种选择:下载并运行 InfoChain 虚拟机,或通过提供的脚本安装 InfoChain 服务。

两个选项都需要至少 4GB RAM、20GB 可用磁盘空间。 请为 TCP 协议打开防火墙端口 7050、7051、7053、7054、8051、8053、8054、15790-15794、15799,为 UDP 协议打开端口 9999。

请注意调整VirtualBox网络设置,确保虚拟机可以连接互联网。 每台运行InfoChain的计算机都作为InfoChain组中的一个节点,这意味着它会不断地与其他节点保持心跳和数据同步。 请确保主机始终处于开机状态,并关闭睡眠设置,以免后端心跳或数据同步中断,影响整个InfoChain团队的工作。

1. 下载并运行 InfoChain 虚拟机

用户可以从菜单“资源”>“下载”下载虚拟机。 解压后,虚拟机就可以通过VirtualBox运行了。 如果您不熟悉该工具,请访问 www.virtualbox.org 了解并下载 VitualBox。

虚拟机的默认用户名是“user”,密码是“password”。 为了确保隐私和安全,请重置密码并重新启动虚拟机。

下载并启动 InfoChain 虚拟机后,InfoChain REST 服务器应自动启动。 可以通过命令验证:

ps-ef| grep REST| grep -v 'grep'

如果有输出,则表示REST服务器正在工作; 否则,您需要通过以下命令手动启动 REST 服务器:

source ~/.profile

cd ~/node

./REST &

2. 通过提供的脚本安装 InfoChain 服务器

此选项需要操作系统 Ubuntu 系列。

首先,下载安装脚本:

curl -k -O https://infochain.link/download/InstallInfoChain.sh

其次,设置脚本权限:

chmod +x ./installInfoChain.sh

接下来,运行此脚本。 如果安装过程中没有遇到错误,则会在$HOME文件夹中额外创建一个文件夹 node,将当前目录更改为node文件夹,执行

./REST &

启动 InfoChain 服务。

1. 配置群组网络

单击导航栏中的第一个链接,当未配置群组网络未启用时,您将看到如图 1A 的页面。

Figure 1A. 群组网络未启动时的页面

这里可以看到群组网络的一些属性:

GroupName: InfoChain群组的名称和ID

Orderer IP: 群组创建者的IP

Your IP: 当前用户在群组内的IP

如果后台没有运行组网络,则此页面可见两个按钮。

Restart 按钮: 用来重启停止的群组虚拟设备.

New 按钮: 用来创建新的群组.

现在单击“New”按钮,在弹出窗口中输入组名称。 系统会检查该组名是否已注册,然后决定该节点是否可以加入该组,或者应该创建一个新组。

如果群组名称尚未注册,则表示您希望创建一个新的InfoChain群组,弹出窗口如下图所示。

Figure 1B. 创建新的群组网络

Figure 1C. 加入现有的群组网络

请一一填写每项必填项目。

GroupName: InfoChain群组的唯一名称

IP: 该节点用于与 InfoChain 组内其他节点通信的 IP4 地址。 如果要手动设置IP,请确保第一个字节为10,InfoChain组使用10.XX.XX.XX作为P2P网络IP。

API Key: 仅在创建新组时需要。 注册用户可以通过菜单“资源”>“API Key”申请一个 API Key。

Password: 用于建立P2P网络的组网密码。 InfoChain群组创建者应记录该密码,并与伙伴共享群组名称和密码,以便其伙伴可以加入该群组。

单击“Create”或“Join”按钮,等待几秒钟,等待群组网络虚拟设备完全构建完成。

Figure 1D. 群组网络运行中

当组网工作时,该页面可见两个按钮。

Stop 按钮: 用来删除群组网络虚拟设备,并断开与群组网络的连接。 该虚拟设备可以重新启动。

Remove 按钮: 删除群组网络虚拟设备, 并断开与群组网络的连接,删除相关配置。 该虚拟设备无法重新启动。

群组网络,也可以通过RESTReq命令进行配置。

创建群组网络:

RESTReq Func:CreateGroupNet GroupName:[你的群组名称] ApiKey:[你的 API 密钥] Password:[群组网络密码]

加入群组网络:

RESTReq Func:JoinGroupNet GroupName:[你的群组名称] Password:[群组网络密码]

重启群组网络:

RESTReq Func:RestartGroupNet

停止群组网络:

RESTReq Func:StopGroupNet

删除群组网络:

RESTReq Func:RemoveGroupNet

检查群组网络状态:

RESTReq Func:CheckGroupNetStatus

否则,该节点将尝试加入现有的 InfoChain 群组。

InfoChain REST 服务器启动后,必须对其进行正确配置才能作为 InfoChain 节点工作。

操作员可以通过浏览器或命令行终端配置InfoChain节点。

对于通过浏览器进行配置,在虚拟机中打开chromium-browser,默认网站已设置为InfoChain配置平台。 如果浏览器没有自动导航到InfoChain配置平台,请手动导航到http://localhost。 在下面的介绍中,我们假设操作员默认通过浏览器进行配置。

对于通过命令行进行配置,InfoChain提供了RESTReq工具,稍后也会介绍该工具。

一步步配置 InfoChain

2. 配置 Fabric 网络

群组网络配置完成后,该节点已加入某一InfoChain群组域。下一步是建立或加入超级账本Fabric网络,以便该节点可以在Fabric网络内同步数据。

现在配置Fabric设置。单击导航栏的第二个链接。

当该节点上未运行 Fabric 网络时,此页面中有三个按钮。

Restart 按钮: 用来重新启动冻结的Fabric网络

Create 按钮: 用来创建一个新的Fabric网络; 或加入现有的Fabric网络

Restore 按钮: 用来将备份镜像恢复到工作路径,并作为工作节点启动。

当fabric网络运行时,InfoChain会每分钟备份一次fabric镜像。 如果工作镜像因意外损坏,恢复操作可以帮助用户恢复该节点中的数据。

如上图所示,只有一个参数:组织,需要用户设置。

Organization 是InfoChain内部用于验证和背书数据块的单位。 用户可以输入新的组织名称,在InfoChain组下创建新的组织,也可以通过单击下拉列表选择现有的组织,作为该组织的成员。

注意:当用户决定为此节点创建新的组织时,该节点不会自动接受数据添加/更新请求,直到群组创建者将该组织添加到策略列表中。

单击“Create”按钮后,将花费几分钟时间来创建或加入结构网络。

Figure 2B. Fabric 网络普通节点运行中

Figure 2C. Fabric 网络领导节点运行中

普通节点: 该节点由加入InfoChain群组的用户创建。 该节点参与传输到InfoChain的数据流的同步和验证工作。

领导节点: 该结构节点由 InfoChain 群组创建者创建。 该节点的职责不仅是同步和验证传输到InfoChain的数据流,还对要插入InfoChain的数据块进行排序,并记录Fabric网络连接状态。

创建或加入Fabric网络后,用户可以监控与Fabric网络工作相关的参数,例如组织名称、组织的peer序号、数据块高度、链码版本、本群组中运行的节点列表等。

Fabric网络运行时,该页面左下角有两个按钮。

Stop 按钮: 用来停止该Fabric节点。 如果该节点是领导节点,则停止操作将导致整个Fabric网络停止工作。 如果该节点是普通节点,停止操作将导致该节点与Fabric网络断开连接,但Fabric网络中的其他节点仍然可以工作。

Remove 按钮: 用来删除此结构节点和配置。 如果该节点是领导节点,则删除操作将导致整个Fabric网络停止并被删除,Fabric网络无法重新启动,Fabric网络中存储的数据也将丢失,除非启用Restore操作。 因此,群组创建者应避免在不必要的情况下使用此操作。 如果该节点是普通节点,删除操作将导致该节点与Fabric网络断开连接,并且其配置也会被删除。

群组创建者有责任保证群组的稳定性,因此他需要:

I. 维护Fabric 网路的Policy

Policy: 这是一组允许在 InfoChain 中添加和修改数据的组织集合。 如果某个组织尚未被选入 Fabric 策略列表,则该组织的成员只能查询数据。

单击群组网络创建者的Fabric配置页面中Policy项右侧的编辑图标,群组网络创建者可以决定将哪些组织选择到策略列表中。

单击弹出窗口中的“Update”按钮,将更改Fabirc策略(Policy)和链码版本。 这个变更请求将被一一发送到该组网络内的每个节点,因此这个操作可能需要半分钟到几分钟。

II. 停止或删除不活动或不安全的节点

群组创建者可以通过单击现有节点项右侧的“停止”或“删除”图标来强制停止或从组中删除节点。

如果群组创建者决定停止某个节点,则领导节点将向该节点发送命令以远程停止该节点并将其设置为非活动状态。

如果群组创建者决定删除一个节点,领导节点将向该节点发送命令,远程删除它,将其从监控节点列表中删除,并在必要时更改结构网络结构。

Fabric 网络,也可以通过 RESTReq 命令进行配置。

创建结构网络:

RESTReq Func:StartBlockChainNet OrgName:[你的组织名称]

重新启动结构网络:

RESTReq Func:RestartFabricNet

停止此结构网络:

RESTReq Func:StopBlockChainNet

删除此结构网络:

RESTReq Func:RemoveBlockChainNet

恢复此结构网络:

RESTReq Func:RestoreBlockChainNet

从领导节点停止普通节点:

RESTReq Func:StopNode NodeName:[普通节点名称]

从领导节点中删除一个普通节点:

RESTReq Func:RemoveNode NodeName:[普通节点名称]

检查Fabric网络状态:

RESTReq Func:CheckFabricNetStaus

Figure 2D. 编辑fabric网络策略(Policy)

Figure 2A. Fabric 网路尚未启动

3. 配置节点网络

配置完群组网络和Fabric网络后,该节点已成为InfoChain群组的一部分,数据流将同步到该节点。 但终端用户仍然无法访问该节点。 为了允许外部用户访问 InfoChain 组,该组中至少有一个节点必须定义其节点网络。 换句话说,如果一个节点定义了自己的节点网络,那么终端用户就可以通过该节点访问区块链数据。

单击导航栏的第三个链接。

Figure 3A. 节点网络尚未运行

这里可以看到群组网络的一些属性:

Node Name: 节点网络的唯一名称。 这是节点网络的身份ID。

Node IP: 该节点组的服务器IP。

当节点网络未工作时,该页面有两个按钮。

Restart 按钮: 用来重新启动已配置的节点网络

New 按钮: 用来创建一个新的节点网络虚拟设备,通过该节点网络,终端用户可以访问InfoChain中存储的数据。

单击“New”按钮,在弹出窗口中配置节点网络设置。

Figure 3B. 创建节点网络

输入该节点网络的名称、IP 和密码,然后单击“Create”按钮。 创建者需要记住节点网路的名称和密码,然后共享给终端用户。

Figure 3C. 节点网络运行中

当节点网络工作时,该页面也有两个按钮。

Stop 按钮: 用来停止节点网络虚拟设备

Remove 按钮: 用来删除节点网络虚拟设备和配置,该节点网络无法重启

节点网络,也可以通过 RESTReq 命令进行配置。

创建节点网络:

RESTReq Func:CreateNodeNet NodeName:[你的节点名称] Password:[你的节点网络密码]

重启节点网络:

RESTReq Func:RestartNodeNet

停止节点网络:

RESTReq Func:StopNodeNet

删除节点网络:

RESTReq Func:RemoveNodeNet

检查节点网络状态:

RESTReq Func:CheckNodeNetStatus

4. 监管区块链数据

单击导航栏中的第四个链接。 在此页面中,节点创建者可以监控存储在区块链中的数据,甚至是已设置为私有的记录。

Figure 4A. 区块链数据监管页

InfoChain 存储两类数据: 用户数据普通记录.

用户数据: 用户信息用于验证操作者的权限

普通记录: 用户根据业务逻辑定义的信息

点击“User Data”按钮可检索用户数据,点击“Other Record”按钮可检索普通记录。

节点创建者默认可以查看公共记录。 要查看所有用户信息和非公开公共记录,创建者需要单击页面左上角的注册或登录图标,以管理员身份登录或注册。 每个InfoChain群组内最多可注册3个管理员账户。

点击+按钮,添加更多条件进行搜索。

Figure 4B. 添加更多搜索条件

点击 Search 按钮即可查看过滤后的记录

Figure 4C. 显示过滤后的公开记录

要搜索私人记录或用户数据,需要选中“Search As Admin”复选框

Figure 4D. 显示过滤后的私有记录

过滤记录项的右侧有一个“历史记录”图标。 点击该图标,将显示该记录的每一次变更历史的详细信息。

Figure 4E. 记录变更历史列表

区块链数据也可以通过 RESTReq 命令进行监控。

命令格式为:

RESTReq Func:[InfoChain 接口函数] RequestDeliver:True [key1]:[参数 1] [key2]:[参数 2] ...

例如:

RESTReq Func:QueryRecord RequestDeliver:True 用户名:admin1 用户类型:Admin 记录类型:受保护的密码:12345678

该命令意味着名为admin1(密码:12345678)的管理员尝试找出所有受保护的记录。

InfoChain接口请访问“InfoChain接口”部分。