查看原文
其他

PoS 是谎言么|Fork It 文字稿(4)

Fork It 字节元 CKB 2023-04-19


接上文:PoS 是谎言么|Fork It 文字稿(3)



9、以太坊合并,就是走大区块路线


Daniel:关于 PoS 和 PoW 的 debate,我们已经聊了很多,阿剑老师也分享了自己的很多观点。我现在回过头来,想问阿剑老师一个问题,对于以太坊的这次 merge,你是否看好?


阿剑:我必须先声明一下,大概去年七八月份开始,我就不再关注以太坊在未来方向上的一些事情,但在那之前,我还是有关注和了解的。如果你要问我对 The Merge 以及以太坊未来发展方向的看法,我觉得 The Merge 就是大区块。我之前在推特上说我想做一款表情包,一个蒙着头的人,很光鲜,上面写着以太坊合并,然后他掀开头套,上面有几个大字——大区块。这是我的真实想法。


Daniel:阿剑老师,你能不能先科普一下大区块的概念?因为大区块以及与之相关的 debate,之前主要发生在比特币社区而非以太坊社区,而且是否走大区块路线也导致了比特币的分叉。


阿剑:大区块,顾名思义,就是通过扩大区块的大小,要求节点投入更多的资源,来达成吞吐量提升的效果。我们还是拿以太坊作为例子,一开始以太坊单个区块的 gas 上限为 300 万,那是很早的时候了,后来提升到 800 万,之后又提升到 1250 万,再后来是 1500 万。EIP-1559 之后,它直接变成了大区块,gas 量可以翻倍,但平均区块大小理论上来说依然维持在 1500 万。


在这个过程中,因为单个区块能容纳的 gas 量,也就是能容纳的计算量增加了,所以你可以认为每个节点在单位时间之内,需要处理的交易或者说需要投入的资源数量,都增加了。如果你用 tps 作为衡量标准,区块能容纳的 gas 量从 800 万变成 1600 万,如果里面的交易构成没有太大的变化,那 tps 就达到了翻倍的效果。


大概在 2015、2016 年的时候,大家发现比特币的区块开始被打满,之前它是长期处于一个不满的状态,所以大家开始关心区块大小的问题。当区块满载的时候,就会开始出现所谓的拥堵问题,你发一笔交易没有办法很快就被确认,可能要等 1~2 个区块甚至更长的时间。这个时候,有人提出怎么给区块链系统扩容,怎么提高它的吞吐量,让大家的交易能够被更快确认,交易费用、手续费更低,大概是往这个方向走。


当时就有人提出说,我们有一个最简单的方案,他甚至还引用了中本聪的话,因为中本聪也说过,要提高吞吐量其实很简单,把区块大小的上限往上拉高就行,因为原本的情况下有 1MB 的限制,超过 1MB 的区块会被节点所拒绝。所以就有人建议将区块大小从 1MB 提高到 2MB,至少眼前就没有这些事了。因为这个,当时的比特币社区里充满了各种尖锐的争议。


Daniel:那个时候,比特币要不要走大区块路线,争议非常大,大到已经牵涉到信仰层面了。双方都心系比特币的未来,甚至把这当作真正决定比特币未来生死存亡的问题来去争论。我们先说结果吧,你觉得现在比特币有走大区块路线吗?


阿剑:在这一点上,我得提出一些批评,比特币没有完全走大区块的路线,但隔离见证确确实实提高了区块大小的限制。隔离见证把密码学中称之为 witness 的数据,也就是证明一笔交易有效性的证据,给挪到了一个专门的地方,区块里的其他内容还是限制在 1MB 大小,但如果算上 witness 的数据,区块大小也有 2MB。


Daniel:5 年后的今天,我们回头看 5 年前大小区块的辩论,结局是现在的比特币区块比之前的大了一点,但大的不多。我的理解是,比特币并没有真正践行当年所提出的大区块路线,因为当年大区块的支持者们的预期是 10 倍、20 倍,甚至更多。而且,我们今天还能看到比特币社区里的一些理想主义者,他们依然相信如果当年比特币采纳了大区块的建议,在今天比特币会是另外一番更好的局面。总而言之,大小区块之争在比特币的历史上是非常浓墨重彩的一笔。


阿剑:我想补充一点,当时为什么很多人反对大区块,是因为大区块是有代价的,它意味着节点的运营成本上升。如果区块大小限制在 1MB,平均每 10 分钟一个区块,你可以算出一年要被占用多少容量的硬盘空间。如果区块大小变成了 2MB、4MB,硬盘空间就要翻倍,毫无疑问这会伤害到去中心化的属性,因为它抬高了节点运营的成本。我当时因为这点,也对隔离见证有一点点意见。从原教旨主义的角度上来说,隔离见证这件事情是有瑕疵的,是一件我们不希望以后会频繁上映的事情,当然事实证明它确实没有再次上映。


我认为隔离见证带给我们的最重要的一件事情,是它始终提醒着我们大区块是有代价的。如果你想让区块链系统提高吞吐量,大区块是一种简单直接的方法,它也确实能提高吞吐量,但它不是一个很理想的解决办法。为了维持一条链的生存能力,这种办法能不用就不用。


Daniel:伴随着比特币的大区块之争,后来分叉出了 BCH,再后来又有了 BSV,我们在这就不展开讨论了。阿剑老师,前面你说以太坊的 merge 就是以太坊的大区块方案,这个我们该怎么理解呢?


阿剑:我来给大家做一个不是那么长的推理。我先做一个现场调查,Daniel 和 Terry,你们是否认为以太坊的 layer 2 有明确的、可证实的或者说非常漂亮的扩容效果?


Daniel:我否认。


Terry:我也否认。


阿剑:为什么你俩会否认?


Daniel:在我看来,目前所有的以太坊 layer 2 扩容方案,都偏离了真正的第一性原理,因为现在以太坊 layer 2 扩容方案以 rollup 为主,rollup 只是对 layer 1 的计算能力做了一个抽离并加以改良,实际上真正能够扩容的约束条件还是在 layer 1 上。所以在我看来,所有的这些 rollup 方案,都只是中间的过渡方案,以太坊还没有真正走出一个充分可预见的、光明未来的 layer 2 方案。


阿剑:对,我要说的话已经被 Daniel 说完了。


Daniel:不会吧?


阿剑:确实是这样,Daniel 总结得非常对。以太坊的这些 layer 2 方案,当然会有不同的技术范式,我可以先给大家稍微简单介绍一下。比如说 ZK-Rollup,使用了所谓的密码学上的零知识证明,我们现其实它没有使用零知识的属性,而是使用我们称之为证明系统的这么一个技术,来生成一个计算完整性的证明。也就是说,从一个状态到另外一个状态的过程中,我执行了所有应该被执行的计算,生成了一个可以向你证明的证明,你通过验证这个证明就能知道我的每一步都是根据某一个你可知的计算规范来运行的,这就是 ZK-rollup。


还有一种叫做 Optimistic Rollup,它就更简单了。它不向你提供完整性的证明,而是断言最终的结果就是这个,如果你们不信,你们就来挑战我,我们各自出钱把押金押在这,如果你能证明你是对的,我的押金就输给你,但是如果你不能证明你是对的话,那么我的这个状态就不受影响,我会继续拿我该拿的钱,然后 layer 2 继续往下走。


当然,与此同时还有人提出其他一些方案,比如 ZK 阵营里有一个叫 Validium 的方案。ZK-rollup 和 Optimistic Rollup 有一个共同点,都需要把 layer 2 上发生的那些交易数据发布到以太坊的主链上,发布的形式就是我们称之为 Calldata 的一种数据形式。在这个过程中,ZK-rollup 和 Optimistic Rollup 都会不可避免地占用主链的资源,因为你要在主链上存储 Calldata。存储这部分数据是有理由的,如果没有这部分数据,你就没有办法建构出 layer 2 的链上状态,进而无法发起提款之类的操作,也没有办法发起相关的挑战。这叫数据可用性(Data Availability)。Validium 则抛弃了数据可用性,不在主链上发布我的数据,而是把数据放到别的地方,用别的方式公开。


Validium 的这种方案,确实不会占用主链的资源,但与此同时,你也可以认为它给用户提供保护的效果会稍微弱一些,这就是区别。


我有个简单的判断,大家可以看到在这个过程当中是不是依然使用了主链的资源?如果是,那可扩展性就受制于主链资源的容量。很多刚接触以太坊 layer 2 的人,可能会对 layer 2 这个词有误解,误以为所有的 layer 2 都会占用主链的资源,其实不是的。像闪电网络这种支付通道,状态通道,都是在链下进行交互,不需要在主链上发布任何数据,只需要把双方存进去锁定的那笔交易跟最终结算的那笔交易上链就可以了。


所以,如果你的 layer 2 要提升可扩展性,还要把数据传输到主链,那要么在主链上提供更多 Calldata 的数据空间,要么把 Calldata 的 gas 量降得更低。我稍微提醒一下大家,以太坊 layer 2 的扩容效果,是通过测量 layer 2 上发生的每一笔交易占用主链的 gas 数量来衡量的。


Daniel:我记得以太坊曾经降低过 Calldata 的费用,通过这种方式让 rollup 的性能提升一点。


阿剑:对,价格降过不止一次,我记得是两次。效果是什么呢?效果就相当于 layer 2 的一个区块占用主链的 gas 数量更小了,所以恒定数量的 gas 用量可以容纳更多的 rollup 区块或者打包压缩更多的交易,因此说 “可扩展性提升了”。你觉得这种论证成立吗?从技术上来说,这种论证我觉得是很离谱的,为什么?因为你明明投入了更多的资源。如果你跟我说你现在把区块从 1MB 变成了 2MB,可以容纳的数据更多了,所以可扩展性提升了,我这种只研究技术的人都觉得很有问题。现在的方案是,把 Calldata 的 gas 消耗量降低,让同一个以太坊区块在 gas limit 不变的情况下可以容纳更多的 rollup 区块来达到所谓的可扩展性提升的效果。


我们关心的是,The Merge 之后,以太坊准备怎么做?我简单看了几篇文章,包括 Vitalik 自己写的文章,他的想法是这样的。合并之后,每个时间点都有一定数量的 PoS 见证者会进行报道,我们就让这些 layer 2 运营者向这些见证者发布区块。相关数据会使用一个称之为纠删码的方案。纠删码方案,就是把一个文件分成很多个有冗余性的碎片,所以你只要拿到其中的一部分碎片,就可以恢复出原本的数据。通过纠删码的方案,PoS 见证者可以检查这些 layer 2 运营者是否诚实地发布了自己的区块。


然后,Vitalik 还提出了一种新的交易类型,blob-carrying transaction,携带数据的交易。这种交易的特殊性在于,交易费用更便宜,但它不能跟 EVM 的智能合约等进行交互。另外一个特点是,它只能存储一段时间,比如一个月,一个月后节点就不一定能拿到这个数据了。


Vitalik 的思路就是这样,每个 slot 都有一定数量的见证者,那就让这些见证者去检查 layer 2 运营者发布的 rollup 区块,比如让每个 slot 检查 1MB 大小的 rollup 区块,看看它们有没有达到数据可用性的要求,然后整个系统的吞吐量就提升了。


我们其实都能看出来,在这个过程当中,每一步大家都知道它其实是在扩大区块的大小,因为它要携带更多的数据量,它要容纳更多的数据量,它要检查更多的数据量,但是与此同时,它每一步都尝试通过一系列的限制去限制区块扩大的效果。比如说,Calldata 的 gas 降下来了,但在每个区块中不能超过 1MB,通过额外的这个限制,来限制区块扩大的效果。


The Merge 之后,为什么我说它是一个大区块,因为 PoS 区块链共识层的验证变得更复杂了。假如 Calldata 进一步降价的话,意味着以太坊恒久保存的这些区块会变得更大。如果用上面我讲到的那些特殊方法,比如携带数据的交易,来去容纳更多的数据,虽然这些数据一段时间后会删掉,但依然扩大了区块。


因此,到最后就是一句话——大区块。通过大区块来提升所谓的吞吐量,在我看来这是一个非常可悲的事情。


Terry:对,但是展开讲的话,它通过这么多年的迭代,又实现了一次 PoW 到 PoS 的范式的转换。在后面的话还有多条线、多条技术路线同步去推进,然后还有未来有若干次的一些集成,可能目前来看的话,其实实际上做的效果它就是大区块效果或者是一个抽象的大区块的这么一个效果,我认同,我觉得这个确实是如此。


阿剑:OK,如果大家对这个话题非常感兴趣的话,我很推荐大家去阅读两篇文章。一篇是 John Adler 的文章,我不知道大家认不认识他,他是一位非常厉害的人物,他在 2019 年 10 月的时候写了一篇文章叫做《基于委员会的分片区块链的安全性与可扩展性》。那篇文章是在我看来是第一次把大家对于分片系统的迷梦敲醒了一篇文章,当然同时也敲醒了我。在那一次之后,我第一次开始意识到我应该用什么样的方式去思考这个问题,那篇文章非常棒。


你看那篇文章,你就懂得,想要不陷入大区块的这种陷阱当中,实际上是非常难的事情。而很多的技术路线,你想一想它要解决的问题,它把复杂性放在哪里,你最终可以得到结论,它可能不可避免就会是一个大区块的方案,这是一个。


另外一篇文章是 Ruben Somsen,他是在 2020 年写了一篇文章叫做《SNARK 与区块链的未来》,它这篇文章也是明确的去论证了这种技术它到底是如何扩容的,也正是这篇文章,让我们知道了,其实以太坊的这种扩容的话,它最终依然是用到了主链资源。


这两篇文章都非常推荐大家去看。


Terry:OK,我稍后跟阿杰老师去要这两篇文章的信息,放在 Show Notes 里面。


阿剑:好的。第一篇文章就是 John Adler 那篇文章,现在大家其实直接搜一搜得到它的英文原版,然后它的中文版其实说起来很可惜,因为最早的中文版是由以太坊爱好者提供的,然后现在的话你已经没有办法在以太坊爱好者上读到这篇文章了,因为这个网站已经不存在了,虽然是以太坊的爱好者的译本,但是你只能在其他网站上看到他。


(未完待续)


本文提到的部分链接:

  • zack-bitcoin:PoS 辩护意见大全

    • 英文:https://github.com/zack-bitcoin/amoveo-docs/blob/master/other_blockchains/the_defence_of_pos.md

    • 中文:https://mp.weixin.qq.com/s/7qEWFWAQIPz5-2I-aWv4ww

  • PoW 与 PoS 的真正区别:判质费用决定了谁更适合构建货币

    • 中文:https://mp.weixin.qq.com/s/s75Luba4C6bm0YBNiZucQA

  • 对 PoS 的简单批评:

    • 中文:https://github.com/editor-Ajian/Personal-Work/blob/main/(2020.10)对 PoS 的简单技术批评.pdf

  • 关于大区块以及比特币扩容之争:https://www.jiemian.com/article/3334359.html

  • 以太坊的扩容方案以二层 Rollup 为核心:https://ethereum-magicians.org/t/a-rollup-centric-ethereum-roadmap/4698

  • 通过 EIP-4488 降低 Calldata 成本:https://eips.ethereum.org/EIPS/eip-4488

  • Optimistic Rollup: https://ethereum.org/en/developers/docs/scaling/optimistic-rollups/

  • Zero-Knowledge Rollup: https://ethereum.org/en/developers/docs/scaling/zk-rollups

  • Validium Rollup: https://ethereum.org/en/developers/docs/scaling/validium/

  • John Adler:基于委员会的分片的安全性与可扩展性

    • 英文:https://medium.com/@adlerjohn/security-and-scalability-in-committee-based-blockchain-sharding-58fab3901193

    • 中文:https://mp.weixin.qq.com/s/4GGMzuveokO9Cyt02Y06Zg

  • Ruben Somsen:SNARK 与区块链的未来:

    • 英文:https://medium.com/@RubenSomsen/snarks-and-the-future-of-blockchains-55b82012452b

    • 中文:https://www.btcstudy.org/2021/11/11/snarks-and-the-future-of-blockchains/

  • Vitalik:Proto-Danksharding FAQ

    • 英文:https://notes.ethereum.org/@vbuterin/proto_danksharding_faq

    • 中文:https://learnblockchain.cn/article/3769




   



END



Nervos 网址:https://www.nervos.org/ 
中文电报群:https://t.me/NervosNetworkcn
中文推特:https://twitter.com/CKBMeta 
中文Discord:https://discord.gg/f2qa52tJnz 
《Nervos 入门手册》:ckborg.bit.host

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存