important update
On July 21, 2021, a consensus issue was identified on the Ropsten network, where the go-ethereum, Erigon, and Nethermind implementations had different transaction validation logic than Besu and OpenEthereum. New versions of the affected clients have been released and are linked in the “Client Versions” table below. The block number for London has not changed and remains 12 965 000. Node operators using an affected client MUST update to the latest version.
An overview of the problem is provided in the “Ropsten Consensus Problem” section.
London
After a successful testnet deployment, the London update is now ready to go live on the Ethereum mainnet. It will be launched on the block. 12,965,000which is expected between August 3 and 5, 2021.
client versions
To be compatible with the London update, node operators will need to update the version of the client they are running. The versions, listed below for each client, are supported by London on the Ethereum mainnet. These releases are different from previously announced releases that supported London on testnets. Older versions are not compatible with London on mainnet.
Customer | version number | download link |
---|---|---|
go-ethereum (geth) | Discharge | |
nether mind | Discharge | |
Erigon (known as TurboGeth) | Discharge | |
Better | Discharge | |
OpenEthereum (fka Parity) | v3.3.0-rc.4 | Discharge |
EthereumJS Virtual Machine | v5.5.0 | Discharge |
Notes:
- For miners: London will change the way the target gas limit is handled on the network. See the section “As a miner, what should I do?” section below for more details.
- The Besu version was updated on August 4, 2021. This was due to a non-London related bug that affected the transaction pool. see more here.
- The go-ethereum, Nethermind, and Erigon versions were updated on July 23, 2021. This was due to the Ropsten consensus issue, detailed below.
- The OpenEthereum client will be deprecated after the London update. The OE team is working with Erigon on a smooth transition path for users. More information can be found here.
London EIP
The following EIPs are included in the London update:
Ethereum cat herders have taken out a blog post going over the details of these EIPs.
It is worth noting that EIP-1559, while compatible with the current transaction format, introduces changes to the block header, adds a new transaction type, comes with new JSON RPC endpoints, and changes the behavior of clients in various areas (mining, transaction pool, etc.). It is highly recommended that projects become familiar with the EIP. A more extensive list of resources related to EIP-1559 can be found here.
bug bounty bonus
In order to learn more about the upcoming changes in the London update, all vulnerability rewards related to the London update will be doubled, until the update occurs. Examples of issues that would be eligible for a double are cross-client consensus issues between the following clients: Geth, Besu, Nethermind, OpenEthereum, and Erigon. For complete details on the scope and restrictions of the bug bounty, see https://bounty.ethereum.org/#rules.
Ropsten consensus question
On July 21, 2021, a consensus issue was found in the Ropsten testnet. The issue was caused by a missing validation for 1559-style transactions by some client implementations. In short, a transaction whose account balance was greater than the effective gas used by the transaction, but less than that of the transaction maxFeePerGas multiplied by the gas price was included in a block by mistake.
A complete autopsy of the problem is available at the eth1.0 spec repository. The affected versions that contain this bug are go-ethereum 1.10.5, Nethermind 1.10.77, and Erigon 2021.07.03-alpha. If you are running one of these versions, please update your client to the version listed in the table above.
Frequently asked questions
As an Ethereum user or Ether holder, do I need to do anything?
If you use an exchange (like Coinbase, Kraken, or Binance), a web wallet service (like Metamask, MyCrypto, or MyEtherWallet), a mobile wallet service (like Coinbase Wallet, Status.im, or Trust Wallet), or a hardware wallet (such as Ledger, Trezor, or KeepKey), you don’t need to do anything unless your exchange or wallet service tells you to take further steps. If you run your own Ethereum node, you must upgrade your node. See the section “As a non-mining node operator, what should I do?” section below.
As a non-mining node operator, what should I do?
Download the latest version of your Ethereum client, as indicated in the table above.
As a miner, what should I do?
First, download the latest version of your Ethereum client, as indicated in the table above. You will then need to manually change your gas limit target to double what it currently is. This is because once London is active, the block size will double and EIP-1559 will keep the blocks 50% full. This can be done via JSON-RPC, without restarting your node, on all clients that offer mainnet compatible mining.
For example, if before London you were targeting a block size of 15,000,000 gas, now you will need to target a cap of 30,000,000 gas to maintain the same number of transactions per block, on average. If you don’t change your gas cap target at or after block 12,965,000, you will start reducing the block size in the network. The following table provides the customer-specific API call you should use to update your gas limit target.
Note: Nethermind, Erigon, and EthereumJS do not yet support mining on the Ethereum mainnet.
What happens if I am a miner or node operator and I don’t participate in the upgrade?
If you are using an Ethereum client that is not updated to the latest version (mentioned above), your client will sync with the pre-fork blockchain once the update occurs. You will be stuck in an incompatible chain following the above rules and will not be able to send Ether or trade on the Ethereum network post-update.
What is a network upgrade in Ethereum-land?
A network upgrade is a change to the underlying Ethereum protocol, which creates new rules to improve the system. The decentralized nature of blockchain systems makes upgrading the network more difficult. Network upgrades on a blockchain require cooperation and communication with the community as well as the developers of the various Ethereum clients in order for the transition to go smoothly.
What happens during a network update?
Once the community agrees on what changes should be included in the update, the protocol changes are written to the various Ethereum clients such as geth, Erigon, Besu, and Nethermind. Protocol changes are triggered on a specific block number. Any nodes that have not updated to the new rule set will be left in the old chain where the old rules will still exist.
Why “London”?
After Istanbul, we are running out of names for our planned network upgrades. It was suggested to use Devcon city names for updates., and we did it! london is where devcon 1 took place. Followed to Berlin Devcon 0.
Thanks!
Many thanks to everyone who has been involved in the research, planning, implementation, testing, breaking, repairing, retesting, implementation, stress testing and in any other way assisting to implement London 😁 🇬🇧
ask for benjamin davies for the cover image of this post!
Disclaimer
It is an emerging and highly technical evolving space. If you choose to implement the recommendations in this post and continue to participate, you should make sure you understand how it affects you. You should understand that there are risks involved, including, but not limited to, risks such as unexpected errors. By choosing to implement these recommendations, you alone assume the risks of the consequences. This publication and recommendations are not a sale of any kind and do not create any warranty of any kind, including but not limited to anything related to the Ethereum network or the Ethereum clients referenced in this document.