文章介绍了Matter Testnet的推出,这是基于SNARK技术的Plasma扩展方案,能够在测试网上实现每秒500笔交易的处理。文章详细阐述了Plasma的技术背景、SNARKs的应用、技术挑战和解决方案,以及未来的发展方向。
由 Alex Vlasov, Alex Gluchowski
如果你是一个Plasma开发者,可以直接跳过介绍,滚动到技术细节。
比特币网络在 10年前 的启动开启了技术、政治和经济的新时代。中本聪的发明导致了一个惊人的超过1000亿美元的行业的创造,以及人们头脑中的巨大范式转变:去中心化革命已经开始。
这也大大提醒我们,人类进步往往受到黑天鹅事件和创新突破的显著影响,而非循序渐进的发展。十年的区块链历史一再证明了这一点。以太坊就是零到一飞跃的一个绝妙例子。然而,缺失的东西通常表达得比存在的东西更为响亮。加密货币和区块链技术的各个方面随着时间的推移有所改善,但尽管付出了大量努力,有一件事几乎没有改变:扩展性。
我们需要在这里做一点澄清。许多项目声称已经解决了扩展性问题。实际上,解决这个问题是微不足道的:单个Postgres数据库可以轻松处理数百万笔交易。真正的挑战是:在不妥协去中心化和安全性的情况下进行扩展。这要困难得多。
比特币每秒能够处理5笔交易,以太坊则管理仅为15笔。相比之下,Visa的平均每秒交易量为2000 TPS,峰值可达到数万TPS。请花点时间思考一下:如果分布式账本能够保持平行,则区块链领域会是什么样子?如果大型行业和机构投资者希望在区块链上进行平稳可靠的支付和合同操作,而不受像可爱的猫咪视频游戏这样的小事影响,我们现在会处于何处?
突破已经期待已久。
一个有前景的扩展想法于2017年夏天由 Joseph Poon和Vitalik Buterin 提出,命名为Plasma。其主要思想是消除智能合约中不必要的数据,只向公有主链的区块广播简短的加密承诺。承诺交易的正确性验算和交易数据的保存应在链下进行。用户注意到不正确的数据被承诺时,可以在EVM中对操作者提出挑战并回滚区块。
后者的方面带来了许多技术挑战,在过去一年实现Plasma的团队逐渐发现了这些问题。最大的问题是,用户被迫持续监控在线活动。这意味着:1)必须转移和存储大量数据到链下,以及2)没有无缝在线存在的用户无法获得与主链可比的安全保证。
我们工作的灵感来自于近年来取得巨大进展的技术: 零知识证明 (ZKP)。这是一类巧妙的数学技术,具有多种属性,其中包括计算完备性证据——换句话说,它们使我们能够说服外部观察者某些计算是正确执行的,并且以简洁且易于验证的方式进行。关于ZKP的介绍可以参见GitHub上的 绝妙零知识列表 或者Vitalik的 精彩技术博客系列。
具体地,我们选择了一种名为SNARK的ZK技术,基于 Groth协议。SNARK非常适合我们的这个问题,原因有几个:
使用SNARK的最大挑战是需要可信的设置,然而这个问题是可以解决的。我们将在一个单独的帖子中详细介绍。
今天,我们很高兴地介绍首个完整功能的SNARK驱动的Plasma alpha版本,在Rinkeby测试网上正式上线。
(也请在 GitHub 上为我们加星)_
用户对交易的验证被以下方法取代:提出区块的操作者必须提交一个SNARK证明新块是正确的,而这一过程由智能合约自动验证。操作者无法包含不正确的区块,因此用户不需要始终在线并持续监控交易活动。
不幸的是,数据可用性仍然是一个开放的挑战,这似乎在没有权衡的情况下无法解决。我们遵循了 Vitalik Buterin 提出的链上数据可用性方案。每个交易的一个小数据片段(在我们的案例中为9字节)被发布到EVM,以保证所有人能够重建Merkle状态。
从技术的角度来看,这违反了Plasma这个术语的狭义定义,因为存储数据的成本仍与交易数量呈线性关系。然而,由于我们与正常代币转账相比,在气体费用上实现了50倍的降低,我们认为使用Plasma这个名称是合理的,因为最终架构与原始结构相似,并在很大程度上达到了其既定目标。
在底层,这是一种 L2解决方案,具有账户模型和可验证状态转移。我们所称的_状态_是所有账户当前余额的集合,以根哈希为特征。可验证状态转移意味着需要通过SNARK证明下一个区块中包含的每笔交易的正确性。
例如,对于账户之间的转账交易,将执行以下检查:
其他类型交易也遵循类似的协议。
用户将交易提交给一个或多个操作者,这些操作者将它们收集在区块中,并将其与SNARK证明一起提交到主链。
用户与测试网的交互可以采取四种不同的操作(交易类型):
存款和退出通过以太坊交易直接在智能合约上发起,转账则在链下提交(例如,通过点对点网络)。
未来,我们设想了一个分散的网络,从第一天起便采用多操作员模式。目前阶段,我们专注于强调与SNARK相关的工作流程和现场演示中的基本操作,而多操作员部分仍在进行中。
为了支持有效的多操作员模式,我们提出了一种委托权益证明(Delegated Proof-of-Stake)来组建一个M个操作者的池。一个随机的抽奖,概率与权益成正比,选举出一个在下一个时间窗口中有权产生区块的操作者。如果被选中的操作者在当前时间窗口中由于技术问题而无法生成证明,智能合约可能允许下一个操作者顶替。
PoS的必要性体现在以下几个主要原因:
为了使多操作员模型高效,我们建议采用两阶段的提交-验证方法:区块首先在链上提交,随后进行SNARK证明的验证。这一方案使得下一个区块的内容可以向其他操作者发送信号。这使得操作者能够并行执行耗时的SNARK证明计算,从而使延迟(提交交易到其在链上最终确认的时间)和吞吐量(每秒交易数)相互独立。下面的图片可以说明这一点:
吞吐量是一个系统可以处理的每秒交易数(TPS)。
吞吐量的理论极限由其链上数据可用性方法设定:由于每笔交易的某些数据必须在链上发布,一个以太坊区块最多只能容纳约~500 TPS。在实际操作中,当接近这个极限时,气体费用可能会疯狂波动,但我们相信几百TPS是现实的。
目前正进行关于其他链下数据可用性方法的研究。如果研究成功,限制因素将转移到可打包入一个区块的交易数量乘以每秒可以在EVM中验证的SNARK证明数量。
当前EVM仅支持BN256椭圆曲线配对的原生原语。该曲线的群体顺序为²²⁸的单位根,这意味着我们可以高效验证最多256百万约束的SNARK。我们在这些限制下成功打包并验证了1600笔交易(计算是在一台72核心的AWS服务器上进行,耗时20分钟)。通过一些技巧和优化,我们可以在EVM上验证高达3500 TPS。
交易成本由两部分组成:链上的气体费用和链下证明生成的费用(后者与以太坊的气体价格无关)。
当前测试网要求每笔交易的链上气体费用固定为1K。
链下费用和延迟(从广播到最终区块验证的单笔交易的时间)是相互依赖的。延迟越低,计算证明所需的服务器功率越大,因此每笔交易的成本越高。
在100 TPS目标延迟为5分钟时,我们估计链下部分费用约为0.001美元。这个估计非常保守,进一步的优化可能会降低这一费用。
项目的当前状态可以在 这里 跟踪。
Alex Vlasov
Alex Gluchowski
- 原文链接: blog.matter-labs.io/intr...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!