原文标题:《社区争议:侧链算不算 L2?》
原文来源:ETH中文站
本文总结了社区中对于 Polygon 侧链与 L2 的相关争议讨论,并且翻译了 Dankrad Feist 的文章《关于 51% 攻击,大家都搞错了什么》以便读者从中参考对这些争议的解答。
5 月 16 日,以太坊扩容解决方案 Polygon 的市值跻身加密货币市值前 20,随后 StarkWare 的联合创始人 Uri Kolodny 转推祝贺,但同时他强调:「Polygon 是侧链,而不是 Layer-2。L2 的安全性依赖于以太坊;而侧链的安全性与以太坊的不相关 (甚至更低)。」因此,社区围绕 Polygon 到底是不是 L2 开始了激烈的讨论。
针对 Uri Kolodny 的评论,Mihailo Bjelic 做了以下回复[1]:
首先,Polygon 并不是一条侧链,它是一套扩容解决方案。其次 (也是最重要的),默认 L2 比 PoS 侧链 (我们的是提交链 commit chain) 更安全是绝对错误的。为了解释其中原因,我将简单地比较一下 Polygon 的 PoS 链和 StarkWare 的 zkRollup 或者 Validium。
我们的 PoS 链的确有自己的验证者集,但这是完全无需许可的,且质押金额已达到 28 亿美元。此外,该实现已经经过了实战测试 (1400 万个区块且零事故)。
然而 StarkWare Rollup 只有一个 PoA 运营者。这个运营者可能会宕机,抢跑、审查用户的交易等。并且,它由 STARKs 提供安全性,这是一个全新的、未经过验证的密码学。至于 Validium,情况甚至更令人担忧。DeversiFi 所使用的 Validium 方案还依赖于一小组 PoA 数据可用性节点。这些节点可以合谋,通过拒绝访问数据来阻止任何或所有用户提取资金。
考虑到上述情况,我认为那种默认 L2s 比侧链/提交链更加安全的想法是错误的。
针对 Mihailo Bjelic 的回复,社区分别从三个角度进行了讨论:1) Layer-2 与侧链在安全性上的区别;2) Layer-2 能否达到与 Layer-1 一样的安全性;3) Eth2 与侧链在安全性上的区别。而对于社区上的困惑,以太坊基金会开发者 Dankrad Feist 发布了文章《关于 51% 攻击,大家都搞错了什么》[2](见下文),该文章基本上囊括了以上讨论中的问题与解答。
1. 首先,关于第一个问题,Dankrad Feist 表示不赞同,他说 L2 确实更安全,因为作为 L2 必须提供与基础层相同的安全性。而 PoS 侧链具有较弱链 (通常是侧链) 的安全性。[3]
James Prestwich 也参与了讨论[4]:「与侧链相比,L2 需要更少新的安全假设,但其安全性并非与主网完全一样。」他指出 L2 与侧链相比,具有以下不同的特点:
•依赖于非审查 (欺诈证明)
•依赖于新的密码学和可信的设置 (有效性证明) 补充一点,Starks 不需要依赖可信的设置
•更高的硬件和带宽需求
在下文中,Dankrad Feist 指出「侧链不验证有效性,仅验证共识条件的绝大部分,并且其不具有数据可用性检查。」关于侧链的安全性问题,详见文章中「侧链如何运作?」那一部分。
2. 至于 L2 能否达到与 L1 一样的安全性。Patrick McCorry 认为 [5],L2 的目标是尽可能地接近 L1 的安全性,但想要完全一样,是不可能的:
•欺诈证明不是尚方宝剑,尤其是当发布欺诈证明的费用太高时,其安全性就更小了
•同样的,零知识证明也不是万能的,会出现排序者掉线以及 L1 无法应对大规模退出的情况
他还提到,L2 解决方案可以归结为以下四点:
•数据可用性 (委员会/rollup/等)
•状态转换完整性 (零知识证明/欺诈证明)
•提款完整性 (退出保证)
•协议活性 (排序者的选择)
这个混合的方案难以完全达到 L1 的安全性。
回到下面的文章,Dankrad Feist 解释了「区块链的安全模型」,以强调为何 L1 的安全性如此难达到。
3. 那么 Polygon 的 PoS chain 与 Eth2 的 PoS 机制对比呢?在讨论中,Dankrad Feist 指出 [5],在长期发展来看,PoS 侧链会是一个很大的隐患。在 Eth2 中我们尽量移除大多数诚实假设,然而 PoS 桥接并不能做到。
以下是文章内容:
关于 51% 攻击,大家都搞错了什么
请大家原谅标题中的挑衅意味。显然,并不是每个人都会误解 51% 攻击,但还是有相当一部分人没有搞清楚,因此写一篇相关的文章并无坏事。
区块链圈内大概有一个神话:只要有人控制了比特币、以太坊或者其他区块链的超过 50% 的算力,那么 ta 就可以对网络做任何事。在 PoS (权益证明) 机制中,只要有人聚集了质押总额的 2/3,ta 同样可以对网络做任何事情。ta 可以转走别人的资产,随意发行代币等等。
这种想法是错误的。以下是 51% 攻击可以做的事情:
•攻击者可以阻止用户使用区块链,即,拦截任何他们不喜欢的交易。这叫做审查。
•他们可以回滚区块链的交易,即撤销一定数量的区块并更改其中的交易顺序。
他们不能做到的是:更改系统的规则。这意味着:
•他们不能简单地在区块链系统规定之外发行新代币;例如,比特币目前为每个新的区块生产者 6.25 BTC;他们不能将这个数字变成 100 万比特币
•如果他们没有某个地址的私钥,他们就不能使用该地址的代币
•他们生产的区块不能比共识规则规定的大
这并非说明 51% 攻击的后果不严重,这仍然是十分恶劣的攻击。重新排序交易可以造成双花,这是非常严重的问题。但他们能做的事情仍然有局限性。
那么包括比特币和以太坊的大多数区块链,他们现在如何确保这一点?如果有一名矿工挖出了违法共识规则的区块会如何?或者,如果绝大部分质押者对一个违反共识规则的区块签名会发生什么?
区块链安全模型
有时人们声称最长链为有效的比特币或者以太坊链。这个说法不太完整。对当前链头的正确定义是
•总难度最高的有效链。
因此,在客户端接受区块链应该用来记录当前历史数据这个条件之前,他们需要验证两个属性:
1.该区块链必须有效。这意味着,所有状态转换都是有效的。比如,在比特币上,所有交易只花费此前没有花费的交易输出,coinbase 仅接收交易费和区块奖励,等等。
2.它必须是难度最高的链。通俗地说,这是一条最长链,然而「最长」不是以区块的数量来衡量的,衡量的是总共花了多少挖矿算力在这条链上。
这听起来可能有点抽象。我们有理由提出一个疑问,上述中的第一个条件由谁来验证,即谁来验证者区块链上的所有区块均应有效?因为如果还是矿工验证该链有效,那么这只是重复工作了,我们并没有真正从中获得什么。
但区块链不一样。让我们分析一下为什么,先从一个普通的客户端/服务器数据库架构开始:
请注意,对于典型的数据库,用户信任数据库服务器。他们不会检查回应是否正确;客户端确保已按照协议对其有效格式化,仅此而已。客户端 (此处用一个空白的方块表示) 是「非智能的」:它无法验证任何内容。
但是在区块链的架构中,是这样的:
我先来总结一下上图包括的组件。首先矿工 (或质押者) 生产区块链。P2P (点对点) 网络确保每个人都能够使用有效的链,尽管存在一些不诚实节点 (你需要连接到至少一个诚实且连接良好的 P2P 节点,以确保自己始终与有效链保持同步)。最后,客户端将交易发送至 P2P 网络并从网络中的其他节点接收最新的链更新 (或者是完整的链,如果它们正在同步的话)。客户端实际上是网络的一部分,它们也将通过转发区块和交易来做贡献,但在这里不是那么重要。
重要的部分是,用户正在运行一个全节点,上图中由客户端中的柱体表示。只要客户端获得一个新的区块,就像任何其他节点一样,无论是一个矿工还是 P2P 网络中的一个节点,这些客户端都将验证该区块是否为有效的状态转换。
如果这不是一个有效的状态转换,该区块则会被忽略。这就是为什么网络中的矿工试图挖掘无效的状态转换是没有意义的。所有人都只会忽略它。
许多用户运行自己的节点,与以太坊或比特币等区块链交互。许多社区已将此模式作为其文化的一部分,并且非常强调每个人都运行自己的节点,由此他们就成为验证过程的一部分。确实,让大多数用户 (尤其是那些质押了大笔资产的用户) 运行全节点是非常重要的;如果大多数用户变得懒惰,那么矿工可能会突然被诱使生产无效区块,如此一来该模型将不再适用。
打个比方:三权分立
这有点像民主制中的三权分立——政府有不同的分支,而仅仅因为你在其中一个分支拥有多数席位 (比如立法机构),并不意味着你可以做任何你喜欢的事以及藐视所有的法律。同样,矿工或质押者有权排序区块链中的交易;而他们无权轻易对社区制定新规则。
But do all blockchains work like this"justify" line="FB16">
这是个好问题。需要注意的一个重点是,以上所说的模型只有在全节点易于运行的情况下才会奏效。作为普通用户,如果运行全节点必须要花 $5000 购买另一台计算机,并且一直需要 1 GBit/s 的网络连接,那么 ta 根本不会选择运行全节点。尽管 ta 可以在某些地方达到该网络要求,但是永久地保持以运行自己的区块链节点很可能不那么方便。在这种情况下,普通用户很有可能不会选择自己运行节点 (除非 ta 的交易非常有价值),这意味着 ta 将信任其他人来为其执行该操作。
假设有一条链,其运行成本太高,以至于只有质押者和交易所会运行全节点。你刚刚改变了信任模型,然后大多数质押者和交易所能够聚集在一起并改变共识规则。对于这一点,用户是没有任何争议的——如果用户对该链完全没有控制权,那么他们无法发起分叉。他们可以坚持使用旧的规则,然而,除非他们开始运行全节点,否则,他们根本不知道自己的请求是否在自己想要的链 (满足其共识要求的链) 上得到了回应。
这就是为什么每当出现提高以太坊或比特币的区块大小的讨论时,总会引起大量的争论——区块大小每提高一次,都会增加大家自己运行节点的负担。这对矿工来说不是什么大问题——与实际的挖矿操作相比,运行一个节点的成本要小得多——因此,这将权力的天平从用户转移到了矿工 (或质押者) 身上。
轻客户端如何运作?
但是,如果用户只是想用加密货币来买咖啡,该怎么办?Ta 需要在手机上运行全节点吗?
当然,没人希望需要这样做,用户也不希望。那么这时候就是轻客户端发挥作用的时候了。轻客户端是较简单的客户端,它们不需要验证整条链——它们仅验证共识,即总难度或者已投票的质押金额数量。
换句话说,轻客户端会被诱使跟随一条包含无效区块的链。对此有补救措施,例如数据可用性检查和欺诈证明。据我所知,目前还没有任何一条链实现了这些,但至少以太坊未来会这样做。
因此,使用具有数据可用性检查和欺诈证明的轻客户端,用户在不需要运行全节点的情况下,也可以使用区块链的安全模型了。这是我们最终的目标,即任何智能手机都能够轻松地运行以太坊轻客户端。
侧链如何运作?
侧链是当前的热门话题。它们似乎可以提供一种简单的扩容方案,不像 rollups 那么复杂。简而言之:
•创建一条新的 PoS 链
•在自身和以太坊之间创建一个双向桥接
•…
•重点!请注意,侧链的安全性几乎完全依赖于桥接——这是一种允许某条链读取另一条链的状态的构造。毕竟,如果攻击者能够欺骗主链上的桥,让桥接链上的所有资产都为其所有,那么即便 PoS 链上的全节点提出异议也没办法了。所以一切都取决于桥。
不幸的是,桥的状态与轻客户端相同。它们不验证有效性,仅验证共识条件的绝大部分。然而,侧链有两个方面比轻客户端更糟糕:
1.桥接用于价值非常高的交易,其中大多数用户会选择一个全节点,如果可以的话
2.不幸的是,我们没有办法加固桥接,而我们可以对轻客户端这样做——原因就是它们无法验证数据可用性检查
第二点很微妙,可以花一到两篇文章讲解一下。但是简单来说,桥接不能做数据可用性检查,而没有数据可用性检查,欺诈证明也几乎没用了。而如果使用零知识证明,可以要求桥接打包所有有效区块的证明,从而改善这个问题——不幸的是,这样还是有可能会受到数据可用性攻击,但也是一种改进了。
总言而止,侧链的安全模型与以太坊和比特币等区块链不同,而且要弱得多。它们无法防止无效的状态转换。
这些问题都需要靠分片来解决吗?
实际上,所有这些都与分片有很大的关系。我们之所以需要分片来进行扩容,是因为只有分片能够实现这样的扩容方式:既不需要提高运行全节点的门槛,同时又能够尽可能地维护区块链的完整安全性保证。
但如果有人撤销所有历史数据呢?那么 ta 还是可以盗取所有比特币/ETH/等
理论上说,在一条非检查点的 PoW 链上,可以通过回滚所有交易来盗取比特币。是的,你不能发行一万亿个比特币,但你仍然可以盗取现存的所有比特币,这也很好,对吧?
我认为这一点非常理论化。社区会接受一个修改其好几年数据 (甚至只是好几个小时) 的分叉的机率几乎为零。在所有可能的分叉中,都会出现大规模的争抢,很快就会得出结论并拒绝分叉,只同意有效的链为现存的那条链。
有了 PoS 和敲定,这种机制将变得形式化——客户端永远不能回滚已敲定的区块。
原文链接