织梦CMS - 轻松建站从此开始!

我的网站

当前位置: 主页 > 比特币 > 比特币资讯

V神:有关区块链验证的哲学(3)

时间:2020-09-02 18:01来源:未知 作者:admin 点击:
- 单一区块仅仅涉及几个账户,欺诈证明能够包含这些账户的数据,并连同其默克尔证明,来证明数据的正确性 - 这项技术有时也称为无状态验证,客户端
- 单一区块仅仅涉及几个账户,欺诈证明能够包含这些账户的数据,并连同其默克尔证明,来证明数据的正确性 -

这项技术有时也称为 无状态验证,客户端可以只记录区块头,而无需记录完整的区块链状态数据,而且可以通过向其他节点请求任意状态条目的默克尔证明来实时验证正在处理的区块。该技术的强大之处在于,轻客户端只有在收到警报(警报也是可验证的,如果轻客户端发现虚假警报,它们可以停止监听该节点的警报)后才会去验证单个区块,因此在正常情况下,轻客户端依然轻量,只检查哪些区块获得了大多数矿工或验证者的支持。但在特殊情况下,若多数人所在的链包含了一个该轻客户端不接受的区块,只要有至少一个诚实的全节点验证到了这个有问题的区块,就可以知道其无效,并广播欺诈证明,从而使网络中的其他节点也拒绝它。

分片

分片是在此基础上的一个自然的拓展,在分片系统中,系统中的交易太多,多数用户无法一直直接验证,但如果系统设计良好,那么任何无效区块都能被检验出来,而且其无效性可以由欺诈证明来验证,该证明就可以在全网广播。分片网络可以看作每个用户都是一个轻客户端,只要每个分片的参与者都在某个门槛之上,网络就能获得群体免疫。另外,还有一点非常重要:在分片系统中,区块的生成(不仅仅是验证)门槛是很低的,甚至可以在家用笔记本上完成。网络的核心并不依靠高性能硬件,确保了反对派作为少数一方的门槛足够低,这就使得以多数人主导的协议更难以被攻击者变为 “天然攻击成功” 的状态(迫使其他人服从于其攻击)。这也是现实世界中审计的意义:并不是每个人都随时在验证所有内容的,而是第一,每个特定部分都有足够的人在检查,任何错误都一定能被发现,第二,一旦检查出错误,所有人都可以清楚看到错误所在。话说回来,从长期来看区块链肯定能在这方面更进一步。进步的一个来源是 ZK-SNARKs(或称 “有效性证明”),是一种高效且可验证的密码学证明,使区块生产者能够向客户端证明区块满足某些任意复杂的有效性条件。有效性证明比欺诈证明更强大,因为它不依赖于交互博弈才能捕获欺骗行为。另一种重要技术是 “数据可用性检查”,可以侦测出没有完全公开内容的区块。数据可用性证明确实依赖一些安全假设,但这个假设非常保守:网络中还存在少量可用的节点是诚实的(“愿意遵守协议”);好消息是,这个诚实验证者的最低数量要求很低,而且即使攻击者数量非常大也不怎么需要提高要求。

时机与 51% 攻击

现在,我们来看看 “天然造成混乱” 的模式中最强大的后果:51% 攻击开始攻击自己。在当前许多社区中,如果发生 51% 攻击且攻击者取胜,那么 51% 攻击链就会成为合法链。这个规范被大家严格遵守。近期对以太坊经典的 51% 攻击就说明了这一点。攻击者回退了 3000 多个区块,在这个过程中用双花攻击窃取了 807,260 ETC。由于以太坊经典的两个客户端之一(OpenEthereun)技术上无法退回攻击链的历史高度,导致 Geth 节点能够在攻击链上运行,而 OpenEthereum 则只能被困在原本的链上。我们可以说这次攻击的确导致了混乱,但这是偶然事件而不是以太坊经典社区有意设计如此。可惜的是社区随后选择接受了(更长的)攻击链为合法链。以太坊经典推特账户称其为 “像我们的初衷一样严格遵循工作量证明”。因此,该社区规范竟积极帮助攻击者获胜。但其实我们可以就合法链的定义达成另外一种共识,比如说建立一个规则,某个区块具有超过 100 个后代区块之后,其合法性就不能颠覆。或者是,一个具有终局性的权益证明(比如以太坊 2.0 就是如此),规则是,一旦一个区块获得终局性,就永远不会被回退掉。- 仅为图解方便,限制最多回退 5 个区块示意图。实际操作中可以将回退限制在 100-1000 个区块范围内 -我们要明确,这对链的合法性的定义引入了重大变更:客户端不仅仅要查看它们收到的数据,还需要检查何时收到的数据。这也会引入一个新情况,由于网络延迟,在一次大规模攻击时,两个冲突块 A 和 B 同时获得终局性,一些客户端先看到 A,另一些先看到 B,那他们就无法达成一致。但我认为这未尝不是好事,因为这意味着攻击没有天然获得成功,甚至仅仅回退区块的 51% 攻击都会天然导致混乱,社区层面的紧急响应就能在两条链之间选择继续哪一条。如果协议设计合理,要使事件达到需要社区层面的紧急响应应该是非常昂贵的,在权益证明中,这意味着 1/3 的验证者要牺牲他们的保证金且被惩罚。这种方法还有发展的潜能。我们可以尝试制造 51% 攻击来专门审查会导致混乱的交易。对于及时性验证器的研究也在让所有类型的攻击朝着天然失败的方向发展。尽管如此,仍会有一些混乱发生,因为及时性验证器无法帮到那些离线或者网络连接不好的节点。对于重视不可篡改性的区块链社区而言,可以说这种限制回退的措施是不错的选择,如果无论网络在多久之前接受了某一个交易,但它仍有可能在意外中被回退,那么区块链就无法自诩享有不可篡改性了。当然,我相信即使是 BTC 和 ETC 也 已经 限制了极端情况下的回退,如果某个攻击试图回退数周的区块历史,社区也可以发起一个需要用户主动参与的软分叉来拒绝攻击者的链。但更明确地达成一致并正规化这一措施才能更进一步。

结论

那么这个故事教会了我们什么?首先,如果我们接受社会协作的合法性,并且接受以 “1-of-N” 信任模型为假设的间接验证的合法性,也就是说,假设网络中总有某一个诚实参与者,而不是假设某一个参与者(比如 Infura)总是诚实的,那么我们就可以创建出可扩展性更强的区块链。其次,客户端验证是上述提及的内容至关重要的一步。一个只有少数人运行(验证)节点而其他人都依赖对于验证节点的信任的网络,在涉及特殊利益时是非常容易被攻击的。但要避免这样的命运也不意味着矫枉过正,让所有人随时都要验证一切。让单个区块可以被隔离验证,用户因而只需要验证受到警报的区块,这样的系统也是合理且可以达到相同效果的。但这就需要我们用前文提到的 “协作的视角” 来 看待验证的作用。第三,如果我们将 “时机” 也纳入合法链的定义范围,那么我们抵御 51% 攻击的技能树将会打开。最好接受的属性是弱主观性,也就是要求客户端至少每三个月在线一次,且拒绝任何比三个月时间更长的回退,我们就能在权益证明里加上惩罚机制,使攻击成本变得高昂。我们还可以更进一步,我们可以拒绝回退所有获得终局性的区块,由此保护不可篡改性,也可以防止被审查。因为网络不可预测,依赖 “时机” 在一些情况下 的确 意味着攻击会天然导致混乱,但带来的好处也是显而易见的。记住以上这几点,我们就可以避免以下陷阱:1. 过度中心化;2. 验证过度冗余而导致网络效率低下;3. 误导性规则意外导致攻击变得更容易;并朝向更具韧性、更强性能和更安全的区块链。

 

(责任编辑:admin1)
织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
推荐内容