出处:北京邮电大学网络与交换技术国家重点实验室
摘要
区块链系统可以以去中心化的方式执行各种交易行为和信息存储,而智能合约需要多个节点在本地沙盒环境下按照预设的设置执行,以保证每个节点的一致性,这使得智能合约无法主动获取外界的数据。去中心化的预言机在保证区块链去中心化的前提下,可以实现低速获取链外数据。有些预言机利用链上数据存储和维护来加快数据获取速度,但这将面临较高的数据存储和维护成本,因此目前的预言机无法在兼顾执行成本和处理速度的同时保证隐私和安全。在这篇文章中,我们提出了“选择-存储”,一种新的预言机设计模式,在不影响安全的前提下实现低运行成本和高处理速度。通过实验分析,以及与其他设计模式在处理时间和链上、链外调用成本的比较,我们证明“选择-存储”设计模式的优越性。
简介
随着通信技术的不断发展﹐移动端边缘计算、区块链、联合学习等分布式网络技术逐渐流行起来。自 2008 年比特币技术被首次提出以来,区块链技术已经发展了近十年。然而,区块链系统的封闭性和隔离性导致了数据孤岛的问题,这使得区块链生态难以形成,制约了区块链的发展和互联网价值的形成。
区块链预言机作为一个第三方服务,可以为区块链上的智能合约提供外部信息。区块链和智能合约不能访问链外数据(网络外的数据),这是为区块链的稳定性和智能合约执行结果的一致性考虑。然而,对于许多智能合约来说,需要外部信息来执行相关协议。这就是预言机需要发挥作用的地方。因此,预言机在区块链生态系统中非常重要。它扩大了智能合约的范围,打破了智能合约的限制。
但实质上,预言机是通过负责信息获取的可信第三方数据源实现的。这与区块链的去中心化原则相冲突,会给区块链带来很多潜在的安全和信任问题。所以研究人员提出了一个去中心化的预言机来解决区块链智能合约和预言机之间的纠纷,但这不可避免地带来了预言机的效率和成本之间的矛盾。所以在这篇文章中﹐我们提出了“选择-存储”设计模式来解决预言机的效率和成本之间的矛盾,使预言机在提出的设计模式下能够提供低成本和高速的服务。
动机
为了使预言机能够提供低成本和高效率的服务,我们需要考虑以下三种情况。
首先,区块链的互操作性是完善区块链生态的重要组成部分。预言机的传输效率是实现区块链链上和链外互操作的关键。传输效率低会拖累区块链的发展速度。
其次,去中心化的预言机为了去中心化和安全,会产生大量的链外操作。为了提高效率,将链外数据上传到区块链的链上智能合约,会带来高昂的合约调用成本,使得跨链互联的实现成本很高。
第三,虽然“发布-订阅”预言机设计模式可以实现链上数据的可重用性,降低智能合约的调用成本,但这种设计模式只能提供一些特定数据,限制了数据获取的自由度。
相关工作
区块链目前有很多平台。比特币是一个基于区块链技术的分布式账本,它使用公钥和数组签名在用户之间进行资产交易,并使用共识算法来保证这个账本的最终一致性。以太坊、HyperLedger 和Algorand 已经通过智能合约实现了区块链的可编程性。通过将智能合约插入虚拟机或调用现有的智能合约,启动交易,从而扩大区块链的适用性和可用性。
预言机在几年前就已经提出了,但它发展迅速。DOS 网络是一个二层的预言机解决方案。链外结构是一个 p2p 网络。会计节点的选择使用 VRF 和 zk-SNARK 技术。数据验证使用阈值签名来确保数据的分散性和安全性。然而,大量的节点验证和数据验证过程大大影响了效率。ChainLink 是一个去中心化的预言机网络解决方案。ChainLink 提供了一个通用框架,在执行多种服务时可以平衡节点之间的工作量。然而,ChainLink 的节点信誉模型的缺陷隐藏了集中化的安全风险。Astraea 和 Augur 都是基于以太坊区块链技术的去中心化预测市场平台。用户可以使用数字货币进行预测和投注,他们也可以为任何感兴趣的话题(如谁将赢得美国大选)创建预测市场并提供初始流动性。这是一个去中心化的过程。作为回报,市场的创建者将从市场中获得一半的交易费。然而,Astraea 和 Augur 的使用场景非常有限,对区块链生态的改善影响不大。
所有类型的预言机将实现这些功能:1. 从链外数据资源中收集数据,2. 以消息的形式将数据传送到区块链上,3. 通过将数据存储在智能合约中使其可用。一旦数据在智能合约的存储中可用,其他智能合约可以通过调用预言机智能合约的“检索”功能的消息调用来访问数据。因此,目前的预言机设计模式有以下三种形式:
a) 请求-响应。发起请求的实体在区块链上部署了一个智能合约,并通过智能合约回向预言机发起了一个请求。预言机使用一个链外基础设施来监控请求,检索和返回数据。这种设计模式不在链上存储任何历史数据,这意味着每次数据获取都会经历漫长的等待。毫无疑问,这种设计模式可以应用于跨链预言机,但当它用于数据预言机时,将大大影响服务质量。
b) 发布-订阅。这种设计模式将有效地为预期变化的数据提供广播服务,如价格供应和天气信息。 预言机将用新的信息进行更新,并通知订阅者使用它。订阅者可以查询预言机的信息是否有变化,或者监测预言机合约的更新,并在更新时使用它。然而,如前所述,由于数据可用性的范围有限,使得这种模式的使用非常有限。
c) 即时阅读。这种设计模式的预言机一旦在区块链的智能合约中存储数据,将维护和更新数据。存储在链上的数据智能合约可以被其他合约使用,或者直接被区块链应用程序搜索。然而,随着存储数据数量的增加,维护的成本将变得越来越高,而且会有越来越多的无意义的数据维护,这些维护的费用也将由用户支付。
我们的贡献
在这篇文章中,我们的贡献如下:
- 我们提出了一种新的“选择-存储”预言机设计模式,它可以实现链上存储数据的高复用性,实现低效率和成本降低。
- 我们为数据结果和 SVM 分类结果设计了一种数据聚合方法,它可以有效地聚合两种结果。
- 通过设计对比实验,我们证明与其他设计模式相比,“选择-存储”设计模式下的预言机可以同时兼顾成本和效率。
本文的组织结构如下:在第二部分,我们以支持向量机算法和内核函数为初步。第三部分详细介绍了新的“选择-存储”设计模式的结构和工作流程。第四部分,进行了实验和比较。第五部分提出了结论和未来的研究方向。
初步
在本节中我们将提供一些与我们的计划有关的有关的初步信息。
支持向量机
支持向量机(SVM,support vector machine)是一种用于解决线性二元分类问题的监督机器学习算法,在引入内核方法(如 Sigmoid,RBF 等)后,它也可以解决一些非线性问题。
(图 1,SVM 的分类方法)
该算法在输入训练集合或训练矩阵后,将输出一个分离超平面和一个决策函数。它显示在图1中,其步骤如下:
训练集 D = {(x1, y1), (x2,y2), …, (xn,yn)},其中 xi ∈ Rm,yi ∈ {1, -1},i = 1, 2, …, N。xi 是特征向量,yi 是结果。
第一步,构建并解决约束性优化问题:
这些制约因素是:
其中 ξi 是放松系数,C > 0 是惩罚系数。
第二步,获得第一步中优化问题的最优解 w*,b*。
第三步,得到分类超平面 w*x + b* = 0。
所以根据分类超平面得到分类决策函数:
对于 w* 和 b* 的求解,可以通过使用拉格朗日乘数法在第一步的公式中得到对偶问题:
这些制约因素是:
对于上述公式,通过序列最小化算法(SMO)得到最佳 α* = (α1, α2, …, αn)T,推导出 w* 和 b*:
内核
因为在线性 SVM 的二重性问题中,目标函数和分类决策函数都只涉及样本之间的内积。然而,在某些问题中,样本可能不是线性可分离的。因此,我们可以构造一个内核函数来增加样本的维度,使样本在高维空间中线性可分离。因此,对于非线性分类问题,不需要指定的线性变换,只需要用内核函数 K(x, z) 来代替内积。
SVM 有很多内核函数可供选择,如多项式内核函数、Sigmoid 内核函数、高斯内核函数(RBF),本文选择较好的 RBF 作为内核函数,其公式为:
最后的决策函数是:
建议的模式
在本节中,我们将详细介绍“选择-存储”预言机的结构和工作流程。
概述
(图 2,“选择-存储”预言机的架构)
“选择-存储”的预言机系统分为两部分:链上智能合约和链外组件。这两部分的结构如图 2 所示,功能如下:
- 链上智能合约通过多个智能合约实现了请求生成和发送、数据汇总、节点信息统计、数据存储和维护等功能。
- 链外组件实现的功能包括请求处理、外部数据源数据采集和预测,以及请求分类和预测模型训练。
(图3,“选择-存储”预言机在不同阶段的工作流程)
“选择-存储”预言机的工作流程如图 3 所示。我们可以把这个工作流程分为 5 个阶段,下面是对这些阶段的基本介绍:
- 请求启动阶段:收集请求并确定如何处理请求。
- 预言机请求处理阶段:链外预言机节点独立收集和处理请求。
- 预言机数据反馈阶段:链外预言机节点将数据反馈到链上。
- 模型训练阶段:链外预言机节点根据历史数据集训练分类模型。
- 数据汇总阶段:汇总每个预言机收集的数据,并将其返回给用户合同。
请求启动阶段
在这个阶段,用户将通过智能合约向预言机系统的请求合约发送请求。该用户的请求至少包括这 4 个参数:请求时间、数据资源 URL、请求内容、用户地址。
我们把具有相同数据资源 URL 和相同请求内容的两个请求称为同一个请求,即使这两个请求的请求时间和用户地址与请求这完全不同。
被请求的合约在收到请求后会做出判断:如果请求的数据结果存储在区块链上的数据合约中,会直接将数据结果返回给用户合约;相反,如果区块链上的数据合约没有存储请求的数据结果,会直接发送到各个链外预言机节点进行处理。如果相应的数据结果存储在数据合约中,处理时间将大大缩短,因为这将直接跳过后面三个阶段。即时响应预言机也采用这种思路来提高请求的处理时间。
预言机请求处理阶段
在这个阶段,多个预言机节点将收到链上的从请求发起阶段开始的请求,它们将独立地访问数据源的 API 接口,以获得根据用户请求发送的 4 个参数进行相应的数据采集。由于 本实验的目的是优化预言机的成本和处理速度,所以安全问题的解决方案遵循在可信执行环境(TEE)中运行处理的方法。一些私人数据将在 TEE 中进行处理,而预言机节点不能看到请求参数的具体细节。
预言机数据反馈阶段
在这个阶段,多个预言机节点完成了从数据源 API 获取数据的任务。与其他设计模式预言机相比,“选择-存储”预言机不会直接返回数据换数据给链上合约,但会根据已统计的历史请求数据,训练相应的链上分类模型。请求的信息将通过训练模型获得分类结果,分类结果将以智能合约调用的形式将数据结果送回链上。
由于数据是否存储在链上是一个二元分类问题,所以只有两类:存储在链上或不存储。然而,存储在链上的数据的标准式比较模糊的。这种方法类似于设置数据缓存,而缓存的数量取决于缓存容量和缓存策略。在一个智能合约中,容量的合同中的存储区域不是固定的,但每次存储一定量的数据时,相应的费用(如同以太坊中的 gas)需要消耗。存储数据的成本远远高于计算的成本。因此,在不牺牲预言机性能的情况下降低成本是非常重要的。
在我们的方案中,我们将在区块链的智能合约上存储部分请求结果。这样做的好处是,我们可以实现请求结果的可重用性,这也是提高预言机吞吐量的关键。然而,这存储在智能合约中的请求结果是有时间效力。这意味着对于每一个请求结果,预言机将花费一定的成本来维持数据的有效性。这个成本包括链上的 gas 成本、预言机网络节点资源占用等。因此,智能合约中存储的请求结果越多,维护的成本就越高。因此,处理好智能合约中存储的请求结果与所有请求之间的比例是非常重要的。稍后,我们将在实验部分用 p 来表示这个比例。通过调整 p 的值,我们可以平衡成本和预言机的吞吐量。
在确定了分类标准后,我们选择了具有较好二元分类效果的支持向量机算法(SVM)作为我们的分类方法。SVM 的方法已初步介绍。我们将选择一些要求的特征,形成一个特征向量来训练分类模型。由于预言机的请求参数大多是文本形式的,我们需要用一些统计方法对其进行量化。根据请求的特点,我们选择了以下特征值:
a) 用户请求密度。它是用户名或地址出现次数与请求总数的比率,其公式为:
请注意,Ncid 代表用户合同 ID 出现的次数,而 Ntotal 代表请求的总数。一般来说,通过智能合约发起请求的个人或实体对外部数据有不同的要求,而经常发起请求的个人或实体可能有多次发起同一请求的可能。
b) 请求时间密度。它表示请求期间的请求数与总请求数之比,其公式为:
请注意,Ni 代表时间 i 的请求数。例如,将时期划分为一小时的单位,用户在 9 点发送的请求时间密度是 9 点到 10 点的请求数与总请求数的比率。分割的时间长度可以根据请求的密度来确定。实际上,不同时期的请求量是不同的,不同时期的请求也有不同的特点。
c) 数据源 URL 密度。它表示数据源 URL 与总请求的比例,其公式为:
请注意,Nurl 代表了对数据源 URL 的总请求数。拥有更稳定和准确的数据源的数据提供者通常会收到更多的数据请求。
d) 请求内容密度。它表示具有相同请求内容的请求数与请求总数的比率,其公式为:
注意,Nc 代表所请求内容的总数。即使是同一个外部数据源,用户对所请求的内容也会有不同程度的重视。例如,对于货币汇率的情况,对范围较广的货币(如 USD/BTC 或 USD/ETH)之间汇率的请求数量将高于对范围较小的货币之间的汇率的请求数量。
模型训练阶段
在这个阶段,每个预言机节点将根据收到的历史请求数据,整理出请求的特征向量并训练分类模型。需要主要的是,并不是每一次执行请求处理都会经历这个阶段。在预言机节点提供服务之前,将用历史数据完成模型的训练,而新的请求数据将被定期整理成数据集,用于调整分类模型的参数。
为模型训练进行调整。在模型训练中会出现以下问题:
a) 特征值区分度太低。例如,在用户请求密度的比例中,由于基数较大,特征值会相对较小。为了使结果更加准确,我们将不同属性的特征值的不同取值范围归一化,并将每个特征值的取值范围转换成 (0, 1) 区间内的数值。其公式如下:
注意,Vnew 是归一化值,V 是原始特征值,Vmin 和 Vmax 代表所有原始特征值中最小的特征值和最大的特征值。
b) 模型参数的调整方法。在分类模型的训练过程中,惩罚系数 C 和 RBF 内核函数系数 σ 需要手动调整。当 C 越大,σ 越小,各种数据之间的差异就越明显,未知样本的分类效果就越差。如果 C 比较小,σ 比较大,训练模型的准确性就不高。由于预言机中的未知样本是一个新的请求,其特征向量不会分布在分离超平面附近,所以在调整参数时,惩罚系数 C 可以设置得高一些,这样可以大大提高模型的准确性。
链上数据聚合阶段
在这个阶段,区块链的链上智能合约将接收多个链下预言机节点的数据结果和数据链上存储的分类结果。多个链下预言机节点可能有多个不同的数据结果和分类结果,这是由于恶意节点或正常节点偶尔的不诚实行为造成的。链上合约将汇总这些数据结果的分类结果。最终的数据结果将根据发起请求的用户合约的地址发送给用户合约,数据将根据最终的分类结果选择性地存储在区块链上。
对于数据结果和分类结果的数据汇总过程,链上合约将首先计算出预言机节点报告信息的三个值:N、Rd、Rr。这三个值分别代表节点参与的数量,过去报告的数据结果的正确率,以及过去报告的分类结果的正确率。通过区块链上的节点统计合约可以得到这三个值。对于不同的结果,分别计算数据权重 Presult 和链上分类权重 Pclass,计算公式如下:
注意,α、β、η、γ 分别代表参数,用于调整上述三个数值对权重的影响。
在计算了所有数据结果和分类结果的权重后,选择数据权重最大的数据结果 Presult 和分类权重最大的分类结果 Pclass 作为最终结果。数据汇总过程结束后,所有数据将被发送到节点统计合同,以更新节点统计。
节点统计合约将比较每个节点上报的数据与最终结果。如果节点上报的数据与最终结果不一致,则该节点的数据上报行为将被视为不诚信行为,这将影响该节点的准确率,并导致该节点在下一次数据上报行为中失去权重。对于数据聚合中这三个参数的选择,一方面希望正确率高的节点能够对最终结果产生更大的影响,从而提高最终结果的准确性,另一方面,以节点参与次数为参数可以增加恶意实体的 Sybil 攻击成本,从而降低预言机遭受 Sybil 攻击的可能性。
实验评估
在这一节中,我们将讨论一些实验模拟下提出的“选择-存储”预言机模型的结果。在讨论中,我们把提出的预言机系统与“请求-响应”设计模式预言机和立即响应设计模式预言机进行比较,以比较它们在各方面的优劣。比较的指标如下:
a) 平均数据读取速度:读取数据的速度是衡量预言机系统的一个重要指标,其计算公式如下:
请注意,t(i, p) 代表当 p 值固定时第 i 次的耗时。
在本实验中,由于不同数据源的对应速度不同,为了减少个数据源响应速度造成的差距影响,更好地反映各设计模式的预言机系统之间的性能差异,我们将不同数据源的数据放在同一服务器中响应,并将返回的数据长度设定为固定长度。这样一来,数据源对应的时间和数据长度不一致的影响就被忽略了,实验测得的时间读取长度可以更好地反映预言机系统的性能。
b) 链上合约调用的费用:有些区块链在节点调用智能合约时,会收取一定的费用。例如,以太坊用户在调用智能合约中的功能时,会收取一定的气体费用,因为其他节点也需要计算智能合约的功能,以防止单个节点的数据欺诈。这些计算将消耗区块链节点的计算资源。在本实验中,成本计算规则是根据以太坊的 gas 消耗规则设置的。在本实验中,智能合约的调用表达如下:
其中 Cc 代表计算机操作的成本,Nc代表计算操作的数量,Cs 代表存储操作的数量,Ns 代表存储操作的数量,其他一些成本将由其他种类的操作带来。
c) 链外节点调用的数量:因为在这个实验中,所有由链外节点处理的请求的链外处理工作流程都是一样的。这是因为在链外处理流程中,没有判断分支的结构。因此,链下处理的所有请求在链外节点的成本消耗都是一样的,统计链外节点的调用次数可以反映链外成本的消耗。
实验前
假设。在本实验中,我们将不考虑数据源恶意提供错误请求结果的情况。同时,预言机网络不包含任何恶意的节点。因为恶意节点的判断和处理会在一定程度上占用链上和链外的的计算资源,从而影响我们对预言机网络性能的测量。
数据集描述。在这个实验中,我们不完全统计了 2020 年 9 月 18 日在 Etherscan 上使用的 5031 笔预言机(包括 ChainLink、NEST 等)的交易,以及 2020 年 9 月 23 日的 1157 笔。交易数据片段用于验证。
结果
在前面我们提到,将部分请求结果存储在区块链的智能合约中,并将存储的请求数与请求类型总数的比率定为 p。p 的值越大,智能合约中存储的数据就越多。我们设定不同的 p 值来训练分类模型,训练效果如表 1所示:
(表 1,模型的命中率和准确性)
我们观察到,不同的 p 值会对模型的准确性产生影响。这是由于样本量小,导致在数据标注时边界模糊。特别是对于出现次数少的数据样本,出现的几率更高。随着数据数量的增加,在实际应用中准确率会有一定程度的提高。
(图 4,不同 p 值下的总耗时)
在图 4 中,我们将不同的 p 值下的预言机设计模式与即时读取设计模式(p=100%)和“请求-响应”设计模式(p=0%)的耗时请求处理进行了比较。我们发现,当 p 值设置在 40% 到 60% 时,预言机的数据获取速度会比“请求-响应”模式的预言机有很大的提高,甚至与即时读取设计模式相似,但是当 p 值设置高于 60% 时,数据获取的速度并没有很大的提高。这都是由于数据的不均匀分布造成的。因为我们用分类模型上传了一些最有可能被重复读取的数据,虽然存储在链上的数据占比不高,但却涵盖了很大一部分的请求。因此,提高速度的关键是把一小部分常用的数据放在链上,以解决大部分的请求。
(图 5,不同 p 值下的链上功能成本)
(图 6,不同 p 值下的链外调用时间)
图 5 和图 6 分别反映了链上函数调用的成本和链外预言机调用的数量。值得注意的是,链上数据的一致性维护策略对链上函数的成本和链外预言机函数的调用次数有影响。在本实验中,我们采用了周期性部分数据维护的策略,即在一定时期后,对链上数据的一小部分进行维护。
从图 5 可以看出,随着 p 值的增加,链上函数的调用成本也会增加。一方面,部分成本是链上数据增加引起的一致性维护成本;另一方面,随着链上数据的增加,更多的请求将通过链上数据的快速响应得到处理,这些流程操作将引起消耗。当 p 的值为 0 时,我们观察到其增长率比其他的要小,这是因为“请求-响应”设计模式的预言机不需要搜索链上数据,而且搜索操作也不涉及对存储链上数据的智能合约的调用。但在预言机拥有足够的链上数据后,我们发现其他设计模式预言机的曲线斜率开始逐渐降低,因为调用链上数据会节省一部分链上数据聚合的成本。
链外的预言机实验结果比较复杂,如图 6 所示。我们将部分数据结果存储在链上,这将减少因重复读取同一请求而导致的链外操作。同时,它也会增加由于链上数据维护而产生的链外操作。因此,还找到平衡点可以减轻链外预言机的操作压力。我们可以观察到,当 p 在 0-40 % 的范围内,链外预言机调用次数呈现下降趋势;当 p 的值在 60%-100% 之间时,链外预言机调用次数变化不大。这表明,对于少量请求,维护链上数据的链外调用数量与直接对每个请求的链外预言机调用数量相似。它对整体优化的意义不大,所以可以忽略不计。一般来说,控制链上数据总量可以减少链外预言机的负载压力,也就是实验中的链外预言机调用数量。
(表 2,设计模式的比较)
最后,通过表 2 的比较,我们可以看出,“选择-存储”设计模式的预言机,如果有合适的 p 值,可以大大优化链上操作成本和链下调用,而整体读速损失较小。在我们的实验中,将 p 的值设置为 60% 左右是最佳的,这可以同时具有高响应速度、低链上成本和低预言机的负载。然而,在实际应用中,p 的最佳值的选择将随着请求分布的变化而变化。
限制条件
这个实验存在一些问题和缺陷,具体如下:
a) 数据集。该数据集只选取了部分预言机用户的交易数据,不能完全还原所有用户的真实需求,而且样本数据量较小,导致训练模型的准确性不高。
b) 时间延迟。在本实验中,由于区块链网络和预言机系统都建立在同一台主机上,区块链和每个预言机节点之间的通信延迟可以忽略不计。在本实验中,统一设置为 20ms。在实际情况中,区块链和预言机网络中每个节点的网络条件是不一样的。
c) 安全性。通常情况下,当数据源向预言机发送请求结果时,请求结果会被加密。在本实验中,我们没有对请求结果进行加密和解密,这就存在信息被中间人篡改的可能性。加密和解密也会造成预言机网络计算资源的消耗。而在本实验中,我们没有添加恶意节点,因此,我们无法得到我们数据聚合算法的容错区间。
结论和进一步工作
在这篇文章中,我们回顾并讨论了区块链系统中预言机的现状和现有设计模式。同时,我们提出了一种名为“选择-存储”的预言机设计模式,并使用这种设计模式来构建区块链预言机。我们将其与现有的预言机设计模式进行了比较。通过设置不同的 p 值,分析了一些指标,如花费的时间。我们通过实验发现,新提出的“选择-存储”设计模式预言机具有合理的 p 值范围内响应速度快、成本低的优点,这是即使读取预言机和“请求-响应”预言机所不具备的。同时,面对高密度的请求量场景,新的“请求-存储”设计模式预言机在理论上具有更高的吞吐量极限。文章来源:https://www.toymoban.com/news/detail-792668.html
在未来的研究中,我们会考虑更多优秀的机器学习模型进行分类。此外,我们还将考虑对于那些在区块链上存储数据的设计模式,是否会有更好的数据一致性维护策略和算法。同时,链上操作的成本要比链外操作成本高很多。因此,如果所有的数据聚合过程都在区块链上进行,成本会非常高,但如果所有的数据聚合过程都在链外进行,数据结果就会被第三方预言机所操作。是否存在链上和链外的协作聚合方式,也是可以研究的内容。文章来源地址https://www.toymoban.com/news/detail-792668.html
到了这里,关于【文献翻译】Select-Storage: A New Oracle Design Pattern on Blockchain的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!