在区块链平台上从事商业案例
前一章探讨了 Hyperledger 的体系结构,并向您展示了如何组装一个基于 Hyperledger 的业务网络示例。它解释了以创始人为基础和以财团为基础的商业网络。它举例说明了业务网络组件、向渠道添加对等点,以及使用链码和智能合同。它还涵盖了身份、安全性、隐私、会员服务、渠道、分类帐和交易流。在这一章中,我们将学习如何根据甲骨文区块链平台 ( OBP )的构造来设计解决方案。本章有两个部分:第一部分着重于定义一个围绕证书颁发的用例,并在区块链网络上与可信方共享证书。第二部分涵盖了区块链即服务 ( BaaS )平台,该平台为实现区块链技术的潜力提供了一个有效、高效和经济的途径。
BaaS 是区块链采用的催化剂。BaaS 提供商确保您的区块链网络的安装和维护,让您的企业和 IT 专注于 chaincode 和 dApps。整个区块链生态系统将由云服务提供商管理、维护和支持。许多顶级供应商,如甲骨文,都有面向 BaaS 的托管平台即服务 ( PaaS )产品,因为 BaaS 允许客户采用他们的 SaaS、业务流程管理 ( BPM )流程、定制应用程序等,以经济高效的方式利用区块链的力量。本章还通过探索教育行业的一个用例来探究 Oracle 的 BaaS,向您展示使用区块链平台的简易性。
了解业务场景
教育是人类社会的基石。这也有助于根据时代变化的需要,不断提高员工在新知识领域的技能。尽管是最古老的行业之一,但它仍然受到效率低下的困扰:
- 多个手动流程导致管理延迟
- 管理延迟导致验证延迟
- 手动过程总是会对学生证书的真实性产生一些怀疑
为了构建一个在 OBP 上实现的解决方案,我们在该业务流程中选择了一个场景来处理资格证书的审批,以安全的方式将证书颁发给学生,并以可信的方式与其他利益相关方(如雇主和其他教育机构)共享证书。
用例介绍
用例包括与个人教育证书/资格的生命周期相关的交互和流程流的典型设置。在本书中,我们将考虑涉及以下场景的用例的各个方面:
- 主管当局签发/批准证书
- 证书对所有者(即学生)的可用性
- 由雇主或其他教育机构等第三方验证证书
在现实生活中,有太多的利益相关者参与其中,如特定的学校、考试负责人、考试机构、学生、其他机构和雇主。为简单起见,我们将考虑以下利益相关方:
- 甲骨文红学 ( ORS ):制证人(学部)
- 甲骨文帝国大学 ( OEU ):证书审批者和颁发者(大学)
- 学生、雇主、其他大学:证书查看者/验证者
让我们快速看一下这个用例中现有的真实流程:
证书创建、批准、颁发和审查流程
现有工艺存在以下低效之处:
- 手动验证过程使其速度很慢
- 核实过程在确定欺诈性索赔方面速度缓慢
- 它需要外部背景验证服务
- 纸质证书容易丢失或损坏
- 伪造纸质证书和验证过程中的漏洞使证书的可信度受到质疑
用例鉴定的标准
在为我们的业务场景提出一个基于区块链的解决方案之前,让我们先评估一下它是否适合区块链的解决方案。我们如何确定一个用例的基于区块链的解决方案的应用将真正解决当前过程面临的挑战?
让我们思考一下区块链技术可以克服的用例的一些特征和约束。以下考虑因素并不详尽;相反,这是一种尝试提出区块链解决方案的指示性方法。
以下是区块链技术可以克服的用例的一些特征和限制:
-
可以用集中式解决方案解决用例吗?与纯手动流程(如果存在)相比,由 OEU 管理的集中式解决方案将在某些方面加快速度,但它会带来其他挑战,而无法提供克服所有现有低效问题的解决方案。集中式解决方案的挑战如下:
- 集中式解决方案不能保证 ORS 和 OEU 业务流程的协同增效。因此,离线和在线过程之间的断开不会在系统效率方面提供太多的改进。
- 从系统或信任的角度来看,会有单点故障。
- 它要求其他各方信任一个单一的实体(OEU ),而无需其他利益攸关方的认可或授权。
- 它并没有提供一个有效的解决方案来对付假证书的发行。
-
是否存在多个利益相关方共享的数字资产?考虑到教育证书是这个用例中的数字资产,它确实将在 ORS 和 OEU 之间共享,用于生成、处理、授予和验证。
- 数字资产是否需要以安全的方式存储和访问?由于证书是共享资产,将由不同的利益相关者访问,因此安全机制至关重要。考虑到资产的性质,安全性对于以下方面非常重要:
- 任何对它的访问都应该被适当地跟踪
- 对证书数据的任何更新都应得到 ORS 和 OEU 的认可
- 证书应受到保护,以防任何类型的篡改和未经授权的访问
- 用例中潜在涉及的组织之间有信任问题吗?需要的是在 ORS、OEU 和证书查看者之间建立信任。用例的解决方案应该确保通过设计自动建立信任。
区块链解决方案的优势
用例需要一个数字资产(教育证书),该资产应在利益相关方之间共享,并表现出以下特征:
- 共享资产状态
- 相互认可和验证的数据工作流
- 对所有授权利益相关者透明而安全的访问
- 未经修改的、永久的存在证明和认可证明
考虑到解决方案所需的特征,基于区块链的解决方案是合适的选择。凭借其对不变性、共享分类帐、安全访问和交易背书属性的内在支持,基于区块链的解决方案将能够满足所有用例需求。此外,通过让更多的利益攸关方参与进来和应用智能合同,这将为进一步自动化和流程效率开辟可能性。
对于我们的使用情形,基于区块链的解决方案将实现以下主要优势:
- 一个可信、防篡改的教育证书数字存储库
- 消除丢失或损坏的风险
- 简化(几乎实时)的验证过程,因为教育证书保存在经过适当授权的可信、不可变的共享分类账上
进一步的可能性如下:
- 个人的大规模、协作、完整的教育证书历史
- 使用这样的真实来源作为任何进一步批准的先决条件,如研究资助和工业合作
- 将教育资格标记为通用的、行业认可的表示形式(例如,EduCoin)
设计解决方案
既然我们已经确定了基于区块链的解决方案的用例,让我们开始设计符合 OBP 架构的解决方案。
设计过程没有固定的步骤顺序。这取决于解决方案设计者的判断。主要目标应该是明确 OBP 解决方案的各个方面,从逻辑角度到部署方面。
业务网络拓扑
正如我们之前提到的,对于我们的用例,我们考虑三个利益相关者。他们是 OEU、ORS 和证书查看者 / 验证者(姑且把这个缩写为 CVs )。我们需要根据每个利益相关者的职能来确定他们的角色:
- OEU 是不同学校(学院)所属的大学或管理机构。正是这个实体拥有批准学校提交的学生教育证书的最终权力。
- ORS 是学生注册并完成学业的学校之一。完成后,ORS 将评估并提交学生的教育证书给 OEU。在更大的背景下,ORS 可以被归类为一个代表性的区块链实体的一部分,这个实体被称为学校。这取决于业务需求和实现环境。
- 学生、雇主和职业介绍所等简历主要是数据(教育证书)的消费者,因此对网络具有只读访问权限。
基于这一前提,下表提供了对实体的描述:
| 组织 | 实体类型 | 访问类型 | | 娱乐城 | 创始人 | 读/写 | | 经口补液盐 | 认可参与者 | 读/写 | | CVs | 参与者 | 阅读 |
渠道协会
在我们的用例中,单一类型的资产将与所有涉众共享,即证书数据。这使得每个人都必须能够访问相同的分类账数据。因此,它将是一个单通道网络组织,其中所有利益相关者将与各种访问角色相关联,如前所列。
下图描述了如何为解决方案创建 OBP 节点的逻辑视图:
网络拓扑和通道关联
此图显示了不同利益相关者与单一渠道的关联。
网络产物
在确定了网络拓扑和利益相关者之后,让我们定义共享资产和将通过网络在其上执行的操作。
资产模型
对于给定的用例,我们主要有两种类型的对象存储在分类帐中:
- 学生 ( 接收者):基本信息
- 证书:证书数据
下图从较高的层面描述了资产结构及其之间的关系:
资产模型
链码交易
用例要求利益相关方在证书生命周期的不同阶段执行以下事务:
| 交易 | 演员 | 描述 |
| CreateReceiver
| 经口补液盐 | 创建新的接收者或学生 |
| AddCertificate
| 经口补液盐 | 为接收者插入证书 |
| ApproveCertificate
| 娱乐城 | 批准证书 |
| 搜索操作 | | |
| QueryByCert_id
| 全部 | 查询证书 |
| QueryByRecev_id
| 全部 | 按 ID 查询接收方 |
| GetCertificateHistory
| OEU/ORS/接收器 | 记录的一个键的查询历史 |
| QueryAllCerts
| OEU/ORS(眼睛/耳朵) | 查询所有学生的所有证书 |
解决方案操作流程
到目前为止,我们已经确定了 OBP 的利益相关者、他们的关联、分类帐数据模型和链码事务。本节将帮助您了解基于 OBP 的解决方案可以对现有业务流程带来的变化,从而克服当前面临的低效率和挑战。
下图显示了合格用例的解决方案流程:
溶液流动
解决方案架构
作为解决方案架构的一部分,本节涵盖了基于 OBP 的解决方案、其组件和实例的整体高级组件视图和运行时部署视图。
高层架构
让我们确定实施基于 OBP 的解决方案所需的解决方案组件以及组件之间的交互。下图描述了高级解决方案架构:
解决方案架构-高级别
这些是该解决方案的组件:
- OBP 仪表板为 OEU 和 ORS 的管理员/操作员提供了一个执行 OBP 管理和配置任务的界面。
- 每个涉众都需要不同的客户端应用程序集:
- 以外:
- 创建学生条目并在分类帐中插入学生的证书数据
- 为了能够搜索学生和证书数据
- 欧乌:
- 为了能够搜索学生和证书数据
- 批准/拒绝学生的证书数据
- 学生 ( 简历):
- 能够查看他们批准的证书
- 为证书验证者生成一个令牌,以验证他们存储在 OBP 分类帐中的学历证书
- 证书验证者:
- 为了能够使用学生使用 OBP 解决方案生成的令牌来验证学生的学术证书
- 以外:
部署架构
下图描述了 OBP 的所有部分和组成解决方案组件如何在 Oracle 云实例上运行。甲骨文云在其强大且可扩展的甲骨文云基础设施 ( OCI )可用性域的基础上捆绑了 OBP 服务和解决方案。整个云设备通过集成的甲骨文身份云服务 ( IDCS )得到保护;
部署架构[Oracle 映像]
文件存储–推荐 OBP 采用的方法
像我们的用例一样,许多与当今企业业务流程相关的场景都涉及到文档对象的交换。就实用性而言,在许多情况下,文档本身只是物理过程的直接采用。它主要提供了交易涉众手中的可信物理资产的概念。从技术上讲,它是与业务交易相关的数据值的逻辑分组,如商定的条款和条件、合同以及交易数据。
有了基于区块链的可信解决方案,比如我们正在 OBP 上构建的解决方案,我们实际上可以消除对文档对象的许多此类需求。尽管如此,出于实用性的考虑,随着采用的增加,文档可以共存,并可能逐渐消失,变得无关紧要(不一定在所有情况下都是如此)。
目前,可以采用以下方法来存储业务文档以及核心 OBP 解决方案(分类帐)数据:
- 在 OBP 分类帐中写入事务处理期间:
- 生成文档的散列,在分类帐上记录散列(链上)并在链外存储文档
- 文档的链外存储可以是基于云的 Oracle 内容和体验服务,也可以是其他 Oracle 云存储选项,如对象存储或文件存储
- 哈希逻辑应得到交易利益相关方的同意,并且必须得到适当的保护
- 在智能合约之外执行散列和文档存储操作将减少其执行时间
- 在读取事务期间(即,获取文档资产时):
- 从选择的文档存储中获取文档。
- 获取文档的哈希,并将其发送到智能合约进行比较和验证。
- 在肯定匹配的情况下,可以读取文档。否则,应报告意外情况。
有关这方面的更多详细信息,请参考上一章的文档存储部分。
到目前为止,我们已经走过了业务场景并定义了用例。我们已经分析了用例,通过遍历用例限定来证明对区块链解决方案的需求。一旦我们决定用例符合区块链解决方案的条件,我们就开始设计基于区块链的解决方案。本章的下半部分集中于探索 OBP 及其体系结构,并建立一个 OBP 网络实例。
探索 OBP
正如我们已经知道的,OBP 是基于开源的 Hyperledger 结构。但是对于企业来说,织物是不够的,因为它不是预先组装的。以下是从头开始为企业构建有效的区块链网络的一些高级要求:
- 设置所有的先决条件、配置和容器。
- 设置容器生命周期管理,以管理对等体、通道、链代码等的所有容器。
- 安装安全性,如用户管理,这是企业最重要的组件之一。
- 管理系统升级计划和补丁,以适应快速变化。由于 Hyperledger Fabric 是开源的,技术将会不断发展,因此您需要不断管理系统升级计划和补丁。
- 确保所有资源的高可用性和可扩展性。
- 为数据提供安全性,并提供集成端点(如 REST APIs)来连接其他产品,如 SaaS 应用程序、ERP 或任何第三方应用程序。
- 使用各种工具来监控和处理操作任务,例如检查节点的运行状况和利用率、通道活动、对等活动、通道管理、对等管理、链码管理和网络管理。
要构建一个从基础到生产的区块链网络,您需要技能、资源和时间(可能几个月)来设置和维护所有这些需求。Oracle 负责满足所有这些要求,并根据 OBP 提供服务。在这一节中,我们将深入研究 OBP 的架构,并学习建立一个 OBP 实例和区块链网络。
OBP 建筑概述
OBP 为构建区块链网络、部署和运行智能合同以及维护分布式账本提供了一个预组装平台。只需点击几下鼠标就可以提供服务,管理员可以使用 web 控制台动态更新区块链配置并监控其运行。开发人员可以使用 REST APIs 或客户端 SDK 部署智能合约和集成应用程序。OBP 支持实时分布式 P2P 交易,并允许应用程序(新的或现有的)通过区块链网络在可信的业务伙伴之间进行交易和共享数据。
请参考 https://www.oracle.com/cloud/blockchain/的,了解 OBP 产品的最新动态。
因为 OBP 是 Oracle 云平台的一部分,所以它预装了底层云服务,包括容器、计算、存储、用于身份验证的身份云服务、用于嵌入式归档的对象存储,以及用于操作和故障排除的管理和日志分析。您可以为可用性、可伸缩性和保密性配置多个对等节点和通道,Oracle Cloud 将自动处理底层依赖关系。下图从较高的层面解释了该架构,并解释了 OBP 如何为开源 Hyperledger 结构增加价值:
OBP 高层建筑
OBP 是一个许可的区块链,它利用内置的 Oracle IDCS 到 Hyperledger 结构来提供以下功能:
- 用户和角色管理
- 对 OBP 控制台、REST 代理和认证机构 ( CA )的认证
- 身份联盟和第三方客户端证书支持,支持联盟形成和简化成员加入
OBP 在 OCI 上运行,是一种 PaaS 服务。因此,存储、可扩展性、高可用性和基础架构将由 Oracle 负责。使用 Oracle 集成云服务的适配器,它可以与 Oracle SaaS、PaaS 和具有区块链事务、事件和查询的本地应用程序集成。由于 OBP 基于 Hyperledger Fabric,它还允许我们连接使用 Hyperledger Fabric 的外部成员节点。这些外部成员可以在客户数据中心或第三方云服务中。下图描述了 OCI 上的 OBP 服务级别架构:
OBP 服务级别架构
Oracle 对 Hyperledger Fabric 进行了许多增强,使 OBP 成为企业级服务。每个区块链实例包含托管容器、虚拟机、身份管理、块和对象存储以及 Oracle Event Hub cloud service,后者是一个专用的 Kafka connect。
blockchain instance 区块链结执行处理
一个 OBP 实例(本书称为区块链实例)是一个容器集合,包括对等节点、订购者、操作控制台、CA、REST 代理和链码。OBP 实例与身份管理相集成,用于管理用户和角色。它还与 Oracle 对象存储集成,以动态备份配置更改和分类帐,并在需要时进行恢复。Oracle 对象存储备份区块链实例中的所有组件,包括分类帐的所有块文件,还包括系统通道和客户通道中的数据、通道列表、最新检查点、链码的源代码、配置文件以及节点和日志文件的预配文件。此备份和恢复过程将在 OBP 自动完成,不会通知用户。因此,用户无需担心数据备份。OBP 使用甲骨文活动中心云服务作为订购者的专用 Kafka。默认 REST 代理可用于将 OBP 与任何其他应用程序集成,如 SaaS、PaaS、内部部署或其他第三方应用程序。
现在,你应该知道区块链是非常资源密集型的,因为它需要许多有大量存储空间的容器。由于 OBP 运行在甲骨文云上,服务的存储、可扩展性和高可用性将由甲骨文负责。
OBP 有两种方式。一种方法是安装 Oracle 提供的预构建虚拟机,另一种方法是在 Oracle 云中创建一个帐户,并从服务组合中调配区块链平台。除了访问和创建区块链实例的初始步骤之外,所有其他功能和导航都是相同的。让我们来看一下 OBP 资源调配的每一种方式。
设置 OBP SDK
本节展示了如何在便携式计算机或本地计算机中设置 OBP SDK。这只是供参考;然而,也有替代的方法,比如建立在云基础设施上,比如 OCI。下面是建立 OBP SDK 的过程。
先决条件
以下是设置 OBP SDK 的先决条件:
- Oracle Linux 7.3 版或更高版本(OBP 运行在任何装有 Docker 的 Linux 上,但建议使用 Oracle Linux)可上网,Linux 内核版本必须高于 3.10。
- 磁盘空间取决于计划部署的实例数量。
- 对于应用程序,建议每个实例使用 4 GB 内存。
- 在供应之后有多个 Docker 容器在运行,并且每个容器对主机 CPU 周期的访问应该是无限制的。为了确保每个容器顺利运行,建议至少使用两个 CPU。
- 主机名是必需的。
- 需要一个 Oracle 用户,因为流程运行在 Docker 容器中(比如 peer 和 orderer)。
从浏览器访问时,主机名应该是可解析的名称。如果在本地设置 OBP,主机名必须是虚拟机运行时的名称。在同一个 OBP 虚拟机中创建多个组织时,主机名将保持不变(即虚拟机名称),但每个组织的端口范围会有所不同
#create user oracle
sudo useradd oracle
sudo passwd oracle
<newPassword>
准备 Docker 环境
要构建和安装 OBP SDK,需要安装最新的 Docker 引擎和 Docker Compose:
- Docker 引擎安装:OBP SDK 需要最新版本的 Docker 引擎。执行以下命令,找出 Docker 引擎版本:
docker --version
- 如果版本不是
Docker version 17.05.0-ce
或更高,则按照以下说明安装/更新 Docker 的最新版本。 - 使用 docker
yum
repo 命令,使用以下命令将 OS(操作系统)版本替换为您的特定 OS 版本:
$ sudo tee /etc/yum.repos.d/docker.repo <<-EOF
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/oraclelinux/7
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
EOF
- 安装 Docker 引擎:
$sudo yum install docker-engine-17.05.0.ce
- 检查 Docker 引擎版本:
$docker –version
以下截图显示了版本:
Docker 版本
- 启动 Docker 引擎:
sudo systemctl restart docker
- 向 Docker 守护程序验证用户:
sudo usermod -a -G docker $USER
- 解包部署区块链云服务 ( BCS ) SDK,借助以下代码片段解包:
As opc user switch to
/usr/localcd
/usr/localsudo
mkdir bcssdk
cd bcssdk
- 从 web 或本地资源复制 OBP SDK。
- 通过执行以下命令,将构建包解压缩到
bcssdk
目录:
sudo unzip obcs-sdk-19.1.3-20190129043733.zip -d /usr/local/bcssdk
本书使用了 OBP SDK 版本 19.1.3,其中 Hyperledger Fabric 版本为 1.3。
- 现在我们需要安装映像并开始配置控制台。作为 root 用户,运行
build
命令加载并安装 Docker 镜像:
./build.sh
下面的截图显示了build.sh
的输出:
运行 build.sh
- 等到码头装货:
码头装载量
- 用
Y
确认,安装完图像后控制台会自动启动:
开始设置
有几点你需要牢记:
- If the firewall is active,
build.sh
will prompt the user to stop the firewall and restart the Docker daemon. - Please use
build.sh
to start setting up the console. If the user does not choose to stop the firewall, there will be problems during or after configuration. Therefore, in this case, we recommend using root. - If the firewall is turned off, the user
oracle
already exists, and the non-root user has Docker access, we can use this user to run this command.
准备金提取
由于 OBP SDK 仅用于开发目的,每个配置的实例只能存在 60 天。一旦过期,该实例将不再工作。如果需要,您需要提供一个新的实例来继续您的测试或原型。
执行以下步骤进行设置:
- 请使用以下命令行开始设置控制台(如果尚未启动):
./build.sh [-d <package directory>, default is current path] [-w provision workspace directory, default ~/obcs_workspace] [-p provision console port, default 3000]
- 将会看到以下消息:
OBP 主控台 URL
- 现在,您可以使用
ssh
和端口转发从本地机器访问控制台。在 Linux/mac 系统上,打开终端窗口并输入以下内容:
ssh -L <localPort>:<remoteIP>:3000 opc@<remoteIP>
- 然后,从您的本地网络浏览器,只需输入
http://localhost:3000
,您应该会看到控制台的用户界面:
OBP 主控台
使用 SDK 创建区块链实例
使用 OBP SDK 创建区块链实例的过程如下:
- 打开虚拟机的登录 URL,例如
http://studentvm2:3000/
。 - 将会打开 Oracle 登录页面。第一次需要创建用户。
- 输入用户名和密码(记住这些凭证以备将来使用)。
-
点击登录。
-
如果该用户不存在,将会打开一个标题为“创建用户”的对话框,如下面的屏幕截图所示:
OBP SDK 登录
- 单击“确定”创建用户。
- 创建用户后,将会打开 OBP 实例页面,如下面的屏幕截图所示。使用此页面可创建实例并列出所有创建的实例:
OBP SDK 主控台
在 OBP SDK 中创建方正实例
要创建创建者实例,请在创建实例部分提供详细信息,并确保选中创建者复选框:
-
名称:如下图所示,可以设置要创建的实例的名称,例如
detroitauto
。 -
主机地址:如下面的屏幕截图所示,输入为其设置 SDK 的虚拟机的主机地址。只能使用此主机地址访问实例。
- Start Port :参照截图,创建实例后,输入一个端口(或一系列端口)来访问控制台:
OBP sdk 创始人 1
- 单击 Create 按钮,等待一段时间以查看创建的实例,因为必须创建多个容器和虚拟机,并使它们启动和运行。
- 创建实例后,它将出现在左侧的实例下:
OBP SDK 创始人
- 单击实例名称,将打开该实例的区块链控制台。
现在让我们在 OBP SDK 中创建一个参与者实例。
在 OBP SDK 中创建参与者实例
要创建参与者,请遵循前面的步骤,但取消选中 Founder:
- 查看以下截图,以供参考:
OBP SDK 参与者
- 点击创建并等待几分钟(在我的例子中,是 4 分钟);然后,您将看到一个新的参与者实例已被添加到实例列表中,如下所示:
OBP SDK 参与者
参考 OBP 部分的功能和组件,了解 OBP 控制台的外观并探索其功能。
在 Oracle 云上调配 OBP
在 Oracle 云中访问 OBP 的步骤如下:
- openhttps://cloud . Oracle . com。
- 点按右上角的“登录”。
- 输入您的云帐户名,点击下一步。
- 输入您的用户名和密码,然后单击登录按钮。
-
将打开云我的服务页面。
-
点击左上角的汉堡图标,展开服务菜单。然后你会在列表中看到区块链平台,如下截图所示:
OBP 云服务
- 点击区块链平台。它将打开 OBP 控制台。在这里,您可以创建新的 OBP 实例或查看在帐户中创建的实例列表。您还可以查看实例活动的历史记录:
OBP 云控制台
在 Oracle 云上创建方正实例
如前一节所示,打开 OBP 控制台后,单击 Create Instance:
- 将会打开“创建实例”页面:
OBP 云创始人
- 如上图所示,在表单中填写详细信息。
-
确保启用了创建新网络复选框。这在创建创始人时非常重要。
-
点击下一步。将出现一个页面,显示您提供的详细信息以供确认,如下面的屏幕截图所示:
OBP 云创始人
- 验证所有详细信息,然后单击创建。
- 等一会儿。成功创建实例后,将出现以下屏幕。我们将向您提供的电子邮件地址发送一封确认邮件:
OBP 云创始人
- 在实例名称旁边,单击汉堡包图标。将显示一个菜单。如果你点击区块链控制台选项,实例的控制台就会打开。
在 Oracle 云上创建参与者实例
要创建参与者,请遵循前面在在 Oracle Cloud 上创建 founder 实例一节中提到的步骤,但取消选中创建新网络:
- 查看以下截图,以供参考:
OBP 云参与者
- 创建参与者实例后,您可以在 OBP 控制台的 instances 选项卡上看到实例列表,如下面的屏幕截图所示:
OBP 云实例
OBP 的特征和组成
在本节中,我们将了解 Oracle 区块链实例控制台的外观,并研究其功能。如果您使用 OBP SDK 或通过 Oracle Cloud 创建区块链实例,OBP 实例的控制台将是相同的,如下面的屏幕截图所示:
OBP 例程控制板
控制台有多个选项卡,我们将在下面的小节中逐一探讨。
仪表盘
这是第一个选项卡,显示以下内容的摘要:
- 实例已创建或属于其中的通道数
- 实例正在使用的对等机数量
- 在实例上部署和运行的链代码的数量
- 通道的活动,如创建的块数和通道上的用户事务数
- 对等方的活动,如签署和提交
- 实例的健康状况,例如运行和停止的节点数
- CPU、内存和磁盘利用率的指标
除了仪表板上的这些数据之外,如果实例是创建者,那么它还会显示参与网络的组织的顺序和数量。
每个区块链网络只有一个订购者,而且是 OBP 的创始人。
网络拓扑结构
此选项卡显示参与网络的每个人。此外,它还显示了网络的拓扑视图:
OBP 网络拓扑
上图显示了网络的结构以及组织和节点之间的关系。
节点拓扑
该选项卡显示所有对等体,包括自己的对等体和远程对等体,它们都是网络和 CA 节点的一部分。如果是创建者,它可以看到 orderer 的一个额外节点。它还显示了网络的节点和对等点的拓扑视图:
OBP 节点拓扑
上图显示了对等点和通道之间的关系。
通道
此选项卡用于管理实例的通道。它将列出该实例所属的所有通道。也可以从这里创建一个新的通道。可以管理渠道级别的策略,可以将新的对等方添加到渠道中,还可以在渠道中添加或删除组织。每个通道将有自己的分类账,它将显示分类账的所有块和交易。频道一旦创建,就不能删除。
链码
此选项卡用于管理链码,并列出实例中所有网络的所有链码。链码的部署、初始化和实例化可以在这里完成。该链码可以写入和更新通道的分类帐。一旦链码被部署,它就不能被更新。链码可以在多个通道中实例化。在通道中,每个版本的每个链码只允许一个链码实例化,这意味着如果在通道中的一个节点上实例化了一个链码,那么通道中的其他节点只需要部署该链码,实例化将自动反映在它们上面。每个链码都有自己的日志和私有数据集合,也可以从该选项卡访问。
开发者工具
该选项卡允许我们访问 OBP 文档,并提供从 Oracle 下载 SDK、工具和预构建示例链代码的链接。
在接下来的章节中,我们将会看到如何创建一个区块链网络并邀请组织加入该网络,创建和部署链码,使用链码,测试分类帐,使用 REST 代理等等。
丰富的 OBP 历史数据库
OBP 使用 Hyperledger 结构历史数据库来管理分类帐,并在控制台中显示分类帐交易信息。只有链码可以访问这个历史数据库,它不能暴露给任何外部应用程序来查询分析。任何企业都不能忽视分析,即使他们提供区块链服务。因此,OBP 集成了丰富的历史数据库来满足这一需求。
丰富的历史数据库位于 OBP 之外,包含有关区块链分类帐在您选择的渠道上的交易的数据。您可以将丰富的历史数据库集成到 OBP 实例控制台中,并选择需要在数据库中捕获其数据的通道。一旦在通道上启用了丰富历史数据库,通道上的所有事务都会同步到数据库。这种级别的数据收集使丰富的历史数据库成为生成分类帐活动的分析和可视化报告的优秀数据源。您可以使用任何分析工具,如 Oracle Analytics Cloud 或 Oracle Data Visualization Cloud Service,来访问丰富的历史数据库并创建分析报告或数据可视化。
OBP 只支持 Oracle 数据库,如 Oracle 自治数据仓库或与 OCI 合作的 Oracle 数据库云服务 ( ODCS )来创建您丰富的历史数据库。
创建 ODCS 连接字符串
OBP 可以和 OCI 的 ODCS 整合成一个丰富的历史数据库。但是,还必须能够通过端口1521
访问数据库。
获取 ODCS 信息
在 OCI 控制台中创建到 ODCS 的连接的过程如下:
- 登录甲骨文云,打开我的服务页面。
- 单击左上角的汉堡包图标,展开服务菜单,然后选择数据库选项。
- 在 DB Systems 下,找到要连接的数据库并记录其公共 IP 地址。
- 单击数据库的名称,并获取以下字段的值:
- 数据库唯一名称
- 主机域名
- 港口
- 查找对此数据库具有读取权限的数据库用户的用户名和口令。
启用端口 1521 访问数据库
启用 ODCS 上的端口1521
的步骤如下:
- 如前所示,导航到 DB Systems 并单击要连接的数据库。
- 点击虚拟云网络。
-
在安全列表下,导航到相应的子网。
-
点击
的默认安全列表。将显示安全性列表页面。 - 点击编辑所有规则。
- 添加入口规则,以允许来自公共互联网的任何传入流量到达此数据库节点上的端口
1521
,设置如下:- 来源 CIDR:
0.0.0/0
- IP 协议:
TCP
- 源端口范围:
All
- 目的地端口范围:
1521
- 允许:端口的 TCP 流量:
1521
- 来源 CIDR:
创建连接字符串
启用对 Oracle 数据库的访问后,使用收集的信息在“配置丰富历史记录”对话框中构建连接字符串。按如下方式构造连接字符串:
<publicIP>:<portNumber>/<database unique name>.<host domain name>
以下示例显示了连接字符串的样子:
123.213.85.123:1521/CustDB_iad1vm.sub05031027070.customervcnwith.oraclevcn.com
在 OBP 配置丰富的历史数据库
每个区块链网络实例都可以配置自己的丰富历史数据库,以下是完成此操作的过程:
- 打开区块链网络实例的控制台。
- 点击选项按钮(右上角的汉堡包图标),然后点击配置丰富的历史。将打开一个配置对话框:
配置丰富的历史记录
- 输入要连接的数据库的用户名和密码。
-
在连接字符串字段中,输入将存储丰富历史数据的数据库的连接字符串。该输入取决于所使用的 Oracle 数据库:
- 如果数据库是 Oracle 自治仓库,那么连接字符串就像
<username>adw_high
。 - 如果数据库是 OCI 的 ODCS,按照创建 ODCS 连接字符串一节中的讨论获取连接字符串。
- 如果您正在使用一个非自治数据库,并且想要使用
sys
用户来连接数据库,那么您必须将?as=sys[dba|asm|oper]
附加到连接字符串,例如123.123.123.123:1521/example.oraclevcn.com?as=sysdba
。 - 如果您使用的是 Oracle 自治数据库,那么您也可以使用 wallet 文件来代替连接字符串。该文件包含客户机凭据,由 Oracle 自治数据库生成。
- 如果数据库是 Oracle 自治仓库,那么连接字符串就像
-
点击保存按钮。
- 要更新此配置,请重复相同的过程。
以下截图供大家参考:
配置丰富的历史记录
启用将数据写入丰富历史数据库的通道
在通道上启用丰富的历史数据库之前,必须在实例中进行配置。请遵循以下步骤:
- 打开区块链实例的控制台,并转到 Channels 选项卡
- 找到该频道,然后单击更多选项图标
- 要将频道添加到丰富历史数据库,请单击菜单中的配置丰富历史选项
- “配置丰富历史记录”对话框将打开,并带有“启用丰富历史记录”复选框
- 单击复选框以添加频道,取消选中复选框以删除频道
- 点击保存按钮
丰富的历史数据库表和列
在通道上配置丰富的历史数据库时,将在数据库中为通道创建三个表:历史、状态和最新高度。要创建分析报告,将查询历史和状态表:
丰富的历史表格
让我们看看每个表及其列。
历史表
这个表的名字类似于<instance name>_<channel name>_hist
。
此表包含渠道分类帐的历史记录。以下是列及其数据类型的列表:
栏 | Datatype |
---|---|
chaincodeId |
VARCHAR2 (256) |
key |
VARCHAR2 (1024) |
txnIsValid |
NUMBER (1) |
value |
VARCHAR2 (4000) |
valueJson |
CLOB |
blockNo |
NUMBER NOT NULL |
txnNo |
NUMBER NOT NULL |
txnId |
VARCHAR2 (128) |
txnTimestamp |
TIMESTAMP |
txnIsDelete |
NUMBER (1) |
注意,value
和valueJson
列是以互斥的方式使用的。也就是说,当一个键值是有效的 JSON 时,那么这个值就被设置到valueJson
列中。否则,在value
栏中设置该值。valueJson
列在数据库中被设置为 JSON 列,这意味着用户可以使用通常的 Oracle JSON 特定扩展来查询该列。
状态表
这个表的名字类似于<instance name>_<channel name>_state
。
该表复制州数据库中的数据。以下是列及其数据类型的列表:
栏 | Datatype |
---|---|
chaincodeId |
VARCHAR2 (256) |
key |
VARCHAR2 (1024) |
value |
VARCHAR2 (4000) |
valueJson |
CLOB |
blockNo |
NUMBER |
txnNo |
NUMBER |
与历史表一样,value
和valueJson
列以互斥的方式使用。
最新高度表
这个表的名字类似于<instance name>_<channel name>_last
。
OBP 内部使用该表来跟踪丰富历史数据库中记录的块高度。无法查询此表进行分析。
当丰富的历史数据库连接到 SQL Developer 工具时,这里有一个截图供您参考,以查看这些早期的表格:
带列的丰富历史表格
摘要
企业一直在寻找有效且高效的方法来利用区块链技术及其 SaaS、BPM 和其他应用。BaaS 让他们意识到这一点。这一章提供了对 OBP 的一瞥。本章的重点是设计一个符合 OBP 架构的解决方案。本章介绍了示例业务网络拓扑、网络构件以及解决方案和部署架构。本章还深入研究了如何定义和创建一个基于创始人的业务网络实例,并向其中添加参与者。通过本章获得的知识将帮助您在下一章管理区块链网络,并作为开发 OBP 解决方案的基础里程碑,如前一章所述。下一章将让你深入了解 OBP 的管理,并教你在 OBP 上转换网络拓扑。它深入研究了同行、订单和渠道配置。它还提供了关于 REST 配置和 REST 接口管理的细节。后续章节将详细介绍 OBP,并重点介绍 Oracle BaaS 平台的强大功能。