会议记录:可扩展区块链作为数据层 | Vitalik Buterin
台北以太坊聚会演讲

NO PAPARAZZI
Vitalik 最近分享了他对 Rollups 和数据可用性问题的看法,这与以太坊 1.0 和 2.0 中的二层解决方案相关。他的演讲包含了一些引人入胜的构思,可能会在该领域的团队中进一步完善。这是一个关键的研究领域,因为对那些希望扩大用户群的项目来说,信任最低化的区块链扩展机制仍然非常必要。如果你有时间,我建议你听一下完整的演讲。
录制的直播
幻灯片
先前研究
这次演讲构建的基础概念首先出现在 Vitalik 于 2018 年 8 月的一篇文章中,文中将“可用性引擎”归功于 Justin Drake。在 2018 年 9 月,一篇扩展该主题的 ETHresearch 文章 引起了广泛讨论。在 2019 年 1 月,EF 研究人员与 Matter Labs 合作在 Rinkeby 测试网上推出了名为 Ignis 的概念验证。这里是 团队的原始文章 以及一篇 Trustnodes 采访/演示。
这是 Alex Gluchowski 和 Kent Barton 在 2019 年 ETHDenver 的精彩演讲,提供了有关 Rollup 机制的更多细节:使用零知识证明的扩展。这里还有一个关于 SNARKs 和 STARKs 之间差异的良好探讨。
最后,看起来 Matter Labs 正在继续通过 SNARKs 进行扩展,这得益于 EF 的资助 —— 请查看 这里的公告 和更多资源。
我已将 Vitalik 演讲的粗略记录整理如下,以试图捕捉每个部分的精髓。希望大家觉得这有用。
背景 / MASTERCOIN
- 这里是一个新的 L2 构造——与用于可扩展性的 L2(plasma / 状态通道)不同——它使用区块链作为数据存储而非计算的地方。计算可以通过 zk-snarks 完成。

- 一些历史:将 Mastercoin 想象成在 BTC 之上的一个元协议。定义了一组不同的规则来解释交易。BTC 是数据存储,但不是状态执行。特殊交易可以通过一个标志来表示。
- Mastercoin 的缺点:不友好于轻客户端(需要 BTC 区块链和 Mastercoin 节点)。MC 协议中的活动不能影响 BTC 链,这限制了整体功能。
- 现在我们有 ETH 1.0,而不久后我们将会有 ETH 2.0——我们能否做一些类似 Mastercoin 的事情?
ZK ROLLUP
- ZK rollup(不是 Ignis,也不是 Ignis plasma)今天可以让可扩展性提高 30 倍,未来更高。它的工作原理是:在链上合约只存储一个值:默克尔树的根。

默克尔构造将拯救我们
- 用户发送交易,这些交易被一个叫做中继者的特殊参与者收集,并放入 zk-snark 中。发布先前状态及包括捆绑在一起的交易的新状态。
- 这与 Plasma 有相似之处吗?(两者都是持有默克尔根的合约)不同之处在于 Plasma 需要复杂的退出游戏/提取时间段,以处理恶意操作员的可能性(数据可用性)。
- 针对 zK Rollup 不存在数据可用性问题,因为所有交易都在链上发布,无需签名。
- 每次发布 13 字节 X 每字节 68 gas = 884 gas,而目前简单交易的成本为 21k。
- 不需要让 ETH 主链验证每个签名交易,zKsnark 证明交易的有效性。计算和存储被移动到链外。默克尔根保持在链上。这避免了中央操作员/中继者。因为数据在链上发布,任何人都可以验证。
- 这可以通过不包含 nonce 进行优化,去除 2 字节(每次发布 11 字节 X 每字节 68 gas = 748 gas)。
- 注意:即时存款和取款。取款:币从他们的默克尔分支转移到主链,然后默克尔根更新。存款将是反向操作,但额外给用户一个账户 ID。可能会有很多悬而未决的。
- 该构造可以将简单支付从 15 tx/s 提升至 500 tx/s,相对安全。
- 从斯坦福 1.x 研讨会(录制的直播)中有一个要点是,数据相较于其他操作来说过于昂贵。虽然对状态有一些担忧,但增加 1 kb 到区块大小不会让事情变得更糟。在伊斯坦布尔,简单交易的 gas 成本有可能降低,从而增强 ETH 1.x 的吞吐量超过 1000 tx/sec。
将 Rollup 进一步推进
- Rollup 应能够支持更复杂的状态转换,包括 Uniswap、高性能交易所、多代币,保密计算、ENS——都使用“SNARK + 发布树细节”的范式。
ZK ZK ROLLUP(玻色-爱因斯坦凝聚态 🙃)
- 基本想法:将 ZK rollup 与一个迷你版本的 zcash 结合。 (zCash 入门:用户发布带有 SNARK 的交易,表明“我拥有某个币哈希的有效支出证明。这里是一个新币哈希”)
- zCash 继续——用户有秘密 S,币哈希:h(s + 1),支出证明:h(s + 2)。SNARK 证明支出证明属于已有的币,但不证明是哪一个。验证函数还应检查支出证明是否未被泄露。
- 中继者将不会发布交易,而是发布收据(每交易 105 字节 X 每字节 68 gas = 7140 gas)。在这里我们放置一个单独的 SNARK,以验证为每个包括的交易都有一个附加的 SNARK(一个递归层级)。在链上验证 SNARK,将需要 500k gas。
信标链 - 阶段 1
- 如果我们想做更多的事情呢?进入 ETH 2.0 的信标链阶段 1。数据仅链的分片链意味着 2.8 MB/sec 的数据可用性。
- 每个 zK zK rollup 为 105 字节/如果完全消耗 2.8 MB 那意味着 27k 隐私保护交易/秒。如果我们对隐私不在意,则该 27k 增加 10 倍。
- 被坑的 scamcoins LOL VB 甚至无法选择 TPS 争论中最糟糕的。
- 障碍在于这些系统依赖于数据和计算(尽管量微小)。ETH 2.0(阶段 1)没有计算但有大量数据,而 ETH 1.0 有计算:让我们将两者连接起来。
ETH2 在 ETH1 轻客户端
- ETH 2.0 研究团队花了很多时间使 2.0 架构对轻客户端友好。
- 每当持久委员会切换时,每 9 天需要 80kb 的默克尔分支(也可以在 9 天内摊销),加上每个头部需要 500 字节。
- 需要在 ETH1 客户端中有 BLS-12-381 的预编译。
- ETH 1 链可以是计算层,连接到 2.0 链,要求在 2.0 链上发布用于 Roll-up 方案的数据。
可扩展数据可用性引擎的其他用途
- Plasma 链/更频繁的承诺,Dapps 在链上存储消息,区块链协议/具有独立(“主权”)状态转换功能,依托以太坊用于数据可用性。
加速跨分片交易
- 当前分片设计的弱点:分片之间的通信有延迟(等待交叉链接,大约 6 分钟)。
- 规避这种延迟的粗略提案是一种机制,允许一个分片查看另一个分片的根。这在大多数情况下可能有效。

老友 Alice、Robert 和 Charles
- 当用户希望在分片之间转移代币时的快速探索:他们可以向含有预期代币转移的根的智能合约发布交易,同时附上安全押金。
- “分片的默克尔根是 0x12345,如果这项声明错误,我同意失去 100 ETH(押金)”。
- 在存储代币余额的注册的上下文中,发布 100 ETH 押金的用户(在等待跨分片交易的过程中)其余额然后更新为条件状态:如果状态根声明正确,我就会有 x + 转移数量,如果不正确,我只有原始金额(减去没收的 ETH 押金)。
- 将其想象为量子叠加状态,存储两种状态/两种可能性。只有当合同通过交叉链接意识到原始分片的状态根时,才会被解决。
- 这种叠加可以在用户之间转移而不被他们知道(钱包会显示乐观值,直到大约 6 分钟后实际发送了交叉链接)。
通用隐私
二层计算的好处
- 从哲学上讲,第一层无需过于复杂以优化属性——区块时间、跨分片通信、跨分片同步消息支持、隐私等。
- 理论上 ETH 2.0 阶段 3 可能永远足够,无需超级二次分片。
- 唯一的例外将是增加分片或更新加密技术。
- 其他区块链也做出此类声明,但现实是,一旦你拥有可扩展的数据可用性并具有至少验证 zKSnarks 和状态转换的能力和复杂性(功率和复杂性的最低阈值),你就可以在其上构建所有必要的 L2。
- 第一层可能会越来越难以改变,但如果它们在可扩展数据可用性(2.8 mb/sec)之上,这对计算 L2 来说没关系。
问题
问:L2 技术是否排除图灵完备语言/与 zKsnarks 不兼容?
数学对 TC 的定义与加密社区对 TC 的理解有所不同。数学:TC 意味着计算语言。它们过于通用,以至于你无法确定计算何时停止(Snark 需要事先知道这一点)。
加密:用 TC 来表达足够复杂以组合具有复杂内部状态应用程序(plasma、makerdao、uniswap、这些 L2 的验证引擎)所需的能力 BTC 无法做到这些,ETH 可以。ZEXE 是基于 UTXO 的模型,但同样可以。
TC 是错误的词,但确实可以在 zKsnarks 中进行足够表达以构建应用的东西。
问:在熊市期间,我们是否应该担心 30% 的哈希率损失?
这是一个问题,但并不是值得真正担心的。ETC(以太坊经典)受到攻击,但仅占 ETH 链的 3% 哈希率。如果这成为一个重大关切,则阶段 0 可以用作 1.0 链 POW 客户端的最终机制作。51% 攻击将只允许进行区块审查,而不能撤回区块。
问:基础层与应用层之间的去中心化程度总是会存在竞争。数据可用性和 SNARKs 是否总是意味着去中心化? [部分听不清]
这种新型的 L2 类别很有趣——不需要解决数据可用性问题。中心化可以减少。比较 Plasma 和 Rollup:Plasma 数据可用性问题意味着需要有一个操作员,如果恶意,可以浪费用户的时间产生 2 周的币锁定。Rollup 则没有数据可用性问题,因为如果一个中继者消失,另一个可以迅速取而代之。潜在的危害将减少,像 Rollup 这样的 L2 是解决方案的一部分。
问:在进行跨分片通信时,你考虑了两阶段提交协议吗?[听不清]
合同撤回有助于解决火车和酒店问题。(在不同分片上与两个对象进行交互) ETH 链是否应支持 L1 上的同步?不,这会引入过多的复杂性。
现在,两个交叉链接之间可以将分片中的状态转换计算为该分片中的数据和信标链的函数。它不依赖于其他分片中发生的事件。
支持同步的跨分片调用打破了这个不变性,使状态计算变得更复杂,尽管你可以实现一个像 Rollup 这样的 L2,但它将有助于支持同步的跨分片调用。
问:“第三方” L2 解决方案(Celer)与其他以太坊 L2 解决方案之间的关系是什么?
Celer 是一个提供自己数据可用性解决方案的 L2,Plasma 也这样做。Rollup 在链下进行计算并在链上处理数据可用性。具有不同的权衡。
找我 @trent_vanepps 讨论或更正。✌