【酷币交易平台】《区块链验证的哲学》
8月17日,以太坊联合创始人Vitalik Buterin在个人网站上发布了名为《区块链验证的哲学》的论文,其内容如下。
区块链最强大的特性之一就是可以独立验证区块链执行的每个部分。即使大部分区块链矿工(或PoS中的验证者)被攻击者接管,但如果该攻击者试图推送无效块,网络将简单地拒绝它们。即使是当时未验证区块的那些用户,也可能会(可能自动)警告那些用户,这时他们可以检查攻击者的链是否无效,并自动拒绝它并协调接受遵循规则的链。
但是,我们实际上需要多少验证?我们需要一百个独立的验证节点,一千个吗?我们是否需要一种文化,使全世界的普通人都运行检查每笔交易的软件?这些问题是一个挑战,也是解决的一个非常重要的挑战,尤其是如果我们要构建具有共识机制的区块链要比区块链空间最初起源的单链“ Nakamoto”工作证明更好的话。
为什么要验证?

51%的攻击推动无效块。我们希望网络拒绝连锁!
验证链对用户有益的主要原因有两个。首先,它最大程度地提高了节点可以正确确定并在规范链(社区认可的合法链)上发言的机会。通常,规范链被定义为类似于“具有最多支持它的矿工/验证者的有效链”(例如,比特币中的“最长有效链”)。根据定义,无效链将被拒绝,如果在多个有效链之间进行选择,则获得矿工/验证者支持最多的链将获胜。因此,如果您有一个可以验证所有有效性条件的节点,从而检测到哪些链有效而哪些链无效,则可以最大程度地提高正确检测规范链实际的机会。
但是,还有另一个更深层的原因证明链的有效性。假设有实力的参与者试图推动对协议的更改(例如更改发行),并得到了大多数矿工的支持。如果没有其他人验证该链,那么这种攻击就很容易成功:每个人的客户默认都会接受新链,等到任何人看到正在发生的事情时,将由持不同政见者来尝试协调拒绝那个链条。但是,如果普通用户都在进行验证,那么协调问题就落在了另一侧:现在,试图更改协议以说服用户积极下载软件补丁以接受协议更改的任何人都有责任。
如果有足够多的用户正在验证,则取代默认的胜利而不是强制更改协议的有争议的尝试将默认为混乱。默认为混乱仍然会造成很多破坏,并且需要带外社会协调来解决,但是这在攻击者面前设置了更大的障碍,并使攻击者对自己能够逃脱的信心大大降低。干净利落的胜利,使他们甚至没有发动进攻的动力。如果大多数用户正在(直接或间接)进行验证,而攻击仅得到大多数矿工的支持,则该攻击将完全默认为失败,这是所有结果中最好的。
定义视图与协调视图
请注意,这种推理与我们经常听到的另一种推理方式截然不同:改变规则的链某种程度上“根据定义”不是正确的链,并且无论有多少其他用户接受一些新规则集,重要的是您个人可以遵循自己喜欢的旧规则而处于连锁状态。
这是加文·安德森(Gavin Andresen)的“按定义”观点的一个示例:

这是Wasabi钱包里的另一个东西;从解释完整节点为何有价值的角度来看,这一点更为直接:

请注意此视图的两个核心组件:
1.您认为根本和不可转让的是,不接受规则的链的一个版本被定义并不是比特币(或不复仇或任何其它链),而不是不管多少人接受链。
2.重要的是,您必须保持链上有您认为可以接受的规则。
但是,我相信这种“个人主义”观点是非常错误的。为了弄清原因,让我们看一下我们担心的情况:绝大多数参与者接受您认为不可接受的协议规则的某些更改。例如,设想一个未来,交易费用将非常低,并且为了保证链条的安全,几乎其他所有人都同意更改为增加发行量的一组新规则。您会顽固地继续运行继续执行旧规则的节点,并且分叉到与大多数节点不同的链上。
从您的角度来看,您仍然可以将硬币放在可以接受的规则下运行的系统中。但是那又怎样呢?其他用户将不会接受您的硬币。交易所将不接受您的硬币。公共网站可能会显示新硬币的价格有些高,但它们指的是多数链上的硬币。您的硬币毫无价值。加密货币和区块链从根本上说是一种社会建构。如果没有其他人相信它们,它们将毫无意义。

那么替代的观点是什么?核心思想是通过协调问题将区块链视为工程安全。
通常,世界上的协调问题是一件坏事:尽管对于大多数人来说,如果英语摆脱其高度复杂且不规则的拼写系统并改成语音,或者如果美国改用公制,那会更好。如果在经济衰退的情况下我们可以立即将所有价格和工资降低10%,那么实际上这要求每个人都同时同意这一转变,这通常非常困难。
但是,在区块链应用程序中,我们利用协调问题来发挥自己的优势。我们正在利用协调问题造成的摩擦来抵制中央行动者的渎职行为。我们可以构建具有属性X的系统,并且可以保证它们将保留属性X,因为将规则从X更改为not-X将需要一大堆人同意同时更新其软件。即使有一个演员可以强制进行更改,这样做也将非常困难-比如果用户有责任积极协调异议人士来抵抗更改要困难得多。
请注意这种观点的一个特殊后果:不是完全节点的目的仅仅是为了保护您,在有争议的硬分叉的情况下,拥有完整节点的人很安全,而没有完整节点的人很容易受到攻击。相反,这里的观点更多是一种群体豁免权:验证的人越多,每个人的安全性就越高,即使只有一部分人在进行验证,结果每个人都得到了高度的保护。
深入验证
现在,我们进入下一个主题,这个主题与诸如轻客户端和分片之类的主题非常相关:通过验证,我们实际上将完成什么工作?为了理解这一点,让我们回到较早的时候。如果发生攻击,我认为在攻击进行时,我们具有以下优先顺序:
默认为失败>默认为混乱>默认为胜利
当然这里的“>”表示“优于”。最好的方法是,如果攻击完全失败;第二个最好的选择是如果攻击导致混乱,每个人都对正确的链条持不同意见,最糟糕的是如果攻击成功。为什么混乱比胜利要好得多?这是一个激励问题:混乱增加了攻击者的成本,并否认了他们甚至会获胜的确定性,因此从一开始就阻止了攻击的进行。默认到混乱的环境意味着攻击者需要赢得这两个让51%的攻击blockchain战争和说服社会沿着沿的“社交战争”。这比仅仅发起51%的攻击并在那里取得胜利要困难得多,吸引力也要低得多。
验证的目标是从默认状态改为胜利,从(理想情况下)默认为失败,或(不太理想的情况下)默认为混乱。如果您有一个完全验证的节点,并且攻击者尝试使用不同的规则推入一条链,则攻击将失败。如果某些人拥有一个完全验证的节点,而其他许多人没有,则攻击会导致混乱。但是现在我们可以想到:还有其他方法可以达到相同的效果吗?
轻客和欺诈证明
这方面的自然进步是拥有欺诈证明的轻客。当前存在的大多数区块链轻客户端通过简单地验证大多数矿工是否支持特定区块来工作,而不必费心检查其他协议规则是否正在执行。客户以大多数矿工是诚实的信任为前提。如果发生有争议的分叉,则默认情况下,客户端会遵循多数链,如果用户希望遵循旧规则,则由用户采取积极的措施;因此,今天受到攻击的轻型客户默认是胜利。但是,借助防欺诈技术,情况开始看起来大不相同。
最简单形式的欺诈证明的工作原理如下。通常,区块链中的单个区块仅接触区块链“状态”的一小部分(账户余额,智能合约代码...)。如果经过完全验证的节点处理了一个块并发现它是无效的,则他们可以生成一个包含该块以及来自区块链状态的足够数据来处理该块的软件包(欺诈证明)。他们将此包裹广播给轻客。然后,轻量级客户端可以拿走软件包并使用该数据自己验证该区块,即使它们没有链中的其他数据。

区块链中的单个区块仅涉及几个账户。欺诈证明将包含这些帐户中的数据以及证明该数据正确的Merkle证明。
这项技术有时也称为无状态验证:客户端只能保留块头,而不是保留完整的区块链状态数据库,并且可以通过向其他节点要求任何期望状态的Merkle证明来实时验证任何块阻止验证的条目正在访问。
该技术的强大功能是,轻客户端只有在听到警报后才能验证单个块(并且警报是可验证的,因此,如果轻客户端听到虚假警报,他们就可以停止监听该节点的警报)。因此,在正常情况下,轻客户端仍然是轻客户端,仅检查大多数矿工/验证者支持哪些块。但是,在多数情况下,多数链包含一个轻客户端不会接受的区块的情况下,只要至少有一个诚实节点来验证欺诈区块,该节点将看到该区块无效,广播欺诈证据,并且从而使网络的其余部分拒绝它。
分片
分片是对此的自然扩展:在分片系统中,系统中有太多事务,大多数人无法一直直接进行验证,但是如果系统设计良好,则可以检测到任何单个无效块,并且其无效性带有欺诈证据的证据,该证据可以在整个网络中传播。共享网络可以概括为每个人都是轻客户端。只要每个分片都具有一些最小阈值参与者数,该网络就具有从群免疫力。
此外,在分片系统中,区块生产(而不仅仅是区块验证)是高度可访问的,甚至可以在家用笔记本电脑上完成,这一事实也非常重要。网络核心不依赖高性能硬件,这确保了反对少数族裔链的可行性的低标准,这使得多数派驱动的协议更改“默认获胜”甚至欺负其他人变得更加困难提交。
这就是可审计性在现实世界中通常的含义:不是每个人都一直在验证所有事情,而是
(i)每个特定部分都有足够的视野,如果有错误,它将被发现,
(ii)检测到一个错误,使所有人都清楚可见。
也就是说,从长远来看,区块链肯定可以改善这一点。改进的一个特殊来源是ZK-SNARK(或“有效性证明”):有效验证的密码证明,使区块生产者可以向客户证明区块满足某些任意复杂的有效性条件。有效性证明比欺诈证明更强,因为它们不依赖于交互式游戏来捕获欺诈。另一个重要技术是数据可用性检查,可以防止未完全发布数据的块。数据可用性检查的确基于非常保守的假设,即网络中某处至少存在少量诚实节点继续适用,尽管好消息是此最低诚实阈值很低,即使存在大量的攻击者。
时间和51%的攻击
现在,让我们了解“默认为混乱”思维方式最有力的后果:51%的人会攻击自己。在许多社区中,当前的规范是,如果51%的攻击获胜,那么51%的攻击必然是有效链。该规范经常严格遵守;最近以太坊经典51%的攻击就说明了这一点。攻击者还原了3000多个数据块(在此过程中以双倍的价格窃取了807,260个ETC),这使得该链的历史比两个ETC客户端之一(OpenEthereum)在技术上能够还原的时间更远。结果,Geth节点与攻击者的链保持一致,但OpenEthereum节点仍与原始链保持一致。
可以说,攻击实际上默认是混乱的,尽管这是偶然事件,而不是ETC社区的故意设计决定。不幸的是,社区随后选择接受(较长的)攻击链作为规范,eth_classic Twitter将其描述为“遵循预期的工作量证明”。因此,社区规范积极地帮助攻击者获胜。
但是,我们可以相反地就规范链的定义达成不同的共识:特别是,想象一个规则,一旦客户接受了一个区块作为规范链的一部分,并且该区块有100多个后代,那么客户将从那时起永远不要接受不包含该区块的链。或者,在具有最终确定性的股份设置证明(例如,以太坊2.0是)中,想象一个规则,一旦确定了一个区块,就永远不能恢复。

5块还原限制仅用于说明目的;实际上,限制可能会更长,例如100-1000个街区。
明确地说,这对确定规范性的方式进行了重大更改:客户端不仅查看客户自己接收的数据,还查看客户端何时接收该数据。这导致了由于网络延迟而导致客户端不同意的可能性:如果由于大规模攻击而使两个冲突的块A和B同时完成,并且某些客户端首先看到A,而另一些客户端首先看到B,该怎么办?但是我认为这很好:这意味着,即使不尝试默认胜利,甚至试图恢复交易的51%攻击也默认为混乱,并且带外紧急响应可以选择链继续使用的两个块中的哪个。如果协议设计合理,则强制升级到带外紧急响应应该是非常昂贵的:为证明利益,这种事情将需要1/3的验证者牺牲其存款并被削减。
潜在地,我们可以扩展这种方法。我们可以尝试进行51%的攻击,使检查交易也默认为混乱。对及时性检测器的研究使事情朝着默认会失败的所有类型的攻击方向进一步发展,尽管仍然存在一些混乱,因为及时性检测器无法帮助那些没有良好连接和联机的节点。
对于重视不变性的区块链社区来说,实施这种还原限制可以说是上乘之选。很难诚实地说,无论链中接受了多长时间的交易,区块链都是不可变的,总是有可能有力的参与者进行一些意外活动并还原它。当然,我会声称,即使是BTC和ETC,也已经在极端情况下设置了还原限制。如果发生的攻击使活动恢复了数周,则社区可能会采用用户激活的软叉来拒绝攻击者的链条。但是,更加明确地同意并正式确定这似乎是向前迈出的一步。
结 论
这里有一些“故事的寓意”。首先,如果我们接受社会协调的合法性,并且接受涉及“ 1-of-N”信任模型的间接验证的合法性(也就是说,假设网络中某个地方存在一个诚实的人;则与假设(例如Infura)是一个特定的参与者,那么我们可以创建可扩展性更高的区块链。
其次,客户端验证对于所有这些工作都至关重要。只有少数几个人运行节点而其他所有人真正信任它们的网络是可以被特殊利益轻易接管的网络。但避免这样的命运并没有要求去到另一个极端,并具有大家始终验证一切!系统允许隔离每个单独的块进行验证,因此用户仅在其他人发出警报,完全合理且起相同作用时才验证块。但这需要接受验证的“协调视图” 。
第三,如果我们允许规范性的定义包括时机,那么我们将为提高拒绝51%攻击的能力打开许多大门。最容易获得的属性是弱主观性:例如,要求客户至少每次登录一次的想法。3个月,并且拒绝恢复更长的时间,那么我们可以在权益证明中加上斜线,使攻击非常昂贵。但是我们可以走得更远:我们可以拒绝恢复已完成的块的链,从而保护不变性,甚至防止受到审查。因为网络是不可预测的,所以在某些情况下依靠定时确实意味着攻击会“默认为混乱”,但是这样做的好处是非常值得的。
考虑到所有这些想法,我们可以避免以下陷阱:
(i)过度集中化;
(ii)过度冗余的验证导致效率低下;
(iii)误导性规范意外使攻击变得更容易,并且可以更好地开展工作以建立更具弹性的性能和安全的区块链。
来源:云存科技
- 免责声明
- 世链财经作为开放的信息发布平台,所有资讯仅代表作者个人观点,与世链财经无关。如文章、图片、音频或视频出现侵权、违规及其他不当言论,请提供相关材料,发送到:2785592653@qq.com。
- 风险提示:本站所提供的资讯不代表任何投资暗示。投资有风险,入市须谨慎。
- 世链粉丝群:提供最新热点新闻,空投糖果、红包等福利,微信:juu3644。

币圈讲堂



