以太坊使任意计算能够以分散和信任最小化的方式运行,但实际上开发人员在他们的智能合约中可以包含的计算类型中受到更多限制。由于GAS成本的原因,计算上繁重的任务很快就变得非常昂贵。它们的执行时间也受到网络达成共识所需时间的限制。结果,诸如视频转码和3D渲染之类的计算繁重的任务的链式执行是不可行的。然而,智能合约开发商仍有许多选择来解决这些限制。许多这些解决方案都借鉴了可验证计算的形式领域的想法,研究将计算外包给不受信任的第三方,同时保持可验证的结果。可验证计算的关键属性是客户端不仅能够检索外包操作的结果和正确性证明,而且能够以比实际操作所需的更少的计算能力验证正确性证明。
在以太坊的背景下,计算可以外包给oracles,第三方将外部数据推送到区块链。预言机(Oracles)可归类为
- 数据载体oracles将查询结果从可信数据源转发到智能合约
- 计算oracles不仅可以中继查询结果,还可以自己执行相关计算。计算oracles可以用作构建模块以构建离线计算市场
两种类型的oracles都可以用来将智能合约与任意计算的结果联系起来(需要注意数据载体oracles必须支持并且能够访问能够执行计算的现有数据源)。本文的其余部分概述了一些基于oracle的离线计算解决方案,以太坊开发人员可以使用这些解决方案将计算繁重的任务集成到他们的智能合约中,并比较他们不同的信任属性。
数据预言机
数据载体oracles通常使用加密证明来提供数据真实性保证。数据载体神谕的例子包括Oraclize和TownCrier。Oraclize提供了许多真实性证明选项,具体取决于所使用的数据源,包括基于TLSNotary和Android远程证明的证明。TownCrier使用受信任硬件(特别是英特尔SGX)的签名证明。
![](https://img.haomeiwen.com/i3959874/41873e06d7bae4fa.png)
Oraclize允许开发人员使用Oraclize的计算数据源在AWS虚拟机上获取任意计算的结果。开发人员可以将包含Dockerfile的zip存档和Docker应用程序的必要依赖关系上传到IPFS。Oraclize监视区块链,以便当智能合约使用存档的IPFS哈希查询Oraclize智能合约时,Oraclize AWS实例将检索存档,初始化并执行Docker应用程序,然后Oraclize智能合约将发送结果对原始智能合约的计算。
开发人员可以选择向Oraclize请求TLSNotary证明以验证数据的真实性。此证明使用TLSNotary算法,该算法允许审核员通过分割TLS主密钥生成的受审核方保留秘密来验证受审核方是否未篡改从数据源检索的数据(此功能仅适用于TLS v1 .0和v1.1)直到受审核方承诺结果的哈希值,以后它在获得保留秘密后才会显示。在这种情况下,Oraclize是受审核方,Oraclize AWS实例是审核员。Oraclize AWS实例设置为AWS oracle,这使任何人都可以验证一组程序是否在计算机上运行,并且在过去的某个时间使用AWS API进行了修改。真实性证明是Oraclize AWS实例的签名证明,即TLSNotary算法已执行且Oraclize无法篡改检索到的数据。因此,用户无需信任Oraclize。相反,用户信任亚马逊的基础设施,这可能是可接受的,具体取决于一个人的目标和偏好。
与Oraclize类似,TownCrier允许用户查询由外部服务监控的智能合约,该服务将查询中继到将从相关数据源检索数据的机器。主要区别在于TownCrier在英特尔SGX飞地执行代码,这是一个受保护的地址空间。在安全区中运行的任何进程都受到保护,免受硬件攻击和在同一主机上运行的软件的影响。此外,任何远程客户端都可以通过请求由安全区的硬件保护私钥签名的安全区状态的散列来验证在安全区中运行的软件。拥有飞地公钥的任何人都可以验证飞地对程序状态所做的签名证明。签名证明向用户证明,只要用户认为英特尔的可信硬件实施值得信赖,TownCrier就无法篡改检索到的数据。因此,用户无需信任TownCrier。相反,用户信任英特尔的硬件。再一次,根据一个人的目标和偏好,这可能是可以接受的。请注意,TownCrier目前仅支持有限数量的公共API,并且当前不支持用户定义的任意计算。
计算预言机
数据载体oracles非常有用,但由于它们仅用于从现有数据源中继数据,因此用户仍然必须信任数据源。计算oracles通过实际执行相关计算更进一步。过去已经提出了许多用于计算预言机的模型。该SchellingCoin协议刺激行为预言的分布式网络中的谁提交的结果是最接近的承诺,显示过程中的所有提交的结果的中值奖励参与者进行计算。一个可核查的计算模型预言机涉及m-of-n oracles对正确结果进行计算和投票,并能够通过提交保证金来挑战结果 - 在挑战的情景中,计算在链上进行以决定是否惩罚挑战者或a行为不端的预言机。以太坊计算市场在开放市场的背景下呈现可验证的计算oracle模型,其中任何人都可以请求由另一个市场参与者执行计算。
![](https://img.haomeiwen.com/i3959874/866b5325ae2473ad.png)
可验证计算市场最有希望的实现之一是TrueBit,它通过引入求解器系统扩展了以太坊计算市场的思想,并且验证器 - 求解器被补偿用于执行计算,并且验证器被补偿用于检测求解器提交的解决方案中的错误。 。此外,为了确保激励验证者密切监视求解器,TrueBit强制求解器偶尔提交具有验证者负责报告的错误的解决方案。在有挑战性的解决方案的情况下,求解器和验证器发挥交互式验证游戏,使得在多次回合之后仅在链上执行一小部分计算,在此期间挑战者对原始计算的子集进行争议。
![](https://img.haomeiwen.com/i3959874/708a3ca4a30bdc28.png)
像TrueBit这样的系统可能是可扩展的离线计算的理想解决方案,但考虑到开发仍在进行中,计算任务的估计验证税为5x到500x实际计算的成本,以太坊开发人员可能会考虑使用TrueBit作为其脱链计算解决方案的单个组件,而不是仅依靠TrueBit。一种选择是使用数据载体oracle,如Oraclize或自定义可信硬件oracle设置(或TownCrier,如果它支持计算任务),它提供了从执行计算的可信数据源中继结果的能力,并在使用TrueBit后使用TrueBit如果某个参与者认为数据载体oracle或数据源的信任属性已被破坏,则作为支持生产。
结论
将任意离线计算集成到智能合约中的能力将为开发人员创建加密经济协议和分散应用程序提供许多有趣的可能性。生产就绪的TrueBit将非常重要,但开发人员还应记住他们自己的开发路线图相对于TrueBit开发路线图的时间范围的时间范围,以及在准备好时使用TrueBit的最终成本。智能协议设计和利用当今可用的oracle解决方案可以帮助开发人员构建将持续到未来的离线计算解决方案。
翻译来源:medium.com
网友评论