作者:NICLin,Medium
Pectra硬分叉预计于2025年3月启动主网部署。Pectra升级包含11个技术协议(EIP),它们分别是:
EIP-2537: BLS12-381曲线操作预编译
EIP-2935: 在State中保存历史区块哈希值
EIP-6110: 提供链上 validatordeposits
EIP-7002: 执行层触发退出
EIP-7251: 增加theMAX_EFFECTIVE_BALANCE
EIP-7549: 将 committee 索引移至验证之外
EIP-7623:增加calldata成本
EIP-7685:通用执行层请求
EIP-7691:增加Blob吞吐量
EIP-7702:设置EOA帐户代码
EIP-7840: 在EL 配置文件中添加Blob计划 质押相关的技术协议
EIP-6110:BLS12-381曲线操作预编译
简化用户参与质押的处理流程,让等待时间大幅缩短。
用户参与质押的方式是在执行层上存入32个ETH并由事件日志(EventLog)记录,接着共识层执行解析事件日志来判断是否有人参与质押,然后参与质押的用户就成为验证者。
不过,共识层的验证者首先需要针对哪一个时间点存入达成共识,否则,会发现有些验证者看到5个新的存入,而有些验证者只看到3个,因此共识层验证者们会对要参考哪一个执行层区块(eth1data)进行投票,确保大家看到的是一样的执行层区块。
不过,一开始设计时为了避免执行层出现重大错误导致链分叉,所以参考的执行层区块(eth1data)会是一个约10多个小时以前的执行层区块,确保当重大错误发生时,共识层的开发者们有足够的时间反应处理,不过这也导致参与质押最快也要等上10多个小时才会生效。
△每一个区块都会指向一个母区块,所以可以一路往前证明历史中的任何一个区块。
假设目前是编号为10000的内存块,诈欺挑战要提供编号9000的内存块存在某笔交易X的证明,则挑战者需要从内存块10000的哈希值开始,先证明内存块 10000所连接的母内存块9999的哈希值,然后再证明内存块9998…直到内存块9000,最后再提出内存块9000的内容里包含该笔交易X。
EIP-2935之后,会有个系统合约(部署在0x0F792be4B0c0cb4DAE440Ef133E90C0eCD48CCCC),它的Storage会储存最多8192个以前的内存块的哈希值。每当个新的内存块产时,这个系统合约就会自动更新,将前个内存块的哈希值写进系统合约中(会复写掉8192个以前的内存块的哈希值)。
如此在OptimismticRollup欺诈挑战的例中,挑战者就不必再往前个内存块个内存块慢慢证明,是可以直接证明内存块10000当下的链的状态中,该系统合约的某个Storage(对应到内存块9000)的值是内存块9000的哈希值。如果范围超过8192,例如内存块1000,那顶多就是多步,先证明内存块1808(=10000-8192)的哈希值,然后再证明内存块1808当下的链的状态中,系统合约里的内存块1000的哈希值。
这也为未来的无状态客端(StatelessClient)铺路:未来的轻节点就不需要再储存着历史中所有的内存块的头文件(BlockHeader),是当有需要用到历史中某个内存块的哈希值或是内存块内容时,再请其他用前面欺诈挑战例中的证明式提供证明即可。
EIP-7623::增加calldata成本
调高利用calldata来发布数据的本,以挪出够的安全空间来调高BlockGasLimit和Blob数量。
随着Rollup的数据发布需求越来越高,在EIP-4844中引Blob来让Rollup以非常便宜的式放数据之后,调Blob数量便直是社群所期待的个升级,或像是最近社群在推动的调高BlockGasLimit,都反应态对提高资源的需求。
△越来越多的验证者表示支持调高BlockGasLimit。
但不管是调BlockGasLimit或是Blob数量,都会因为交易的数据量变得更大而对Ethereum的p2p网络造成更多压,这会使得攻击者攻击的效率提,除非将发布数据的成本也提。
EIP-7623协议发布之后,calldata的成本将会从原本的「ZeroByte:4Gas、Non-ZeroByte:16Gas」调2.5倍为「ZeroByte:10Gas、Non-ZeroByte:40Gas」。
原本如果攻击者将全部的BlockGasLimit(30M)都拿来放垃圾数据的话,内存块的数据小约会是1.79MB(30M/16),相比于平均内存块小只有约100KB;而如果BlockGasLimit调到40M的话,攻击者可以产约2.38MB大小的内存块。当calldata成本调高为2.5倍,攻击者的效率会因此下降,变为30M最0.72MB、40M最0.95MB,如此就可以更放地调高BlockGasLimit和Blob数量。不过这个技术协议也不想因此影响到「不是将calldata拿来发布数据」的般用户,所以它会以两种式计算交易的总Gas用量,再取较高的:
原本的交易Gas用量计算式,搭配旧的calldata成本来计算:也就是将calldata以「ZeroByte:4Gas、Non-ZeroByte:16Gas」的式计算,并加上交易执所消耗的Gas及部署合约所消耗的Gas。
单纯计算calldataGas用量,但是是用新的成本来计算:也就是将calldata以「ZeroByte:10Gas、Non-ZeroByte:40Gas」的式计算,但不计入执所消耗的Gas或部署合约所消耗的Gas所以对般「不是将calldata拿来发布数据」的用户来说(例如去Uniswap兑换),本来主要的Gas消耗就是在执的部分,即便calldata以新的成本计算也不会超过执所消耗的Gas,因此般用户将不会受影响。
真正受影响的会是规模还小的Rollup,因为Blob是固定小、固定费用,所以小Rollup使用Blob效率低,使用calldata还比较划算,但在EIP-7623之后,等于这些小Rollup的成本都会提升2.5倍,它们可能得因此转为使用Blob或想办法联合起来共同分担个Blob。
EIP-7691:增加Blob吞吐量
提Blob数量,增加更多资料发布的空间给Rollup。
EIP-7691将Blob的数量由「目标:3Blob,上限:6Blob」调为「目标:6Blob、上限:9Blob」,增加更多资料发布的空间给Rollup。
注:另外Blob续费市场还有些设计需要微调,例如续费调整的速度不够即时及续费底限太低,但这不在这个技术协议要解决的问题里。其他技术协议
EIP-7549:将committee索引移至验证之外
调整验证者投票的内容,让选票更便被聚合起来,降低p2p网络的压。
验证者们每个Epoch都会被随机分到组组的委员会(Committee)并对
内存块投票,每个委员会的验证者们的选票可以被聚合在起,如此可以降低选票在p2p网络中传递的数量,但验证者的选票里会包含「该验证者属于第几个委员会」的信息,这导致不同委员会的选票不能被聚合在起,即便他们都对相同的内存块投票。
EIP-7549将「该验证者属于第几个委员会」的信息移出投票内容,使得不同委员会的验证者在投票内容样的情况下可以被聚合在起,进步降低选票在p2p网络中传递的数量,降低p2p网络的压。
EIP-7840:在EL配置文件中添加Blob计划
在执行层为Blob参数建立份设定档,省去执行层节点要去询问共识层节点Blob相关参数的麻烦。
Blob相关参数目前都是储存在共识层节点,但执行层节点在某些情况还是需要这些参数(例如RPCeth_feeHistory),所以都必须去向共识层节点询问。
EIP-7840在执行层为Blob相关参数建立份设定档,执行层节点都可以直接透过这份设定档读取Blob相关参数,不需要再向共识层节点询问。
免责声明:Ethereum Pectra 硬分叉介绍文章转发自互联网,版权归其所有。
文章内容不代表本站立场和任何投资暗示。加密货币市场极其波动,风险很高,可能不适合所有投资者。在投资加密货币之前,请确保自己充分了解市场和投资的风险,并考虑自己的财务状况和风险承受能力。此外,请遵循您所在国家的法律法规,以及遵守交易所和钱包提供商的规定。对于任何因使用加密货币所造成的投资损失或其他损失,本站不承担任何责任。
Copyright © 2021.Company 元宇宙weizhangshensu.cn All rights reserved.元宇宙weizhangshensu.cn