文/Joseph Bonneau a16z Crypto研究员
性能和可扩展性是加密世界面临的挑战,一直是一个激烈讨论的话题,与L1项目(独立区块链)和L2解决方案(如rollup和链下通道)密切相关。然而,我们还没有标准化的指标或基准进行衡量。数据报告往往不一致且不完整,这使得项目间的准确比较变得非常困难,而且常常使实践中最重要的内容模糊不清。
我们需要一种更细致、彻底的方法来衡量和比较区块链性能——应将性能分解为多个组件,并在多个轴上进行比较权衡。在本文中,我定义了基本术语,概述了困难挑战,并提供了评估区块链性能需要谨记的指导方针和关键原则。
首先,让我们先定义两个术语,那就是可扩展性和性能,它们具有标准的计算机科学含义,在区块链背景下经常被误用。性能用来衡量系统当前能够实现的目标。正如我们下面将要讨论的,性能指标可能包括每秒交易数量或交易确认时间中位数。另一方面,可扩展性则用来衡量系统通过添加资源来提升性能的能力。
这个区别是很重要的:如果定义正确,很多提高性能的方法是根本不能提高可扩展性的。一个简单的例子就是使用更有效的数字签名机制,例如BLS签名,其长度约是Schnorr或ECDSA签名的一半。如果比特币从ECDSA签名切换到BLS,每个区块的交易数量可能会增加20-30%,一夜之间就能提高性能。但我们只能这样做一次——再没有其他更节省空间的签名机制可供切换(BLS签名也可以聚合以节省更多空间,但这是另一个一次性的技巧)。
在区块链中还有其他一些一次性技巧可以使用(如SegWit),但你需要一个可扩展的体系架构来实现持续的性能优化,添加更多的资源可以随着时间的推移提升性能。这也是许多其他计算机系统的传统智慧,比如构建一个网络服务器。通过一些常见技巧,你可以构建一个速度非常快的服务器;但最终,你需要一个多服务器体系架构,通过不断添加新的服务器来满足不断增长的需求。
懂得这个区别还有助于避免语句中出现的常见类别错误,比如“区块链X是高度可扩展的,它每秒可以处理Y个交易!”后半句说法可能令人印象深刻,但它是一个性能指标,而非可扩展性指标。它说的并不是通过添加资源来提升性能的能力。
可扩展性本质上要求利用并行性。在区块链世界中,L1扩展明显需要分片或类似于分片的支持。分片的基本概念是将状态分割成一系列分区,以便不同的验证者可以独立处理,此概念与可扩展性的定义非常匹配。在L2上还有更多选项,L2允许添加并行处理,包括链下通道、rollup服务器和侧链。
通常,区块链系统性能是通过两个维度进行评估的,即延迟和吞吐量:延迟用以衡量确认单个交易的速度,而吞吐量用以衡量随着时间的推移交易的总速率。这些度量轴既适用于L1和L2系统,也适用于许多其他类型的计算机系统(如数据库查询引擎和web服务器)。
遗憾的是,对延迟和吞吐量的衡量和比较都很复杂。此外,个人用户实际上并不关心吞吐量(这是一个系统范围的衡量指标)。个人用户真正关心的是延迟和交易费——更具体地说,就是他们的交易尽可能快、尽可能低成本地得到确认。尽管许多其他计算机系统也以成本/性能为基础进行评估,但交易费是区块链系统的一个新的性能轴,并不真实存在于传统计算机系统中。
延迟一开始看起来简单明了:交易需要多长时间才能得到确认?但总是有几种不同的方法来回答这个问题。
首先,我们可以在不同时间点衡量延迟,得到的结果也不同。例如,我们什么时候开始计时衡量?是当用户在本地点击“提交”按钮时,还是当交易进入内存池时?我们又在什么时候停止计时呢?是当交易进入提议区块中,还是当一个区块被后续一个或六个区块确认时?
最常用的方法是从验证者角度出发,衡量从一个客户端第一次广播交易到合理“确认”交易的时间(在此意义上,相当于现实世界里的商家认为已收到客户付款,然后发出商品)。当然,不同的商家可能采用不同的验收标准,甚至同一个商家也可能根据交易金额的不同采用不同的标准。
以验证者为中心的方法忽略了在实践中的一些重要事项。首先,它忽略了点对点网络上的延迟(从客户端广播一个交易直到大多数节点听到这个交易消息需要多长时间?),也忽略了客户端延迟(在客户端的本地机器上准备一个交易需要多长时间?)客户端延迟可能非常小,对于签署以太坊支付等简单的交易来说是可以预测的,但对于更复杂的情况延迟问题则可能变得非常显著,如证明一个被屏蔽的Zcash交易是正确的。
即使我们将试图衡量延迟的时间窗口标准化,答案也几乎总是视情况而定。迄今为止,还没有哪个加密货币系统能提供固定的交易延迟。要记住一个基本的经验法则:
延迟是一个分布,而非一个数字。
网络研究界早就明白这一点。对分布的“长尾”进行了特别强调,因为即使是0.1%的交易(或web服务器查询)的延迟也会给终端用户带来严重影响。
在区块链中,延迟确认可因多种原因发生变化:
批处理:大多数系统都以某种方式进行交易批处理,例如,在大多数L1系统上交易被批处理到区块中。这将导致延迟变数,因为一些交易将不得不排队等候,直到这批交易填满区块。其他交易可能比较幸运,因最后加入该批交易而无需等待。这些交易会立即得到确认,不会经历任何额外延迟。
拥堵变量:大多数系统都会出现拥堵,也就是发布的交易量(至少在某些时候)大于系统能够立即处理的交易量。当交易在不可预测的时间(通常被抽象为泊松过程)进行广播时,或者当新交易在一天或一周内的交易速度发生变化时,亦或在响应外部事件时(如发行一个受欢迎的NFT),拥堵程度会发生变化。
共识层差异:在L1上确认交易通常需要一组分布式节点来达成对一个区块的共识,无论拥堵情况如何,都可能会增加可变的延迟。工作量证明系统在不可预测的时间(也是抽象的泊松过程)找到区块。权益证明系统也可以添加各种延迟(例如,如果在线节点数量不足,不能在一轮中组成一个委员会,或者需要一个view
欢迎光临 优惠论坛 (https://www.tcelue.ooo/) | Powered by Discuz! X3.1 |