RC20:Vitalik:为何要尝试在单个Slot实现最终敲定?_TRX

原文作者:VitallikButerin

特别感谢JustinDrake、DankradFeist、AlexObadia、Hasu和其他人对这篇文章不同版本的反馈和评论。

当前,(信标链)以太坊区块需要64-95个slot(约15分钟)来实现最终敲定。在去中心化/敲定时间/开销权衡曲线上,选择这样一个中等时长、在任意维度都不差的权衡是合理的:15分钟不算太长,与当前的交易所的确认时间相当,且这允许用户在常规计算机上运行节点,即使有大量质押了32?ETH?(而不是早期要求的1500ETH)的验证者也能如此。然而,有很多关于将敲定时间减少到单个slot的很好论据。本文是一个处于研究状态的帖子,评估了一些用于实现此目的可能策略。

01.当前的以太坊staking(质押)如何以及为何运作

当前,大约有285,000个验证者,这些账户已经存入了32ETH,因此可以参与以太坊staking(质押)。验证者数量并不与实际参与质押的用户(质押者)数量完全对应:一些富有的质押者可能控制着数百个验证者。32ETH的最低质押要求限制了可能的验证者账户数量,确保了以太坊链仍然拥有计算能力来处理这些账户。

每个slot(12秒)会有一个新区块被添加到链中。在每个slot中,还有数千个(由验证者提交的)证明(attestations),用于对(信标链)链头进行投票。有一个称为LMDGHOST的分叉选择规则,该规则会将这些证明作为输入,来确定链的头部。这种由数千个证明进行的并行投票,使得以太坊要比传统的最长链系统更加强健:除非发生一次主动攻击(activeattack)或者一个重大的网络故障,不然即便是单个slot也几乎永远不会被逆转(恢复)。

这些证明还有第二个目的:它们在一个称为CasperFFG的大规模共识算法中扮演着选票(votes)的角色。每个epoch(每32slots称为一个epoch,约6.4分钟),所有活跃的验证者都有机会进行一次证明。两轮之后,如果一切顺利,前一个epoch(以及其中的所有区块)将被敲定(finalized)。一旦某个区块被敲定了,逆转该区块将至少需要所有验证者中的1/3验证者数量销毁它们的存款(质押金):攻击成本超过了300万ETH。

持续地审查验证者或交易同样成本高昂,尽管抵抗审查攻击需要额外的协议干预。如果51%的验证者开始审查(验证者或交易),受害者和用户可以协调发起一个少数软分叉(minoritysoftfork),他们在彼此的区块上构建,并忽略该攻击者。在这个少数软分叉上,该攻击者的存款将因为其受到了怠工惩罚(inactivityleak)而损失数百万ETH,几周后,这条链将恢复敲定。

02.为何要尝试实现在单个Slot敲定?

尝试改变现状并将敲定时间缩短在单个Slot完成,这里面有几个关键原因:

用户体验。大多数用户不愿意等待15分钟的敲定时间。今天,即便是交易所也时常在仅12-20次确认(约3-5分钟)就将用户的存款视为“敲定了”(finalized),尽管(与真正的?PoS?敲定相比)这种提供12-20次的?PoW?确认的安全性较低。单个slot的敲定将满足用户越来越习惯的速度的同时,提供一个非常高的安全性。抗MEV重组。在单个slot敲定将使得即使是大多数验证者也不可能为了提取MEV(矿工可提取价值)而对区块链进行重组。合并中的LMDGHOST(分叉选择规则)已经让这种情况的发生变得非常困难了,而在单个Slot敲定让这种保证更加强大,并创造了一个强大的、压倒性的抑制因素,甚至可以阻止恶意的绝大多数验证者串谋和攻击。可以参阅这篇文章,了解关于这个论点的更详细的阐述。有机会减少协议复杂性和bugs。CasperFFG敲定和LMDGHOST分叉选择规则之间的“接口”是使得协议非常复杂的一个来源,导致许多攻击需要相当复杂的补丁来修复,且还有更多的弱项定期在被发现。在单个slot敲定提供了一个在单个slot确认机制和该分叉选择规则之间创建一个更清晰的关系的机会(只有当离线的验证者比例少于或等于1/3时才能运行)。协议复杂性的其他来源(比如将验证者打乱分配至固定规模的委员会中)也可能减少。想法1:通过「超级委员会」来实现单个Slot敲定

外媒:澳大利亚监管机构ASIC在FTX崩溃前八个月就已对其抱有担忧:1月30日消息,据外媒报道,早在FTX于去年11月倒闭8个月前,澳大利亚金融监管机构就对该交易所在澳大利亚的子公司存在疑虑。Guardian Australia获得的文件显示,澳大利亚证券和投资委员会(ASIC)官员对FTX Australia的运营方式感到担忧,因为该公司能够通过公司收购在该国获得牌照。

据了解,FTX于2021年12月收购金融机构IFS Markets,获得了澳大利亚金融服务许可证(AFSL),并于2022年3月开始运营。ASIC负责人Joe Longo表示,这使得FTX Australia有效地避开了通常适用于新的AFSL许可证持有者的同一级别的审查。

文件显示,该监管机构在FTX开始运营的同月向其发布了第912C条通知,要求它向ASIC提供有关其运营的文件,以评估FTX是否符合AFSL许可证条件。有了该通知,ASIC可以指示被许可人提供文件,说明他们提供的金融服务、被许可人开展的金融服务业务,并确定被许可人是否满足“合适人选测试”。

还有一份简报文件也证实,在最初的担忧和去年11月FTX崩溃之间的几个月里,该监管机构已将该交易所置于“监视活动”之下,总共向FTX发出了三次通知。文件时间表还显示,ASIC直到2022年10月仍对FTX的运营感到担忧。(Cointelegraph)[2023/1/30 11:36:33]

不是所有验证者都参与每一轮CasperFFG共识,而是只有一个由几千名验证者组成的中型超级委员会(amedium-sizedsuper-committee)参与,从而允许每一轮共识都在单个Slot中发生。相关的技术思想首先在这篇?etheresear.ch帖子中进行了介绍。

该帖子对这个想法进行了更加详细的介绍,但其核心原则如下:

并不是在每个epoch运行BFT(拜占庭容错)共识,而是在每个slot运行。这意味着一旦某笔交易被打包进某个区块中,那么在一个slot之后,逆转这笔交易的成本将是数千ETH。我们不依赖于全部的活跃验证者来敲定单个slot。相反,我们依赖于一个随机挑选的、由几千名验证者组成的「超级委员会」(super-committee)来敲定单个slot。只有当某个委员会不执行确认的职责的情况下(这需要超过1/4的验证者离线或者是恶意验证者才会发生),LMDGHOST分叉选择规则才会被使用。如果这种情况发生了,那么该分叉选择规则会决定哪个区块才是链头,且该委员会将会受到怠工惩罚(inactivityleak),直到其再次开始执行确认职责。

上图:如果某个委员会未能执行确认职责,那么区块链将使用分叉选择规则来决定哪个区块是链头,并对该委员会的验证者进行怠工惩罚,直到这些验证者的余额被削减到某一个程度,即剩余的验证者中有超过2/3的验证者余额处于在线,且该委员会再次执行确认。

转向使用「超级委员会」的次级效益

从全局验证者转向超级委员会还有一些刺激效益:

运行验证者节点的计算负载变得更加稳定。运行验证者节点的计算要求不再需要与验证者总数成正比,迫使验证者拥有强大的机器以应对验证者数量的大幅增加,而是使得运行验证者节点的计算负载变得更加稳定,这样验证者就确切地知道他们需要什么计算需求。大多数时候,验证者可以立即取款。当下不属于某个委员会的验证者将能够立即取款(除非有非常多验证者正在取款,存在一个区块队列)。但即便是属于委员会的验证者也能够非常快速地取款(1-5分钟),因为委员会能够在基于单个Slot敲定的基础上进行快速轮换。只有在真正异常的情况下(无论是意外的大规模取款还是正在进行的主动攻击),验证者才会被要求留下来并继续保护区块链,直到一切恢复正常。超级委员会的规模必须有多大?

就验证者数量而言,超级委员会的规模应该“大到足以成为一个安全的委员会”。但委员会也必须在其ETH总量(即委员会中所有验证者的总质押量)方面足够大。被罚没和被怠工惩罚的ETH数量需要大于从攻击中实际可以获得的收益,而且它需要足够大,以阻止或使强大的攻击者破产,因为攻击者有巨大的外部动机来破坏这条链。

这个需要多少ETH的问题不可避免是一个直觉问题。你可以问下面这些问题来引导你的直觉:

假设以太坊链受到51%的攻击,社区需要花几天时间协调一个链下治理事件来恢复,但有X%的ETH会被销毁。这个X需要多大才能对以太坊生态系统带来净效益?假设一个主要的交易所被盗走了数百万ETH,然后该攻击者将收益进行质押并获得了超过51%的验证者数量。那么在该验证者偷来的所有资金被销毁(罚没)之前,他能够对区块链发起多少次51%攻击?假设一个51%攻击者开始在很短的时间内重复重组区块链以捕获所有的MEV。我们希望攻击者的每秒成本达到什么水平?据JustinDrake估计,如今对比特币发起覆巢式攻击(spawn-campattack)的成本(也即在比特币社区改变PoW算法之前,反复对比特币进行51%攻击的成本)约为100亿美元,相当于其市值的1%。一次性51%攻击以太坊的成本应该比该成本高出多少倍?

上图:针对“你认为攻击以太坊的最低成本是多少?”的以太坊研究人员内部调查结果。

如果我们只关注不依赖延迟的51%攻击,那么100万ETH的攻击成本将意味着一个「超级委员会」的规模是200万ETH(大约65,536名验证者),如果我们还将涉及到复杂的恶意验证者和网络操控结合起来的34%攻击,那么超级委员会的规模应是300万ETH(大约97,152名验证者)。但如果我们想要以太坊链的负载保持在今天的水平(每个slot约9000名验证者,也即大约288,000ETH),这对应的攻击成本为96,000到144,000?ETH。这两个数字之间仍有很大的差距。

因此,除非以太坊社区能够相信攻击以太坊的成本更低是可以接受的(记住:攻击者仍然需要控制50%以上的所有被质押的ETH,这只是他们将失去的数量),否则仅依靠这条路径似乎很难。

想法2:努力让尽可能多的证明者(attesters)发挥作用

假设我们确实想要一条在每个slot都有大量验证者参与的区块链(比如,每个slot有131,072名验证者,也即相当于保守的是400万ETH)。那么这个基础上的性能数字将是怎样的呢?

事实证明,拥有大量验证者来证明每个Slot的链上成本并没有看上去那么高:

存储验证者记录所需的状态空间将与今天完全相同(每个验证者大约150字节)。验证一个签名将需要将131,072个公钥的随机子集加在一起。每个椭圆曲线的添加可以在大约1微秒内完成,所以这可以在大约130毫秒内完成。每个slot需要执行两次(如果一个区块包含冗余证明,则可能需要执行更多次)。如果我们假设在slotN活跃的某个验证者通常在slotN+1也保持活跃,那么链上添加成本可以进一步优化;这意味着对于每个slot,我们只需要计算新旧聚合公钥之间的变量(delta),在良好的条件下,聚合公钥可能由几千或者甚至几百个验证者公钥组成。即使在最坏的情况下,也应该总是能够进行至少2倍的优化(即~65毫秒)。仍然存在的最大问题是签名聚合。单个Slot中生成和发送签名的验证者有131,072名,这些签名需要快速地组合成一个大型聚合签名。

今天,签名聚合是在p2p子网中完成的。每个包含了256名验证者的委员会都有其自身子网络的签名聚合。有16个随机选择的特权聚合器,它们可以进行签名聚合并将它们提交到主子网(mainsubnet)。然后,区块提议者然后从每个委员会中取最佳的签名聚合,并将它们加在一起,形成一个大的签名聚合。如下图所示:

这给每个小组委员会带来了负载,其中验证者需要单独验证签名,特别是在发生攻击,使得网络充斥着无效签名的情况下,且在全局子网中,如果有n个委员会,提议者必须验证16*n个签名。

聚合很可能是未来两年内显著优化的目标。目前,实际应用中最大的瓶颈是每个子网的负载,特别是对于需要在多个子网中的节点而言。

通过两种有前景的简单方法可以获得显著的改进:

增加子网数量,以允许更多的证明(attestations)总数,而不增加每个子网的负载。主子网的负载会增加,但dank-sharding可以弥补这一点,dank-sharding允许一个slot中的所有验证者对相同的数据进行签名,从而提高效率,使这些签名更容易被批量验证。更改网络规则,这样即使有许多验证者的节点也只需要参与一个子网,从而为增加每个子网的负载和子网计数提供了空间。只有当某个验证者是某个子网中的聚合器时,该验证者才需要严格订阅该子网;一个仅仅发布到子网的验证者只需要找到一个订阅到该子网的另一个诚实验证者,而不需要自己订阅它。更专业的聚合器

支持更多验证者的一种可能的更激进的策略是,将签名聚合转变为一个更专门化的角色(类似于PBS(提议者/构建者分离)方案中的区块构建者),在这个角色中,我们希望专业的参与者能够持久地存在于每个子网(甚至所有子网)中,并能够很好地收集签名。这些参与者可以是有偿的,也可以是自愿的角色(因为对于已经质押了许多验证者的用户来说,这个额外成本非常低)。

针对这种情况的一个简单的协议是允许验证者签名一条?ProposedAggregate?消息,其中包含(i)一个聚合签名,(ii)参与者的位字段(假设有131,072名验证者,那么只有16kB),以及(iii)聚合器对这两个对象的签名。

提议者将侦听?ProposedAggregate?消息息,并验证那条有着最高参与人数的签名。如果该签名有效,则提议者将打包该签名;如果无效,则提议者将因为验证该签名而损失大约130秒,然后继续验证下一个有着第二高参与人数的聚合(如果需要,还可能会继续验证参与人数第三高的聚合,等等),所有无效?ProposedAggregate?消息的聚合器将可能受到罚没(slashing)?惩罚。

03.我们如何实现在单个Slot敲定?

转向单个Slot确认是一个需要多年时间的路线图;即使很快就会开始大量的开发工作,它也将是以太坊在完成PoS、分片和Verkle树的推出之后,这将是以太坊之后的重大变化之一。总的来说,实现的路径大致如下:

加紧优化证明聚合的工作。无论如何,这都是一个重要的问题,因为验证者的数量预计会增加。我们需要在这个问题上更专注的研究和开发努力。就常规参数达成一致:我们的目标是「超级委员会」有多大规模(或者超级委员会的规模是否将是所有活跃验证者的集合,并且我们实现了某种不同的机制来控制可以有多少活跃验证者)?我们可以接受什么样的开销水平?我们将使用什么技术来减少开销?为了实现单个Slot敲定,需要对一个理想的共识和分叉选择机制进行研究、达成共识和明确下来。这将结合BFT共识机制(CasperFFG或其他更传统的机制)和分叉选择规则,其中分叉选择规则只在≥1/3的验证者离线的情况下才有意义。就实现路径达成一致并执行。这可能是需要多步骤实现的,其中一步引入超级委员会机制,然后下一步添加全新的共识和聚合机制。在单个slot实现敲定的最终好处将是非常显著的,技术可以随着时间的推移而改进,以实现本文没有描述的其他好处(比如,使用增加的最大验证者计数来减少最小ETH质押量)。因此,这篇文章中所描述的技术挑战值得我们尽快开始更深入、更专注的研究和开发。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

大币网

[0:15ms0-5:83ms