以太坊:图灵-完全性和丰富的状态解释
以太坊:图灵-完全性和丰富的状态解释

如果你是最近对区块链和加密货币兴趣爆发的追随者,你肯定听说过以太坊平台的发明者和预言家 T2。对于那些刚刚接触这个话题的人来说,这里有琳达·谢写的以太坊入门指南和 Preethi Kasireddy 写的关于加密市场和区块链的文章。我建议在阅读这篇文章之前,至少对以太坊和区块链有一个基本的了解。
虽然以太坊的价格自今年年初以来飙升了约 5000%,但该平台及其交易货币以太无疑吸引了相当多的批评者。最近,我注意到布特林写的一篇非常有趣的文章,这篇文章谈到了投资者和加密爱好者在 r/BTC 博客中提出的许多共同关注的问题。许多支持以太坊的人转发了他的回应,但我最感兴趣的是这些评论:
为了帮助告知以太坊投资和交易社区,我想尝试分解 Buterin 的陈述,以便我们这些没有丰富 CompSci 或开发经验的凡人也能理解。在本文中,我想讨论与以太坊平台的图灵完全性相关的最初几个异议。对于那些不知道的人来说,该平台最初是基于图灵完备性进行大量营销的,这引发了一场大规模的辩论。讨论的主要收获如下:
- 以太坊平台是用一种功能上不同于 比特币 的图灵完全语言搭建的。关于这样一种语言是否必要存在争议,因为它有可能使系统变得不安全和不可预测。Buterin 对这一评估提出质疑,并指出,为了满足额外的安全需求,平台上还提供了一种可判定的语言。
- 波斯特定理被引用来支持这个反对意见。布特林认为关于图灵完备性的争论没有抓住要点,并承认以太坊平台最初不应该以这种方式上市。以太坊真正的价值主张是“富于状态”,或者说是区块链级别的透明。然而,他指出,让图灵完备性提供的功能在智能契约中实现更复杂和精密的逻辑仍然很重要。
迷茫?让我们试着打破围绕图灵完备性的反对意见,以及 Buterin 在上面 Reddit 帖子中的回应。
图灵完备性和可判定性
图灵完备性很差,为了安全你需要可判定性!
对以太坊平台的一个普遍批评是,由于其作为“图灵完全”系统的灵活性,它具有潜在的不安全性或不可预测性。
给定足够的资源,任何能够计算任何可计算事物的系统或编程语言被称为 图灵完全 。简单来说,它可以模拟计算机,据说是最有表现力的。例如,比特币并不完整,因为它只提供了一种非常简单的分发货币的机制。以太坊,即所谓的“世界计算机”,允许以任何可以用代码表达的方式编写规则,并实现智能合约(例如,你酗酒的岳母喝下五分之一的伏特加,并被她车内的呼气测醉器检测到,因此一旦车停好,她的钥匙就停止工作,她的汽车保险费用也同时上升)。
下面是一个经常被引用来说明这个想法的 xkcd 漫画。如果有足够的内存和时间,图灵完备系统应该能够运行任何可以想到的算法(也称为通用计算能力)。在这部漫画中,角色使用岩石作为比特串的类似物,在无限的时间和空间中模拟宇宙。
xkcd.com 最好用 Netscape Navigator 4.0 或更低版本在苹果 IIGS 上用 Javascript 模拟的奔腾 3 1 上观看…
xkcd.com](https://xkcd.com/505/)
现在我们大致掌握了图灵完备性的思想,我们可以开始理解这种自由的代价是放弃“可判定性”。我们可以把 可判定性 看做一个问题是否可以用算法解决或计算。一个加法问题被认为是可判定的,因为一系列步骤(加 1,进位 10,重复)在不变的条件下带给我们一个有意义的,安全的结果:45 + 375 = 420。
同时,不可能构造一个算法来回答一个不可判定的问题。一个经典的例子是停机问题——你能肯定地告诉我,我正在运行的一个计算机程序是会无限运行下去,还是有一天会停止?有很多关于这个主题的文献以及哲学含义(程序自我分析能力的限制与我们人类思维的相似性),但简而言之,如果没有可判定语言的限制,程序未来会做什么是不可预测的。在以太坊的上下文中,这意味着我们根本不可能在运行智能合约之前知道它会做什么。复杂性越大,事情出现严重错误的可能性就越大。此外,图灵完整语言所赋予的表达能力可以支持恶意参与者的方案(例如,攻击者可以通过迫使其他挖掘器或节点进入无限循环来编写将它们拒之门外的契约)。
我们不同意,但是如果你想要决定,这里有一个以太坊之上的可决定的 HLL 给你:http://github.com/ethereum/viper
Vitalik 的上述回应只是表明他是以太坊平台所赋予的灵活性的坚定支持者,并将观众引向 Viper,该平台上的一种高级编程语言(HLL)是可决定的(包括 128 位整数和定点十进制值等限制)。从以太坊 wiki 中,开发团队写道“我们的解决方案(阻止无限循环攻击)通过要求事务设置它被允许采取的最大计算步骤数来工作,如果执行需要更长时间,计算将被恢复,但费用仍将支付。”
波斯特定理&丰富的陈述
但是我们不需要图灵完备性,因为波斯特定理!
先说波斯特定理。总的来说,当涉及到智能合约的功能时,论点是图灵完全语言是不必要的,甚至是多余的。波斯特定理认为,提前向节点提供信息和预期结果要高效得多,而不是利用每一个节点来评估和验证你的智能合约交易。
一个简单的例子可能是和你多疑的家人去快餐店。不用每个家庭成员都跟着每个员工,以确保他们正确地准备每个人的订单,他们可以简单地比较订单与收据的匹配程度。换句话说,节点只需要观察到状态转换与预期的中间和最终状态相匹配。
当然,但这与图灵完整性无关,你没有理解为什么像以太坊这样的富状态模型可以做 UTXO 模型做不到的事情。Moeser-Eyal-Sirer 钱包开始。然后,我们可以谈论先进的国家渠道建设,如这个,ENS 拍卖,等等等等。
为了给布特林的评论提供更多的背景信息,我还想加入一条最近的推文:
Rich Statefulness”? ¯_(ツ)_/¯
在这里,Buterin 相当悲伤地回顾了你在本文中读到的几乎所有内容的重要性。在另一篇 Reddit 评论中, Buterin 写道,“在描述[以太坊平台]时,强调图灵-complete 是错误的,但以太坊仍然基本上有能力做更多事情的事实仍然存在”。相反,他专注于一个概念,即他显然创造了“富有的治国之道”。这个术语只是指系统在区块链水平上记忆事物的能力。例如,如果你为一份“无信任保险”合同捐款,你的捐款、票据和索赔,无论是当前的还是以前的,都将自动更新,并与成千上万的其他信息一起被记录在区块链上。
这对于比特币来说是不可能的,比特币被认为是无状态的,因为它建立在一种叫做 UTXO(未用交易输出)的模型上。为了不浪费生命中更宝贵的时间,我将快速总结一下:每笔比特币交易都会消耗并产生一个或多个 UTXO 坏男孩,通过多个步骤使交易变得复杂。为了说明这种模型下的一个典型的简单交易,我们需要访问一个奇巧巧克力棒占统治地位的世界。比方说,我给了我的超重朋友九块半(9.5 英镑)的奇巧巧克力棒,来获得绝妙的时尚建议。在 UTXO 模式下,我不能只给自己一个喘息的机会,交出半根棒。相反,我不得不前往巧克力工厂,在那里,巧克力商将拿走我的一根巧克力棒,将其熔化,生成新的半根巧克力棒(UTXO)供我保存,并将另一半(UTXO)交给我的胖朋友。不幸的是,这个过程必须在每次 Kit-kat 易手时发生,所以这意味着我永远无法有效地为我的朋友支付非常复杂的任务,比如在一年中的满月下建造不同的姜饼屋的多阶段、有条件的付款,这取决于我的占卜板在质数天割草时的突发奇想。事实上,我们所有人都患有早发性阿尔茨海默氏症,并且很难记住我们以前的交易,这使得事情变得更加复杂。如果 UTXOs 真的引起你的兴趣,你可以在这里阅读更多关于它们的内容。
他列举了一些以太坊的可能性,但没有在杂草中迷失太多( ENS 拍卖、 Moeser-Eyal-Sirer 钱包等)。),Buterin 解释说,他一直希望以太坊的图灵完备语言作为一个基础层,为平台提供灵活性,而真正的价值主张在于模型丰富的状态。总之,这使得复杂合约的实施成为可能,而在比特币模式下,这些合约根本不可能实现,或者过于繁琐。
最终,这些讨论继续反映了我们所生活的激动人心和不断发展的区块链时代。随着新的企业巨头开始大肆宣传,越来越多的 ico 上架,我坚信投资者和观察者都值得开始深入冰山表面,了解将推动我们去中心化未来的激烈辩论。感谢您的阅读,我希望您能更好地理解以太坊和区块链作为一个整体对许多前沿观点的一些关键批评和反驳。