Geth v1.10.4 is a feature release and adds compatibility with the upcoming London hard fork. For more information about the content and scheduling of the fork, please check the [London specification document].
After a long R&D process, and extensive testing, we are pleased to announce that Geth v1.10.4 enables [snap sync] by default. At the time of this release, geth is able to fully synchronize the Ethereum mainnet in approximately 7 hours (using AWS i3.2xlarge with NVMe SSD).
London Fork EIPs
[EIP-1559]: Fee market change for ETH 1.0 chain (#22837, #22888, #22970)
[EIP-3198]: BASEFEE opcode (included in EIP-1559 changes)
[EIP-3541]: Reject new contracts starting with the 0xEF byte (#22809)
[EIP-3554]: Difficulty Bomb Delay to December 1st 2021 (#22840, #22870)
Additional notes about the London changes
This release contains testnet activation block numbers for the London hard fork. The numbers are: Ropsten - 10499401, Goerli - 5062605, Rinkeby - 8897988. (#23041)
This release does not contain automatic activation of the fork on mainnet. A release containing the mainnet activation block will be provided later, following the ACD decision.
As with all previous fork-related releases, we have added an override flag which can be used to set the activation block. This flag is temporary and will be removed some time after the fork has successfully activated on mainnet. (#22822, #22972)
The Geth transaction pool has been redesigned in order to handle the new fee market created by EIP-1559. Our new pool design attempts to cater to the demands of users—timely inclusion of transactions—as well as allowing efficient ordering of transactions by their effective mining reward. You can read more about how the new pool functions in the [transaction pool design document]. (#22898)
For miners: The transaction selection algorithm provided by geth specifically picks transactions with the highest effective reward. If a minimum price is configured using the --miner.gasprice command-line flag, transactions providing less fees will not be included in blocks. (#22896, #22995)
EIP-1559 also changes the gas limit voting system. After the London fork, the block gas amount available for transactions is adjusted based on demand. The block capacity is called the gas target, and EIP-1559 defines this target as half the gas limit.
To ensure that the gas available for transactions is the same as before the fork, the gas limit is doubled at the fork block. If you are using the --miner.gaslimit flag to participate in voting, you need to double the value of this flag to keep voting for the same value as before.
Example: You are using --miner.gaslimit to vote for a limit of 20M, and the actual block gas limit is 20M. When London activates, the block gas limit will adjust to 40M, but you will still be voting it down towards to 20M if you keep using the same --miner.gaslimit setting. So at some point after the fork, you need to double your --miner.gaslimit value to ensure the gas limit stays at 40M gas.
Note for JSON-RPC users:eth_sendTransaction and eth_fillTransaction will create EIP-1559 transactions by default after the fork has activated.
Note for users of Go/Java/ObjC contract bindings:accounts/abi/bind will create EIP-1559 transactions automatically after the fork. To take advantage of EIP-1559 in Go applications, please remember to update the go-ethereum module dependency to v1.10.4 in your application's go.mod file. (#23038)
Note for users of ethclient: If you send transactions using the ethclient package and want to take advantage of the new fee model provided by EIP-1559, you must adapt your code to create transactions using types.NewTx(&types.DynamicFeeTx{...}). In order to know whether the fork has activated and the new transaction type can be used yet, simply check whether the BaseFee field of the latest block header is non-nil.
Command changes
For private networks and future public testnets, the initial EIP-1559 basefee can also be set in genesis.json using the baseFeePerGas key. (#23013, #23039)
The Clef tool also supports signing EIP-1559 transactions. (#22966)
geth --dev no longer allocates excessive amounts of memory on startup. (#22949)
The geth --ethstats option now supports special characters such as @ in the node name portion of the URL, specifically so you can put your Twitter handle in there. (#21640)
geth db inspect now properly counts internal config data stored in leveldb instead of warning about it being 'unaccounted'. (#22978)
There is a new geth snapshot dump command for debugging purposes. (#22795)
Geth can no longer read databases created before April 2019. (#22852)
The --jspath flag can now expand ~ to the home directory. (#22900)
Puppeth can no longer deploy the wallet web page for you. (#22940)
The evm tool now exits in error if JSON data provided on stdin is invalid. (#22871)
RPC/GraphQL changes
JSON-RPC and GraphQL APIs have been extended for EIP-1559, following the [official OpenRPC specification]. (#22964, #23010, #23028, #23027, #23050)
You can now configure the lower bound of gas prices returned by eth_gasPrice using the new --gpo.ignoreprice command-line flag of geth. (#22752)
JS tracing via debug_traceTransaction and debug_traceBlockByNumber will no longer crash geth if the tracer function result object exceeds duktape's JSON object limits. (#22857)
The internal argument object representations of eth_call, eth_sendTransaction, eth_estimateGas have been unified because their fields are very similar. This change should not lead to any differences in behavior, but do let us know via GitHub issues if you find any new argument handling bugs in those methods. (#22718, #22942)
The 'catalyst' API handler now properly reverts the effects of failed transactions when creating a block. (#22989)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
- `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language
- `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language
- `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language
- `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language
- `@dependabot badge me` will comment on this PR with code to add a "Dependabot enabled" badge to your readme
Additionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com):
- Update frequency (including time of day and day of week)
- Pull request limits (per update run and/or open at any time)
- Out-of-range updates (receive only lockfile updates, if desired)
- Security updates (receive only security updates, if desired)
Bumps github.com/ethereum/go-ethereum from 1.9.8 to 1.10.4.
Release notes
Sourced from github.com/ethereum/go-ethereum's releases.
... (truncated)
Commits
aa637fd
params: release go-ethereum v1.10.4 stablee1f244a
Merge pull request #23061 from karalabe/docker-noarm40a11d6
travis: don't overwrite amd64 images with arm64b28f8c0
Merge pull request #23060 from karalabe/travis-docker90ffcfd
travis, build: own docker builder and hub pushera675c89
core: readded state processor error tests (#23055)080b6eb
core/vm: evm fix panic (#23047)ae315ef
Merge pull request #23050 from karalabe/1559-receipt-rpcaa69d36
core, graphql, internal: expose effectiveGasPrice in receipts0aadb49
Merge pull request #23051 from karalabe/cht-1.10.4Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) - `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language - `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language - `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language - `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language - `@dependabot badge me` will comment on this PR with code to add a "Dependabot enabled" badge to your readme Additionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com): - Update frequency (including time of day and day of week) - Pull request limits (per update run and/or open at any time) - Out-of-range updates (receive only lockfile updates, if desired) - Security updates (receive only security updates, if desired)