预言机对于区块链和真实世界的应用是必要的吗?

预言机对于区块链和真实世界的应用是必要的吗?

Pythia - Greek Oracle at Delphoi

从技术角度看,区块链非常有趣,因为它结合了许多技术(密码学、通信协议、共识算法和其他技术)。但是,从商业或者任何其他技术角度来看,如果区块链不能用于解决问题,或者不能更好地描述并发现现实生活中的例子,那么它就是没有价值的。

区块链存在一些问题(例如可扩展性、成本)。但是经常有一个问题被忽视了(或者至少没有被过多的讨论)。这个问题源于没有智能合约的虚拟机(VMs)或脚本链的本质。我们将重点关注具有虚拟机(VM)的链,也就是说支持智能合约的链。

虚拟机是一个在隔离坏境中的执行代码(智能合约)。去中心化的方式可以证明这个观点。问题在于虚拟机(VM)不能直接访问环境之外的任何数据。这个“外部”是我们所关心的真实世界。任何实际的应用程序都必须能够访问这些数据。例如,交易软件客户端必须实时访问股票价格,会计软件必须获得公司发票、员工工资等数据。当然,智能合约可以从任何能够访问智能合约的触发此功能的人手中动获取数据。数据作为参数传递给运用功能,通过这种智能方式从外部世界获取所需的数据。

问题已经解决。但区块链的全部意义在于去中心化,或者换句话说,是以一种缺乏信任的方式去建立信任。用户不应该信任任何人。在上述场景中,用户必须信任将数据提供给智能合约的实体。这违背了使用区块链的目的。但是预言机来了,它会试图解决这个问题。

什么是预言机?预言机是一个(通常是服务器)或一组实体,它们独立于智能合约所有者之外,并且向智能合约在通常情况下实时提供特定的现实世界数据。

智能合约最常见的数据需求:

  • –加密货币和法定货币之间的汇率,股票市场和商品价格
  • –随机数。也许看起来很奇怪,但其实虚拟机不能产生真实的随机数,因为它是一个具有确定性的机器。对于相同的输入,所有验证器(节点)之间的输出必须匹配,因此不能产生随机元素。并且随机性必须来自外部作为其输入方式。
  • –体育赛事结果
  • –去中心化应用运行所需的任何其他数据,这类数据在不同的应用之间差异很大。

预言机可以是中心化的,也可以是去中心化的。中心化的预言机是一个实体,它可以是一个服务器,也可以是属于同一所有者的一组服务器。为了保持操作成功,中心化的预言机必须至少具有以下属性:

  • –完全独立于智能合约拥有人及智能合约使用者之外。预言机必须没有欺骗的动机
    (提供错误的数据)
  • –它必须有一个悠久而清晰(诚实)的记录。必须按照协议操作,及时提供正确的数据。
  • –它必须有基础设施(硬件和软件)来做到这一点
  • –它必须有很高的信誉;信誉越高,预言机用错误的行为破坏其信誉的机会就越低。
  • 很明显,中心化的预言机存在“单点故障”问题。但它也带来了优点:快速和非常低的成本。

去中心化预言机实际上是一组预言机,可以通过不使用经验法则或标准架构来实现这一点。去中心化预言机基本特性是:提供合约的数据首先必须经过一致同意。但不是区块链共识,而是一个独立的共识。考虑到所有预言机提交的数值,并且一些机制(算法)决定数据的最终数值。因此我们可以用一些方法可以用来实现去中心化的程度:
a)预言机分区:有一群已知并拥有投票权的预言机。为了鼓励他们诚实行事,一个智能合约存储中的分数将会用来衡量他们的诚实程度。正确的数值是由投票决定的(所有的预言机都投票)。被拒绝的值为预言机的负分数,而正确的值为正分数。
这个分数有两种用法。首先是改变投票的分量。所以投票是不平等的,但却承载着诚实得分的分量。第二种方法是用经济惩罚的方式对付违规者。预言机们在智能合同里存了一份保证书。如果分数太低,或者每答错一次,他们就会失去一些点数。如果担保达到零或分数非常低,智能合约会完全将它们从分区中移除。

b)任何人都可以成为预言机:就像是之前所提到的解决方案,但是任何人都可以成为预言机。区别在于它不像a那样每次都被强制投票,但当每次想参与时都可以赢(或输)一些点数。因此为了参与,必须首先提交一定点数到智能合同作为保证。这样确保了每个人都有提交正确价格的积极性。

c)有自己共识的独立系统:预言机有自己的网络(通常是区块链)共识算法和货币。决定是在另一个系统中做出的,且这个系统必须具有终结性。通过其共识算法确定并最终确定值后,直接将该值提交给所属区块链的智能合约。在这种情况下,智能合约信任另一个系统,因此不需要任何保证,并在另一个区块链中以去中心化的方式进行决策。

对于上述解决方案,有许多细节、攻击和交易类型。由于这个主题的复杂性,我们将在其他文章中详细介绍。在这里,我只说一个所有去中心化预言机都可能有的共同弱点:“被占便宜”。任何预言机都可以读取另一个预言机的交易,复制并提交它。因为它有一项很重要的工作要做:获得“免费”的价值。也就是说,不需要拥有自己的基础设,就能绕过自己的运营成本,然后窃取信息。这是非常危险的,因为它破坏了去中心化,使攻击更加容易和有效。

幸运的是,有一个简单的解决方案可以解决这个问题,那就是使用密码学。我们将提交分为两个阶段。预言机必须在第一阶段提交答案的哈希值,在第二阶段提交最终答案。这样,任何预言机都不能从另一个预言机复制数值,因为答案的希哈值是在第一阶段提交的。

对于预言机的功能,哪种使用方法是最正确的?显然我们没有一个万能的最佳解决方案。但正确的方法取决于应用的性质和需求。

以上只是对预言机的介绍,更多的分析将在以后的文章里进行。