编者按:本文来自:以太坊爱好者(ID:ethfans),作者:John Adler,Odaily星球日报经授权转载。
本文为 John Adler 代表 Fuel Labs 在 EthCC3 大会上的演讲。Fuel 是一个志在用 rollup 方法提供稳定币支付服务的项目。John 此番演讲实质上是在讨论 Layer-2 扩展方案的意义。
演讲的视频地址:https://www.youtube.com/(很简短,只有 13 分钟)
在第一部分中,作者陈述了公链面临的可扩展性问题,并指出了大家在认识上的误区:共识节点的数量并不影响链的可扩展性,因为瓶颈不在于共识机制。真正的瓶颈在于社会契约(我们追求去中心化),因此不希望对共识节点投入的资源量提出更高的要求。
以太坊的扩展困境在于交易的复杂性,以及状态数据的增长和访问需求(这种复杂性使得节点在验证时要投入更多资源,而状态数据的取得正是验证的先决条件之一,因此必须访问硬盘中的状态数据)。
接下来,作者谈到了 Rollup 方案的核心思想:用以太坊区块链来提供数据可用性,在链下执行交易和保存状态。至于如何在链上保证上链 rollup 区块的有效性,则各显神通:使用零知识证明的,称为 zk rollup;optimistic rollup 用的是错误性证明和同步假设;此外还有使用交互式挑战游戏的。
那么,为什么 Rollup 可以扩展吞吐量呢?因为交易的执行完全放在链下。这一点意义重大,因为显然,这是最大限度解决了交易执行上的瓶颈。
但作者同样指出,大家对 rollup 方案的吞吐量提升有一些误解。常见的方法是根据单区块的 Gas 上限和 calldata 的 Gas 使用量,以及出块的时间,得出 rollup 的 TPS。但这样是很片面的。原因在于,如果大家只使用一条 rollup 链,即交易不并行处理,则除非提高对节点的硬件要求,否则吞吐量跟原来应该是一样的(因为瓶颈不在共识,在交易的执行)。
所以,使用 rollup 的好处,可以跟分片比拟。因为分片之所以能提高吞吐量,不是因为单分片上的节点更少,而是因为可以并行处理交易;此外,还能在不同分片上使用不同的交易执行规则。rollup 其实是用同样的方式来拓展吞吐量的。
最后,作者提到 Fuel 项目所用的 rollup 方案:使用 UTXO 数据模型、还有高效的错误性证明方案、无状态的断言脚本。其设计哲学是高效并行执行、易用(无状态脚本,因此无需引入 Gas 概念)且便利(元交易化,使得用户可以不用 ETH 来支付手续费)。