原文标题:《 London Mainnet Announcement 》
原文作者:Tim Beiko
原文编译:ETH 中文站
译者按:除了伦敦主网升级的公告外,ECN 还翻译了 Geth 客户端 v1.10.5 里关于此次伦敦升级,不同相关行动者需要注意的代码变更。
伦敦升级的测试网成功部署后,现在已经准备好在以太坊主网上激活了。它将在区块高度 12 965 000 激活,时间大概在 2021 年 8 月 3-5 日。
客户端版本
为了与伦敦升级兼容,节点运营者将需要升级其运行的客户端版本。下面列出的每个客户端版本支持以太坊主网的伦敦升级。
注意:下列版本不同于《伦敦测试网公告》中所列出的客户端版本,测试网的客户端版本并不支持主网伦敦升级的客户端版本。
注意:OpenEthereum 客户端将伦敦升级后弃用。OE 团队正在与 Erigon 合作,为用户提供一个平稳的过渡路径。更多信息点击这里查看。
矿工请注意:伦敦升级将改变在网络如何处理 gas limit 目标的方式。请参阅下文中「作为一名矿工,我需要做什么?」的部分了解详情。
伦敦 EIPs
下列 EIPs 是伦敦升级的内容:
1. EIP-1559:ETH 1.0 费用市场变更
2. EIP-3198:BASEFEE 操作码
3. EIP-3529:减少 gas 返还
4. EIP-3541:拒绝以 0xEF 字节开头的新地址
5. EIP-3554:难度炸弹延迟至 2021 年 12 月
Ethereum Cat Herders 发布了一篇博客文章,讨论了这些 EIPs 的细节。
值得注意的是,虽然 EIP-1559 可以与当前的交易格式向后兼容,但是它引入了对区块头的更改,添加了新的交易类型,提供了新的 JSON RPC 端点,并在几个方面改变了客户端的行为 (挖矿、交易池等等)。强烈建议各个项目熟悉这个 EIP。与 EIP-1559 相关的更广泛的资料列表可以点击此处查阅。
寻 bug 赏金
为了让更多人关注即将到来的伦敦升级,所有与伦敦升级相关的 bug 的奖金都会翻倍,直到升级开始。可以领取双倍赏金的例子有以下这些客户端之间的跨客户端共识问题:Geth、Besu、Nethermind、OpenEthereum 和 Erigon。有关 bug 赏金范围和限制完整详细信息,请参阅:https://bounty.ethereum.org/#rules。
FAQ
Q: 作为以太坊的用户或 ETH 持有者,我有什么可以做的吗?
如果你使用交易平台 (比如 Coinbase、Kraken 或 Binance)、网页钱包服务 (比如 Metamask、MyCrypto、或 MyEtherWallet),移动端的钱包服务 (比如 Coinbase Wallet、Status.im、或 Trust Wallet)、或硬件钱包 (比如 Ledger, Trezor, or KeepKey),你不需做任何事情,除非你的交易平台或钱包服务商通知你采取额外步骤。如果你运行自己的以太坊节点,你需要升级你的节点。请看下文「作为一个非挖矿节点,我需要做什么?」部分。
Q: 作为一个非挖矿节点,我需要做什么?
下载以太坊客户端的最新版本,已在上文表格中列出。
Q: 作为一个矿工,我应该做什么?
首先,下载你的以太坊客户端最新版本。然后,你需要手动把 gas limit 目标设为现在的两倍。这是因为一旦伦敦升级部署了,区块大小会变成现在的两倍,而 EIP-1559 会保持区块容量大约 50% 满。这可以在所有提供与主网兼容挖矿的客户端上通过 JSON-RPC 来实现,无须重启你的节点。
例如,如果伦敦升级以前你把区块大小设为 15m gas,你将需要把 gas limit 设为 30m,以维持平均每个区块的交易数量一致。如果你不在区块 12 965 000 修改 gas limit 目标,你便会开始在网络里降低你的区块大小。下表提供了每个客户端的特定 API,你需要用它们来更新你的 gas limit 目标。
注意:Nethermind、Erigon 和 EthereumJS 目前还不支持在以太坊主网上挖矿。
Q: 如果我是一个矿工或节点运行者且不参与升级,会怎么样?
如果你正在使用以太坊客户端但不升级到(上文所列的)最新版本,升级后你的客户端同步的是分叉前的区块链数据。你会停滞在一条遵循旧规则的、不兼容的链上,且将无法发送 ETH 或在升级后的以太坊网络上操作。
Q: 在以太坊上网络升级意味着什么?
网络升级意味着以太坊底层协议的一次变更,创建新规则来完善系统。区块链系统的去中心化本质使得网络升级变得更难。区块链网络升级的顺利进行需要与社区以及各个以太坊客户端开发者进行协作和沟通,以使过渡顺利进行。
Q: 网络升级过程会发生什么?
当社区就哪些变更需要被纳入到升级上达成共识时,这些对协议的变更会被写入各个以太坊客户端,例如 geth、Erigon、Besu 和 Nethermind。协议变更会在一个特定的区块高度上启动。任何没有升级到新规则的节点将在旧链上被遗弃,而旧链继续保有之前的规则。
Q: 为什么是「伦敦」?
在伊斯坦布尔升级后,我们定下来的网络升级名字都用完了。有人建议我们用举办 Devcon 的城市命名,于是我们就用了。柏林是举办 Devcon 0 的城市,下一次升级的名字是举办 Devcon 1 的城市——伦敦。
致谢
特别感谢参与到伦敦升级的研究、计划、实现、测试、修复、再测试、部署、压力测试,以及以其他任何形式帮助伦敦部署的每个人
还有提供封面图的 Benjamin Davies!
免责声明
这是一个新兴且不断发展的高科技领域。如果读者们选择实施本文中的建议并继续参与,请确保您已充分了解您的选择会带来什么影响。读者们应该了解所涉及的风险,包括但不限于出现意外 bug 等风险,请读者独自承担风险。这篇文章及其建议不是任何形式的销售,也不提供任何形式的保证,包括但不限于与以太坊网络或此处提及的以太坊客户端有关的任何东西。
Geth Exodus Cluster (v1.10.5) 节选
Geth 客户端关于伦敦升级变更的说明:
1. 此版本包含伦敦硬分叉的主网启动区块高度。(#23176)
2. 如之前所有的分叉相关版本,我们添加了一个重载标记,用来设置启动区块。这个标志是暂时的,在主网分叉区块成功启动后会被删除。(#22822, #22972)
3. 为了配合 EIP-1559 所创造的新费用市场,Geth 客户端的交易池已经重新设计了。我们的新交易池设计旨在满足用户的需求——及时打包交易——根据他们的有效挖矿奖励实现高效的交易排序。你可以在交易池设计文档里了解更多新交易池的工作逻辑。(#22898)
4. 对于矿工:Geth 提供的交易选择算法专门挑选具有最高有效奖励的交易。如果用 –miner.gasprice 命令行标志设置了一个最低价格,那么提供低于最低价格的矿工小费的交易将不会被打包到区块里。(#22896, #22995)
EIP-1559 还会改变 gas limit 的投票系统。在伦敦分叉后,可用于交易的区块 gas 量是基于需求来调整的。区块容量被称为 gas target,EIP-1559 将这个 target 定义为 gas limit 的一半。
为了确保可用于交易的 gas 与分叉前一样,分叉区块的 gas limit 是加倍的。如果你正在使用 –miner.gaslimit 标记来参与投票,你需要将这个标记的值变成原来的两倍,以保持投票的值与之前的相同。你可以使用 miner_setGasLimit RPC API 来升级 target 而不需要离线,但要注意,这不会在重启后继续有效。之前的 –miner.gastarget 标记在伦敦升级后会被弃用,它的值会被忽略。
举例:如果你正在使用 –miner.gaslimit 对 gas limit 为 20M 投票,而实际的区块 gas limit 是 20M。当伦敦升级启动了,区块 gas limit 会调整到 40M,但如果你继续使用同一个 –miner.gaslimit 设置的话,你还将对 20M 投票。因此在分叉后的某个时间点,你需要将你的 –miner.gaslimit 的值设为原来的两倍,以确保 gas limit 保持在 40M gas。
5. 对于钱包提供商:EIP-1559 的交易价格默认计算算法 (eth_maxPriorityFeePerGas) 还是遵循旧机制,把 max priority fee 设为在网络上支付的 effective price 减去当前的 base fee;把 max fee 设为 priority fee + 2x base fee。这确保了在伦敦过渡期后,如果用户没有明确反对意见,按每 gas 支付的总价格保持不变。
另外,Geth 发布了一个新的 eth_feeHistory (blocks, head, percentiles) API 终端,用户可以用它来询问关于支付给矿工小费和交易烧毁费用数量的最近数据信息。建议钱包使用这个终端给用户多个费用选项 (#23033)。
6. JSON-RPC 用户注意:分叉启动后,eth_sendTransaction 和 eth_fillTransaction 会默认创建 EIP-1559 式交易。
7. Go/Java/ObjC 合约绑定的用户注意:分叉启动后,accounts/abi/bind 会自动创建 1559 式交易。要在 Go 语言写的应用里用 EIP-1559,请记得在你应用的 go.mod 文件中把 go-ethereum 模块依赖升级到 v1.10.4。(#23038)
8. ethclient 用户注意:如果你用 ethclient 包发送交易并想用 EIP-1559 带来的的新费用模式,你必须修改你的代码,用 types.NewTx(&types.DynamicFeeTx{…}) 来创建交易。为了了解分叉是否已经启动和新交易类型是否可用,只需检查最新区块头的 BaseFee 字段是否非零。
原创文章,发布者:狐链财经
转载/内容合作/媒体报道请联系liandufin@163.com ;违规转载法律必究。