以太坊合并完成了以太坊网络从工作量证明(proof-of-work)向权益证明(proof-of-stake)的过渡。ETH的发行方式在过渡时期发生了变化。以前,新的ETH发行有两个来源:执行层(即主网)和共识层(即信标链)。自从以太坊合并之后,执行层上的ETH发行现在为零。
合并之后执行层发行:在升级的共识规则下,工作量证明不再是区块生产的有效手段。所有的执行层活动都被打包到“信标块”("beacon blocks")中,即由权益证明验证者发布和验证。验证和发布“信标块”的奖励在共识层上分别计算。
合并之后共识层发行:共识层的ETH发行仍在继续,就像合并之前一样,对验证和提议区块的验证者提供少量奖励。验证者奖励继续累积到在共识层内管理的验证者余额。 信标链上的验证者账户和我们在以太坊主网上使用的账户是相互独立的,计划中在上海升级之前,提取验证者账户的资金是不可能的。在上海升级之后,如果用户愿意,他们将可以提取他们的奖励和质押。这也就意味着,尽管新的ETH仍在发行,但在上海升级发生之前, 100 %仍被锁定在市场上。
在这里我们介绍一下以太坊账户的“钥匙”。以太坊使用公私钥加密技术保护用户资产。公钥被用作以太坊地址的基础——也就是说,它对公众可见,并用作唯一的标识符。私钥应该只有账户所有者才能访问。私钥用于“签署”交易和数据,这样密码学就可以证明持有者批准了特定私钥的某些行为。随着以太坊从工作量证明转换为权益证明,用户需要一种新的密钥类型,通过质押ETH并管理验证者来参与权益证明。原来的以太坊主网密钥仍然和以前完全一样,但在信标链上希望成为独立质押者的用户则需要一个验证者密钥(validator key)和取款密钥(withdrawal key)。上海升级之后,质押提款需要withdrawal key。
上海升级将是以太坊网络实现合并后的首次重大升级。上海升级除了质押 ETH 提款之外,还纳入了四项即将激活的EIP 。为什么要急于开始上海升级呢?主要是当前的以太坊网络,只能存款ETH但不能提取。而解锁以太坊质押提款功能不仅有利于保持以太坊网络活力,还有利于以太坊未来可持续性发展,继续吸引更多的验证者进入以太坊网络。那么以太坊上海升级即将激活的EIP又能带来什么?
开始COINBASE地址预热
概述:根据读取账户的实际成本,COINBASE地址在交易开始执行时应是经过预热的。
解释一下这里的 COINBASE 是来自比特币的概念,即区块中的第一笔交易是笔特殊交易,称为 COINBASE 交易,这种交易早期设计用于矿工打包收集挖矿的 gas 小费收入。交易执行时 COINBASE地址是预热过的(已加载至系统),避免每次获取小费时都需要重新从 0 获取 COINBASE地址的信息。
动机:COINBASE直接支付正变得越来越受欢迎。COINBASE付费被采纳是因为他们允许有条件付费,这对网络是有益的,例如可防止打包回滚的交易。但是与COINBASE交易价格很高,在EIP- 2929 引入的交互列表框架中COINBASE地址被列为“冷地址”,每次交易必须重新获取COINBASE地址的信息。这种gas成本不匹配虽然可以激励除ETH以外的其他付费方式,如ERC 20 ,但ETH才是以太坊交易的主要付费手段。EIP- 3651 有利于让矿工节省gas费,加快矿工交易的速度。
引入一条新指令,将常量值 0 压入堆栈
概述:引入PUSH 0 ( 0 x 5 f)指令,它将常量值 0 压入堆栈。
动机:许多指令期望将偏移量作为输入,在许多情况下偏移量为 0 。一个很好的例子是call的返回数据参数,如果合约更喜欢使用RETURNDATA*,则将其设置为零。这只是一个例子,但是还有许多其他原因导致合约需要推入 0 值。他们现在可以通过PUSH 1 0 实现这一点,它在运行时消耗 3 个gas,并被编码为两个字节,这意味着 2 * 200 的gas部署成本。有了 PUSH 0 指令后,就不需要消耗这额外的 gas 部署成本。此外,从“浪费”的角度来看,在现有的帐户中,在push 1 00 指令上浪费了 340 , 557 , 331 个字节,这意味着部署它们需要消耗 68 , 111 , 466 , 200 个gas。EIP- 3855 目标就是降低无意义的 gas消耗。
将initcode的最大大小限制为 49152 ,并为每个 32 字节的initcode chunk 应用 2 个gas成本。
概述:通过引入initcode的最大大小限制(MAX_INITCODE_SIZE = 2 * MAX_CODE_SIZE = 49152 ),扩展了EIP- 170 。此外为每 32 字节的 initcode chunk 引入 2 个 gas 费用,以表示 jumpdest-analysis 的成本。
动机:在合约创建过程中,客户端必须在执行 initcode之前对初始化代码执行 jumpdest-analysis。所执行的工作随initcode的大小线性扩展。基于 EIP 170 是限制了 initcode 大小为 24576 ,而如今则是将 initcode 的最大大小限制提升为 49152 。显然,更大的代码容量,就意味合约大小可以扩展一倍,合约开发者可以部署更丰富的功能。简言之,EIP- 3860 目的是支持更大型的Dapp。
支持验证者通过新的“系统级”操作类型从信标链提款到EVM。
概述:引入一个系统级“操作”来支持从信标链“推”到EVM取款。部署完成后,以太坊信标链质押提款功能将被激活。
动机:这个EIP为信标链上的验证者提款提供了一种进入EVM的方法。从结果上讲,实现的是质押的 ETH 提款操作,而实现方式是引入了系统级的指令 withdrawal 基于信标链(共识层)的信息,无条件地直接控制指定地址的 ETH 余额。EIP- 4895 的目的就是实现质押提款功能。
除了确定包含的 4 个EIP:EIP- 3651 ,EIP- 3855 ,EIP- 3860 ,EIP- 4895 ,在最近的以太坊核心开发者电话会议上这次电话会议期间,开发者们还讨论了其他可能纳入上海升级的 EIP。虽然每个提案确实为以太坊带来了一些独特的优点及好处,但开发者们对优先考虑纳入哪些 EIP 的问题,仍存在较大的争议。