以太坊网络的第十一次硬分叉“伦敦”升级将于区块高度 12,965,000 处激活 (据估算将于北京时间2021年8月5日晚进行)。本次升级主要包含 5 项 EIP,分别为 EIP-1559、EIP-3198、EIP-3529、EIP-3541 和 EIP-3554。
“伦敦”升级倒计时:
https://ethernodes.org/london
我需要做哪些准备?
节点运行者需要升级其运行的客户端版本,以下为支持“伦敦”主网升级的客户端版本:
➤ go-ethereum (geth):1.10.6
➤ Nethermind:1.10.79
➤ Erigon (前 TurboGeth):2021.07.04-alpha
➤ Besu:21.7.1
➤ OpenEthereum (前 Parity):v3.3.0-rc.4
➤ EthereumJS VM:v5.5.0
Tim Beiko (以太坊 ACD 协调人/EIP-1559 倡导者) 最近收到了很多关于伦敦升级挖矿的信息,其中有不少错误认知。他对在伦敦升级中,矿工要做的工作、注意事项、相关资源做了详细说明,还对用户应如何在有 MEV 的环境里设置小费进行了科普:
矿工须知
当伦敦升级激活时,分叉区块的 gas limit 会变成最后一个分叉前区块的两倍,可以在已经分叉的测试网上看到。
例如 Goelie 测试网分叉前区块 (
https://goerli.etherscan.io/block/5062604) 的 gas limit 是大约 8m,分叉区块 (https://goerli.etherscan.io/block/5062605) 是大约 16m。
但是,如果想要保持链上的吞吐量不变,矿工需要保持新的 gas limit 不变 (预计区块平均容量是大约 50% 满)。
如果矿工什么都不做,会继续以 15m gas 为区块容量上限,区块大小会被慢慢降低。为避免这种情况发生,矿工需要在分叉后把 gas limit 上调至 30m (如果想保持区块的平均容量是 15m gas)。
矿工不需要重启你们的挖矿节点,每个支持伦敦升级的客户端都会通过 JSON RPC 实现这点,请看伦敦升级公告里每个客户端的 API 调用:
➤ go-ethereum (geth):miner_setGasLimit
➤ OpenEthereum:parity_setGasCeilTarget
➤ Besu:miner_changeTargetGasLimit
以下是 JSON RPC 文档链接:
@go_ethereum:
https://geth.ethereum.org/docs/rpc/ns-miner#miner_setGasLimit
@OpenEthereumOrg:
https://openethereum.github.io/JSONRPC-parity_set-module#parity_setgasceiltarget
@ConsenSysQuorum:https://besu.hyperledger.org/en/stable/Reference/API-Methods/#miner_changetargetgaslimit
再次强调,矿工无需重启节点,只需要在 JSON RPC 调用中设置新的 gas limit。
用户须知
升级期间以太坊用户或 ETH 持有者无需采取额外行动,但需留意钱包或其他服务商发布的升级通知。另外,Eth2 验证者也请在伦敦升级前确保你们的 PoW (eth1) 节点升级到最新版本。
第二个大问题是关于 priority fee/小费的设置。简言之,小费是支付给矿工处理额外风险的,即在打包你的交易时出现叔块的情况。更大的区块 -> 在网络上广播更慢 -> 更高的叔块风险。
有一个方法可以将这种情况可视化:将上一个区块的 gas limit 从 12.5m 上调至 15m。左边的点显示的是在 12.5 的范围内出现叔块的几率,右边显示的是当我们调至 15m 时:新增的 2.5m gas 带来的叔块率提升。
因此,如果用户想支付给矿工足够高的小费好让他们打包你的交易,那么小费平均下来对他们来说需要是净收益,而这就与用户的额外交易进入叔块的几率有关。
在 MEV 以前的世界里,这个计算是很容易的,因为区块奖励区分于叔块奖励,因此我们可以直接使用一个固定值 (0.5-1 gwei)。
现在有了 MEV 后的挑战在于,当一个区块变为叔块时,矿工就没有了该 MEV 交易捆里的收入和部分的区块奖励,还有 MEV 收入变化很大!
因此,最好的方法是看 MEV 交易捆的中位数或第 80% 的值,并对矿工失去该收入的风险进行补偿。Flashbots 有一些仪表盘可以显示这些数据:
https://dashboard.flashbots.net/miners
之所以选前 50/80% 的区块收益作为小费,是因为让一般用户尝试与一个 10ETH+MEV 交易捆竞争是没有道理的。这种情况很罕见,如果真的发生了,一般用户应该不介意等下一个区块。
那么,要怎么选小费值呢?@barnabemonnot 在这方面做了大量计算,并给出了一个简单的策略:
(https://notes.ethereum.org/@barnabe/rk5ue1WF_)
所以,通过 Flashbots 的仪表盘和上面这个图表,我们可以看到 2-3 gwei 足以支付 80-90% MEV 交易捆的机会成本,因此这会是一个比较好的默认值。
现在这个方法并不十分直观,MEV 的计算使得很难做到设置一次后就一了百了,但希望几周后像 @ETHGasStation 和 @gasnow_org 这样的 APIC 可以把这些数据抽象出来。
参考来源:
🇬🇧⛏ London Mining Misconceptions Thread ⛏🇬🇧
Over the past day or so, I've received a bunch of questions/seen concerns about London activating for miners, so hoping to clear a few things out here 😁
— Tim Beiko | timbeiko.eth ☀️ (@TimBeiko) August 4, 2021
“伦敦”升级包含哪些内容?
EIP-1559: Eth1.0 费用市场变更
EIP-1559 于 2019 年 4 月提出,是以太坊史上讨论最为广泛并备受期待的变更之一,也是”伦敦“升级中影响最为深远的举措,旨在对以太坊当前的”第一价格竞拍“ (First Price Auction) 式的费用市场进行改革,核心目标是改善用户的交易体验。
实施 EIP-1559 之后,以太坊的交易费用将转变为基础费用加小费的形式 (分别为 BaseFee 和 PriorityFee),其中基本费用将被自动销毁,而非分配给矿工 (矿工收入为小费部分),这一点广泛被认为将对以太坊网络经济模式产生深远的影响。Basefee 的决定因素之一是前序区块的饱和度,这意味着应用和用户能够更容易预测交易的费用,并且支付该基本费用之后,交易确认也获得了保证。
EIP-1559 还允许区块空间的弹性变化,也即弹性区块空间 (目前允许 200% 区块容量),基本费用也会随之调整。即,当前以太坊区块的 gas limit 为 15m,1559 之后将其作为 gasTarget (gas目标),gasLimit 则将达 30m,如果区块使用的 gas 高于 gas 目标,基本费用就会提高,直到网络需求再次降低至该目标,反之基本费用则下调。除了基本费用外,还有一个影响交易费的要素即小费 (tip),小费的数额不受协议限定。一般情况下,小费以较低数额用以支付叔块风险。而在交易高峰期,交易通过小费又回到第一价格竞拍机制。
另外,EIP-1559 新增了一种交易类型,用户可以指定其愿意支付的最高限额,当他们把这个最高限额费用发送给矿工时,会获得最高限额费用减去基本费用与矿工小费之和的差值退款。若发送交易账户上的 ETH 量少于此最高限额费用,交易则无法被执行。
以下链接观看到基础费用的燃烧状况:
https://watchtheburn.com/
https://www.etherchain.org/burn
EIP-3198: BASEFEE 操作码
这份 EIP 是与 EIP-1559 搭配的。它只是简单添加了一个 BASEFEE 操作码,它返回的是执行交易所在的区块的基本费用。这将使得智能合约可以在链上访问这个值,有助于提交欺诈证明和创建去信任的 gas 价格衍生品。
EIP-3529: 减少 gas 返还
在伦敦引入的另一个重大变更是取消了操作码SELFDESTRUCT的gas 返还和减少了操作码 SSTORE 的 gas 返还。虽然设立返还的初衷是希望激励开发者在可能的情况下清除状态,然而现实是,这导致了Gas Token的出现,反而增加了状态大小。利用这些返还的 gas,Gas Token 可以在 gas 价格很低的时候填满状态,然后在 gas 价格上升的时候获得执行这些交易的返还。
除此外,gas 返还还会导致区块执行时间的变化。在伦敦升级之前,多达 50% 的返还 gas 可以在同一个区块里进一步执行计算。也就是说,在实际上,最大的区块容量可达 1.5 倍的 gas limit。EIP-2539 把”执行 gas 返还”从 50% 下调到最多 20%。这一变更将有助于抵消由 EIP-1559 引入的额外区块大小变化,因为 EIP-1559 允许区块使用的 gas 是现在 gas limit 的两倍。
EIP-3541: 拒绝以 0xEF 字节开头的新地址
EIP-3541 是一个简单的变更,为以后更广泛的 EVM 改善奠定基础,想看 EIP-3540。这份 EIP 将使得以 0xEF 比特开头的新合约无法部署。现有的合约将不受影响。
EIP-3554: 难度炸弹延迟至2021年12月1日
EIP-3554 延迟难度炸弹,也以冰河时代 (ice age) 为人所知。难度炸弹或冰河时代是以太坊引入的一种机制,在网络过渡到权益证明时”冻结“挖矿。这在过去已经进行过三次,分别为大都会 (EIP-649)、君士坦丁堡 (EIP-1234) 和穆尔冰川 (EIP-2384)。尽管之前的延迟时间都相当长,但这次核心开发者选择了较短时间的延迟,将难度炸弹推迟到 2021 年 12 月 1 日。
“伦敦”之后将去向何处?
以太坊升级之路 @trent.eth
继“伦敦”升级之后,以太坊还将迎来针对信标链的 Altair 升级和 Eth1 与 Eth2 的合并 (The Merge)。
Altair 升级的主要内容包括对以太坊 2.0 质押参数和奖惩计算的改变,以及为轻客户端的实现引入同步委员会,目前处于测试网阶段。
本次升级之后,The Merge (合并) 的相关工作和进展将成为整个社区关注的焦点。2020 年 12 月,以太坊信标链创世,至今已运行了九个月,但当前的以太坊区块链与信标链仍然是两条平行运行的以太坊区块链。Eth1 和 Eth2 的合并工作具体内容则是将 Eth1 作为执行层 (execution chain),其状态、执行、交易等都会并入到作为共识层 (consensus chain) 的信标链里,每个 PoS 信标区块都将包含执行层的数据,同时,以太坊区块链创建新区块时将不再采用 PoW 共识,从而实现工作量证明 (PoW) 到权益证明 (PoS) 的共识升级。
7 月 22 日,研究员 Mikhail Kalinin、以太坊核心开发者 Danny Ryan 以及以太坊创始人 Vitalik Buterin 联合发布了 EIP-3675,将 Eth1 和 Eth2 的合并正式作为改进提案提出,对这次 PoS 共识升级进行了介绍。
关于“合并”之后的发展路线,Vitalik 在近期的 ETHGlobal 演讲中做出了阐释,包括分片、数据可用性采样以及无状态以太坊等长期规划,参见视频.