# 以太坊的未来:The Surge## 可扩展性三角悖论可扩展性三角悖论认为区块链的去中心化、可扩展性和安全性三个特性之间存在矛盾。它并非一个严格的定理,而是提出了一个启发式的数学论点:如果一个去中心化友好的节点每秒可以验证N笔交易,而你有一个每秒处理k*N笔交易的链,那么要么每笔交易只能被1/k个节点看到,这意味着攻击者只需破坏少数节点就能通过一笔恶意交易;要么你的节点将变得强大,而你的链不会去中心化。多年来,一些高性能链常声称它们在不从根本上改变架构的情况下就解决了三元悖论,通常是通过运用软件工程技巧来优化节点。这总是具有误导性的,在这些链上运行节点比在以太坊上运行节点要困难得多。然而,数据可用性采样与SNARKs的结合确实解决了三角悖论:它允许客户端在仅下载少量数据并执行极少量计算的情况下,验证一定数量的数据是可用的,并且一定数量的计算步骤是正确执行的。SNARKs是无需信任的。数据可用性采样具有一种微妙的few-of-N信任模型,但它保留了不可扩容链所具有的基本特性,即即使是51%的攻击也无法强制坏块被网络接受。解决三难困境的另一种方法是Plasma架构,它使用巧妙的技术,以激励兼容的方式将监视数据可用性的责任推给用户。随着SNARKs的普及,Plasma架构对于比以往更广泛的使用场景变得更加可行。## 数据可用性采样的进一步进展### 我们正在解决什么问题?2024年3月13日,当Dencun升级上线时,以太坊区块链每12秒的slot有3个约125 kB blob,或每个slot的数据可用带宽约375 kB。假设交易数据直接在链上发布,则ERC20转账约为180字节,因此以太坊上Rollup的最大TPS为:375000 / 12 / 180 = 173.6 TPS如果我们加上以太坊的calldata,则变为607 TPS。使用PeerDAS,blob数量可能会增加到8-16,这将为calldata提供463-926 TPS。这是对以太坊L1的重大提升,但还不够。我们想要更多的可扩展性。我们的中期目标是每个slot 16 MB,如果结合Rollup数据压缩的改进,将带来~58000 TPS。### 它是什么?如何运行?PeerDAS是"1D sampling"的一个相对简单的实现。在以太坊中,每个blob都是一个在253位素数域上的4096次多项式。我们广播多项式的shares,其中每个shares包含从总共8192个坐标中相邻的16个坐标上的16个评估值。在这8192个评估值中,任何4096个都可以恢复blob。PeerDAS的工作原理是让每个客户端侦听少量子网,其中第i个子网广播任何blob的第i个样本,并通过询问全球p2p网络中的对等方来请求它需要的其他子网上的blob。更保守的版本SubnetDAS仅使用子网机制,而没有额外的询问对等层。当前的提案是让参与权益证明的节点使用SubnetDAS,而其他节点使用PeerDAS。从理论上讲,我们可以将"1D sampling"规模扩展得相当大:如果我们将blob的最大数量增加到256,那么我们就能达到16MB的目标,而数据可用性采样中每个节点16个样本 * 128个blob * 每个blob每个样本512字节 = 每个slot 1 MB的数据带宽。这只是勉强在我们的容忍范围内:这是可行的,但这意味着带宽受限的客户端无法采样。我们可以通过减少blob数量和增加blob大小来对此进行一定程度的优化,但这会使重建成本更高。因此,我们最终想要更进一步,进行2D采样,这种方法不仅在blob内进行随机抽样,还在blob之间进行随机抽样。利用KZG承诺的线性属性,通过一组新的虚拟blob来扩展一个区块中的blob集,这些虚拟blob冗余地编码了相同的信息。至关重要的是,计算承诺的扩展并不需要有blob,因此该方案从根本上来说对分布式区块构建是友好的。实际构建区块的节点只需要拥有blob KZG承诺,并且它们可以依赖数据可用性采样来验证数据块的可用性。一维数据可用性采样本质上也对分布式块构建友好。### 还需做什么?又有哪些权衡?接下来是完成PeerDAS的实施和推出。之后,不断增加PeerDAS上的blob数量,同时仔细观察网络并改进软件以确保安全,这是一个渐进的过程。同时,与此同时,我们希望有更多的学术工作来规范PeerDAS和其他版本的DAS及其与分叉选择规则安全等问题的交互。在未来更远的阶段,我们需要做更多的工作来确定2D DAS的理想版本,并证明其安全属性。我们还希望最终能够从KZG转向一种量子安全且无需可信设置的替代方案。目前,我们还不清楚有哪些候选方案对分布式区块构建是友好的。即使使用昂贵的"蛮力"技术,即使用递归STARK来生成用于重建行和列的有效性证明,也不足以满足需求,因为虽然从技术上讲,一个STARK的大小为O(log(n) * log(log(n))哈希值,但实际上STARK几乎与整个blob一样大。我认为的长期现实路径是:1. 实施理想的2D DAS;2. 坚持使用1D DAS,牺牲采样带宽效率,为了简单性和鲁棒性而接受较低的数据上限3. 放弃DA,完全接受Plasma作为我们关注的主要Layer2架构。请注意,即使我们决定直接在L1层扩展执行,这种选择也是存在的。这是因为如果L1层要处理大量的TPS,L1区块将变得非常大,客户端将希望有一种高效的方法来验证它们的正确性,因此我们将不得不在L1层使用与Rollup相同的技术。### 如何与路线图的其他部分交互?如果实现数据压缩,对2D DAS的需求会有所减少,或者至少会延迟,如果Plasma被广泛使用,则需求会进一步减少。DAS也对分布式区块构建协议和机制提出了挑战:虽然DAS理论上对分布式重建友好,但这在实践中需要与包inclusion list提案及其周围的分叉选择机制相结合。## 数据压缩### 我们在解决什么问题?Rollup中的每笔交易都会占用大量的链上数据空间:ERC20传输大约需要180字节。即使有理想的数据可用性采样,这也限制了Layer协议的可扩展性。每个slot 16 MB,我们得到:16000000 / 12 / 180 = 7407 TPS如果我们不仅能解决分子的问题,还能解决分母的问题,让每个Rollup中的交易在链上占用更少的字节,那会怎样?### 它是什么,如何工作?在我看来,最好的解释是两年前的这张图:零字节压缩中,用两个字节替换每个长的零字节序列,表示有多少个零字节。更进一步,我们利用了交易的特定属性:签名聚合:我们从ECDSA签名切换到BLS签名,BLS签名的特性是多个签名可以组合成一个单一的签名,该签名可以证明所有原始签名的有效性。在L1层中,由于即使进行聚合,验证的计算成本也较高,因此不考虑使用BLS签名。但在L2这样数据稀缺的环境中,使用BLS签名是有意义的。ERC-4337的聚合特性为实现这一功能提供了一条途径。用pointers替换地址:如果以前使用过某个地址,我们可以将20字节的地址替换为指向历史记录中某个位置的4字节pointer。交易值的自定义序列化------大多数交易值的位数很少,例如,0.25 ETH表示为250,000,000,000,000,000 wei。最大基础手续费和优先手续费也类似。因此,我们可以使用自定义的十进制浮点格式,来表示大多数货币值。### 还需做什么,有哪些权衡?接下来主要要做的是实际实现上述方案。主要的权衡包括:1、切换到BLS签名需要付出很大努力,并且会降低与能够增强安全性的可信硬件芯片的兼容性。可以使用其他签名方案的ZK-SNARK封装来替代它。2、动态压缩(例如,用pointers替换地址)会使客户端代码变得复杂。3、将状态差异发布到链上而不是交易,会降低可审计性,并使很多软件(例如区块浏览器)无法工作。### 如何与路线图的其他部分交互?采用ERC-4337,并最终将其部分内容纳入L2 EVM中,可以大大加快聚合技术的部署。将ERC-4337的部分内容放在L1上可以加快其在L2上的部署。## Generalized Plasma### 我们正在解决什么问题?即使使用16 MB的blob和数据压缩,58,000 TPS也未必足以完全满足消费者支付、去中心化社交或其他高带宽领域的需求,尤其是当我们开始考虑隐私因素时,这可能会使可扩展性降低3-8倍。对于高交易量、低价值的应用场景,目前的一种选择是使用Validium,它将数据保存在链下,并采用了一种有趣的安全模型:运营商无法窃取用户的资金,但他们可能会暂时或永久冻结所有用户的资金。但我们可以做得更好。### 它是什么,如何工作?Plasma是一种扩容解决方案,它涉及到一个运营商将区块发布到链下,并将这些区块的Merkle根放到链上。对于每个区块,运营商会向每个用户发送一个Merkle分支来证明该用户的资产发生了什么变化,或者没有发生什么变化。用户可以通过提供Merkle分支来提取他们的资产。重要的是,这个分支不必以最新状态为根。因此,即使数据可用性出现问题,用户仍然可以通过提取他们可用的最新状态来恢复他们的资产。如果用户提交了一个无效的分支,则可以通过链上的挑战机制来判断资产的合法归属。早期的Plasma版本仅能处理支付用例,无法有效地进一步推广。然而,如果我们要求每个根都用SNARK进行验证,那么Plasma就会变得强大得多。每个挑战游戏都可以大大简化,
以太坊The Surge:突破可扩展性极限
以太坊的未来:The Surge
可扩展性三角悖论
可扩展性三角悖论认为区块链的去中心化、可扩展性和安全性三个特性之间存在矛盾。它并非一个严格的定理,而是提出了一个启发式的数学论点:如果一个去中心化友好的节点每秒可以验证N笔交易,而你有一个每秒处理k*N笔交易的链,那么要么每笔交易只能被1/k个节点看到,这意味着攻击者只需破坏少数节点就能通过一笔恶意交易;要么你的节点将变得强大,而你的链不会去中心化。
多年来,一些高性能链常声称它们在不从根本上改变架构的情况下就解决了三元悖论,通常是通过运用软件工程技巧来优化节点。这总是具有误导性的,在这些链上运行节点比在以太坊上运行节点要困难得多。
然而,数据可用性采样与SNARKs的结合确实解决了三角悖论:它允许客户端在仅下载少量数据并执行极少量计算的情况下,验证一定数量的数据是可用的,并且一定数量的计算步骤是正确执行的。SNARKs是无需信任的。数据可用性采样具有一种微妙的few-of-N信任模型,但它保留了不可扩容链所具有的基本特性,即即使是51%的攻击也无法强制坏块被网络接受。
解决三难困境的另一种方法是Plasma架构,它使用巧妙的技术,以激励兼容的方式将监视数据可用性的责任推给用户。随着SNARKs的普及,Plasma架构对于比以往更广泛的使用场景变得更加可行。
数据可用性采样的进一步进展
我们正在解决什么问题?
2024年3月13日,当Dencun升级上线时,以太坊区块链每12秒的slot有3个约125 kB blob,或每个slot的数据可用带宽约375 kB。假设交易数据直接在链上发布,则ERC20转账约为180字节,因此以太坊上Rollup的最大TPS为:375000 / 12 / 180 = 173.6 TPS
如果我们加上以太坊的calldata,则变为607 TPS。使用PeerDAS,blob数量可能会增加到8-16,这将为calldata提供463-926 TPS。
这是对以太坊L1的重大提升,但还不够。我们想要更多的可扩展性。我们的中期目标是每个slot 16 MB,如果结合Rollup数据压缩的改进,将带来~58000 TPS。
它是什么?如何运行?
PeerDAS是"1D sampling"的一个相对简单的实现。在以太坊中,每个blob都是一个在253位素数域上的4096次多项式。我们广播多项式的shares,其中每个shares包含从总共8192个坐标中相邻的16个坐标上的16个评估值。在这8192个评估值中,任何4096个都可以恢复blob。
PeerDAS的工作原理是让每个客户端侦听少量子网,其中第i个子网广播任何blob的第i个样本,并通过询问全球p2p网络中的对等方来请求它需要的其他子网上的blob。更保守的版本SubnetDAS仅使用子网机制,而没有额外的询问对等层。当前的提案是让参与权益证明的节点使用SubnetDAS,而其他节点使用PeerDAS。
从理论上讲,我们可以将"1D sampling"规模扩展得相当大:如果我们将blob的最大数量增加到256,那么我们就能达到16MB的目标,而数据可用性采样中每个节点16个样本 * 128个blob * 每个blob每个样本512字节 = 每个slot 1 MB的数据带宽。这只是勉强在我们的容忍范围内:这是可行的,但这意味着带宽受限的客户端无法采样。我们可以通过减少blob数量和增加blob大小来对此进行一定程度的优化,但这会使重建成本更高。
因此,我们最终想要更进一步,进行2D采样,这种方法不仅在blob内进行随机抽样,还在blob之间进行随机抽样。利用KZG承诺的线性属性,通过一组新的虚拟blob来扩展一个区块中的blob集,这些虚拟blob冗余地编码了相同的信息。
至关重要的是,计算承诺的扩展并不需要有blob,因此该方案从根本上来说对分布式区块构建是友好的。实际构建区块的节点只需要拥有blob KZG承诺,并且它们可以依赖数据可用性采样来验证数据块的可用性。一维数据可用性采样本质上也对分布式块构建友好。
还需做什么?又有哪些权衡?
接下来是完成PeerDAS的实施和推出。之后,不断增加PeerDAS上的blob数量,同时仔细观察网络并改进软件以确保安全,这是一个渐进的过程。同时,与此同时,我们希望有更多的学术工作来规范PeerDAS和其他版本的DAS及其与分叉选择规则安全等问题的交互。
在未来更远的阶段,我们需要做更多的工作来确定2D DAS的理想版本,并证明其安全属性。我们还希望最终能够从KZG转向一种量子安全且无需可信设置的替代方案。目前,我们还不清楚有哪些候选方案对分布式区块构建是友好的。即使使用昂贵的"蛮力"技术,即使用递归STARK来生成用于重建行和列的有效性证明,也不足以满足需求,因为虽然从技术上讲,一个STARK的大小为O(log(n) * log(log(n))哈希值,但实际上STARK几乎与整个blob一样大。
我认为的长期现实路径是:
请注意,即使我们决定直接在L1层扩展执行,这种选择也是存在的。这是因为如果L1层要处理大量的TPS,L1区块将变得非常大,客户端将希望有一种高效的方法来验证它们的正确性,因此我们将不得不在L1层使用与Rollup相同的技术。
如何与路线图的其他部分交互?
如果实现数据压缩,对2D DAS的需求会有所减少,或者至少会延迟,如果Plasma被广泛使用,则需求会进一步减少。DAS也对分布式区块构建协议和机制提出了挑战:虽然DAS理论上对分布式重建友好,但这在实践中需要与包inclusion list提案及其周围的分叉选择机制相结合。
数据压缩
我们在解决什么问题?
Rollup中的每笔交易都会占用大量的链上数据空间:ERC20传输大约需要180字节。即使有理想的数据可用性采样,这也限制了Layer协议的可扩展性。每个slot 16 MB,我们得到:
16000000 / 12 / 180 = 7407 TPS
如果我们不仅能解决分子的问题,还能解决分母的问题,让每个Rollup中的交易在链上占用更少的字节,那会怎样?
它是什么,如何工作?
在我看来,最好的解释是两年前的这张图:
零字节压缩中,用两个字节替换每个长的零字节序列,表示有多少个零字节。更进一步,我们利用了交易的特定属性:
签名聚合:我们从ECDSA签名切换到BLS签名,BLS签名的特性是多个签名可以组合成一个单一的签名,该签名可以证明所有原始签名的有效性。在L1层中,由于即使进行聚合,验证的计算成本也较高,因此不考虑使用BLS签名。但在L2这样数据稀缺的环境中,使用BLS签名是有意义的。ERC-4337的聚合特性为实现这一功能提供了一条途径。
用pointers替换地址:如果以前使用过某个地址,我们可以将20字节的地址替换为指向历史记录中某个位置的4字节pointer。
交易值的自定义序列化------大多数交易值的位数很少,例如,0.25 ETH表示为250,000,000,000,000,000 wei。最大基础手续费和优先手续费也类似。因此,我们可以使用自定义的十进制浮点格式,来表示大多数货币值。
还需做什么,有哪些权衡?
接下来主要要做的是实际实现上述方案。主要的权衡包括:
1、切换到BLS签名需要付出很大努力,并且会降低与能够增强安全性的可信硬件芯片的兼容性。可以使用其他签名方案的ZK-SNARK封装来替代它。
2、动态压缩(例如,用pointers替换地址)会使客户端代码变得复杂。
3、将状态差异发布到链上而不是交易,会降低可审计性,并使很多软件(例如区块浏览器)无法工作。
如何与路线图的其他部分交互?
采用ERC-4337,并最终将其部分内容纳入L2 EVM中,可以大大加快聚合技术的部署。将ERC-4337的部分内容放在L1上可以加快其在L2上的部署。
Generalized Plasma
我们正在解决什么问题?
即使使用16 MB的blob和数据压缩,58,000 TPS也未必足以完全满足消费者支付、去中心化社交或其他高带宽领域的需求,尤其是当我们开始考虑隐私因素时,这可能会使可扩展性降低3-8倍。对于高交易量、低价值的应用场景,目前的一种选择是使用Validium,它将数据保存在链下,并采用了一种有趣的安全模型:运营商无法窃取用户的资金,但他们可能会暂时或永久冻结所有用户的资金。但我们可以做得更好。
它是什么,如何工作?
Plasma是一种扩容解决方案,它涉及到一个运营商将区块发布到链下,并将这些区块的Merkle根放到链上。对于每个区块,运营商会向每个用户发送一个Merkle分支来证明该用户的资产发生了什么变化,或者没有发生什么变化。用户可以通过提供Merkle分支来提取他们的资产。重要的是,这个分支不必以最新状态为根。因此,即使数据可用性出现问题,用户仍然可以通过提取他们可用的最新状态来恢复他们的资产。如果用户提交了一个无效的分支,则可以通过链上的挑战机制来判断资产的合法归属。
早期的Plasma版本仅能处理支付用例,无法有效地进一步推广。然而,如果我们要求每个根都用SNARK进行验证,那么Plasma就会变得强大得多。每个挑战游戏都可以大大简化,