TrueBit:一个可扩展的去中心化计算的代码执行法庭

月亮🌛   |     |   1080 次阅读

以太坊社区无时无刻不令我感到惊奇,许多聪明的家伙在可能性的前沿工作着。在当前的迭代中,我们的工作只是流于表面,仍未真正触及到未来可能性的表明,但我们已经看到了涌现出来的惊人的新机遇。

对于未接触这一领域的人来说,以太坊可以被描述为一种使用区块链技术的分布式全球计算机。它允许开发者把代码上传到区块链中,当代码被激活以更改共享账本上的一些信息时,它会在区块链上执行。换言之,你可以任意地把复杂的状态更改为共享的、公共的(相对而言)、不可更改的账本。p2p网络中的每个节点都同步在运行这些状态以及更改,而特定的计算机(矿工)则能确保这些状态更改难以逆转 (通过获得补贴和手续费)。为了执行状态的更改和计算,你需要按比例支付该平台的加密货币——以太币。你想做的计算越多,你就需要为它支付越多。计算的量是用一个单独的单位来衡量的,叫做“gas”。

当前模型(作为一个新模型的以太坊)的一个问题在于,它容许初级的分散式世界计算机: 1) 为保有该共享分类账中最新的事实,所有的节点仍然需要运行状态更新,尽管他们并不会得到奖励(又被称为“验证者的两难困境”); 2) 它运行得很缓慢,而且不能处理大量的计算和信息。由于所有节点都需要运行计算,并且状态更改是基于对交易的排序,因此以太坊虽然是分布式的,但它的速度却堪比网络中最慢的计算机。

能够并行处理交易的可扩展性解决方案已经在筹划之中,方案可以极大地增加它运行的交易的数量。在未来,并非网络中所有的计算机都需要运行全部的状态更改。它将转向成一个模型,在这个模型中,网络中的计算机将被更精确地合成为一个大型的分布式计算机。这些解决方案仍然有极大的发展空间,目前正在积极地制定中。

另一个可获得扩展性的有趣模型是使用以太坊作为计算法庭。Piper Merriam设计了一个计算市场。当在以太坊上定期运行这些计算的开销太大时,特别适合使用它。它通过以下方式节省成本:

  • 开发人员上传智能合约代码。

  • 代码在市场中指定它想要运行的输入特定值的函数。并且,它支付给市场的费用比它在以太坊上实际运行时造成的成本要低。

  • 一个链外第三方负责计算并将结果发布到市场上,并附上一笔保证金。在发生争议的时候,这笔保证金将足以在以太坊上实际运行该代码。

  • 另一个第三方也同样可以运行。如果它监控到另一个第三方在市场上作弊,那么它就可以用相应第三方支付的保证金来强制实施链上执行。如果最早的上传者是正确的,他们就会得到他们的保证金和应得的款项。如果他们是错误的,他们就得不到这笔钱,只能拿回未花费在执行上的剩余保证金。

  • 在给定的一段时间过后,如果没有任何挑战,那么答案就会被“接受”,随后,款项将被支付,并且保证金也可以返还。

在这个市场上,你只需要在一群充满恶意的参与者中找到一个诚实的参与者就够了。这是一个非常有效的系统,通常只有在出现错误的计算结果时才会看到错误的答案(这似乎不太可能,因为以太坊虚拟机是确定的,不具备随机性),或者有人实际上在试图作弊并希望没有人注意。然而,在一个功能完备的市场中,很有可能出现主动的检查。在这种情况下,最可能出现的情况是,运行计算要比在以太坊上运行要便宜得多。这样做的代价是,你可能需要等待一段时间才能继续实施后续的执行,因为你需要等待质疑周期100%完成后才能继续。一个更有效的市场意味着等待期可以缩短,因为那里有一大批的验证者随时准备着质疑和强迫作弊者。这假设了验证在一开始就会进行。这个计算法庭,如果正常工作的话,将分化出一种不需要真正运行验证的情况,因为它使作弊变得不可行。

这就是“panopticomputer”(全景计算机)。
不需要外力,计算机就会保持诚实,因为一旦行为不当,计算能力就会被调用。


这是福柯的全景监狱:被一个看守人监视的囚犯,并不知道他们是否被监视,因此会控制他们自己的行为。

计算市场的局限性在于:

  • 你需要把你的所有代码都放在以太坊上,并在面对质疑的时候要求全部执行。这最终还是会减少可以在现有的gas限制条件下运行的计算的可能范围。

  • 它受限于EVM(以太坊虚拟机)的能力。你需要在其中编写代码,且不能将计算转移到其他编程语言。

因此,就目前而言,如果你想要建立一个要求联通状态的去中心化整合以及去中心化控制的应用程序,你会使用最新迭代版本的以太坊。这种做法代价较高,但也有很多的好处,例如,你并不会真正验证到它运行着一个神经网络。除了……这就是TrueBit的所在,一份来自Christian Reitwießner, Jason Teutsch 和 Loi Luu的建议。

他们是一个非常棒的组合。它使用了计算市场的概念,并加上了一项能力:以低于在链上完整运行整个指令的成本来验证指令。换句话说,验证一个提交的答案是否正确,比运行它所花费的计算要少。你不需要运行整个指令来验证提交者是否作弊。因此,你可以验证出结果已经作为指令发布,而该指令比以太坊能装下的要大得多。

因此,使用以太坊,你只需将验证脚本上传至区块链。这些都是在EVM中编写的,但是它可以验证任何图灵语言。例如,你可以验证C++或Rust。

它使用了我们最喜欢的数据结构:默克尔树。在图灵指令集的每个节点上,两个实体(解决者和质疑者)之间使用二进制搜索进行互动游戏,以此来验证当计算步骤之间的记忆和状态的默克尔证明无法增加的时候,在这一状况被证明为可知的情况下(统计上有显著的机会存在哈希冲突的几率),到底两个实体中的哪一个在作弊。验证游戏是在以太坊中运行的,该合约在特定时间请求该默克尔哈希,然后更改一个状态,以检查所产生的默克尔哈希是否与请求的哈希相匹配。编写这些验证脚本需要运行游戏并进行中间更改。

你可以在这份白皮书中阅读到这种验证的基础。这篇由Christian Reitwiessner发表的关于智能合约法庭的博客文章则加以了扩展说明。

它将以太坊从一个运行缓慢的分布式的全球计算机变成了一个大规模可扩展的计算机。它变成了一个庞大的去中心化的数学法庭。在计算纠纷的情况下,它通过运行验证脚本来强制执行。正如前面所提到的,它的美妙之处在于,如果出现问题,它只需首先运行验证脚本:有人试图作弊。你只需要一个诚实的参与者就能消灭所有恶意的骗子。

这是具有革命性的,它在本质上进一步使得以太坊成为一个新的去中心化计算系统的基础层。以下引用了Christian Reitwießner的一段话,这段话解释了在以太坊上运行神经网络的可能性:

使用TrueBit项目,智能合约可以让外部程序以不可靠的方式执行例程,他们可以为此使用兆兆字节的数据(这是现代所需的深度学习):如果你把庞大数据集的根哈希编码为智能合约,它以此来训练神经网络(当然也只作为其根哈希存储),并根据这些数据做出决策,甚至还可以通过更新哈希列来更新数据。只要数据对外部执行器(至少是一个诚实的验证者)可用,系统就能保持运行。在我们群集的时候,智能合约实际上可以在经济上强制数据的可用性

所有软件服务的边际成本会降为零吗?

如果你推断有这种可能性,它更加令人眼花缭乱。潜在的可能是,所有软件服务的边际成本都趋于零。区块链和以太坊引入了这样一种概念,即我们现在可以运行那些不再需要组织来维持它们的软件。软件总是需要人类和组织的实体世界来维持自身。我们不得不围绕软件建立组织。但是,使用一个集体的计算基础设施,模型就会被反转过来。软件是独立存在的,并且按每次执行付费模式运行。它将一直存在,直到它执行,然后休眠,直到再次执行。这意味着,为了能够更好地发展,软件代理只需为自己的维护费用买单。这种观念引发了早期在比特币社区里许多关于自动驾驶汽车自有概念的争论。因为它只是一辆汽车,它不需要盈利,它只需要支付自己的成本来为人类服务。面对这种可能性,有组织地运行软件其实成本极高。组织由人构成,这些人需要生存,也拥有权利,还有内在的动机比如贪婪,他们要赚的钱比仅使一项服务存在所需要的更多。但软件并不如此(或者说,也不需要由人来构成)。

这就意味着随着时间的推移,从经济的角度来看,转向以零边际成本执行的软件似乎是不可避免的。然而,以区块链现在的发展状况还不能使所有软件都能以零边际成本运行。它发展得依旧很缓慢。然而,有了TrueBit,它似乎更可能以零边际成本执行任何软件服务。这个成本将包括:为市场支付的费用,它自己的内部运作系统以及外部参与者运行计算的成本(能量+潜在的人类)。

作为Trent McConaghy发布在AI DAOs上的一部分,我提交了一个使用futarchy&TrueBit进行自我生产技术的服务的WIP版本。它生产的技术越好,它能继续创造的技术就越多。在整个过程中,没有需要支持的人类。我已经开始着手一个更通用的版本,并且需要更多的设计工作。前期的基本想法是这样的(这里可能存在漏洞):

  • 智能合约的任务是提供某种服务。一些以太被传送到那里,并进行生产。

  • 然后通过Futarchy查找和附加外部代码来完成这项服务。

  • 智能合约将自动开始提供服务,同时要求TrueBit市场为其执行结果。

  • 它所要求的价格,应该足以让它继续经营futarchies,使futarchies得到改善并发布到市场上(以零边际成本为零)。

使用TLSNotary 证明(如同Oraclize.it使用的那样),它甚至可以与web交互,就像它现在所代表的那样。有了以太坊的EIP 101,只需触发智能合约,它就可以为自己的“gas”成本买单,而不需要用户激活它。

最终,这将越来越朝着“软件不需要为其背后的人类付费”这一方向发展。它只需要足以维持自己服务能力的成本即可。

不确定性

然而,当前的实施也存在不确定性。验证脚本需要精确编写,以便正确地验证计算(这似乎是一项艰巨的任务)。

市场中存在着一些需要补充的加密经济条件。例如,等待时间仍然是必需的,如果一个作弊者提交错误的答案,那么市场就需要有足够的时间留给挑战者。这个互动游戏,在被迫时,需要几个区块才能进行下去(不是很长)。而对于一组计算而言,这就在一定程度上被限制了。如果执行了其他可扩展性解决方案,那么游戏的速度就会大大加快。另外,围绕潜在的女巫攻击的一些经济问题也可能会使其偏离轨道。但这些似乎都不是无法克服的。

未来

TrueBit的潜力似乎相当具有革命性。它将以太坊变成了一个去中心化的计算法庭,容许很多软件以零边际成本运行。

这个角度来看,最牵强的观点是什么呢?它似乎可以运行一个由以太坊执行的神经网络,这就引出了AI DAOs的问题。那么所有关于去中心化虚拟模拟现实的想法呢?它至少变得更加可能。

在过去的几年里,真正让我感到惊讶的新技术屈指可数:只有比特币、以太坊、IPFS(&IPLD)以及现在的TureBit。我真心希望TrueBit能被开发、测试和使用。


我是@ConsenSys的一位工程师。
感谢Christian Reitwießner百忙之中抽出时间帮我阐述一部分内容并解答一些问题,真心感谢你所做的一切。
感谢Dave Hoover & Joseph Chow的编辑与反馈。


原文链接: https://medium.com/@simondlr/an-intro-to-truebit-a-scalable-decentralized-computational-court-1475531400c3
作者: Simon de la Rouviere
翻译&校对: 俊颖 & Elisa

 
1 人喜欢