[Flow EVM] Upgrade to Ethereum Glamsterdam hard-fork
@m-Peter is already working on this.
Since May 9, 2026.
- Dominant language
- Go
- Stars
- 575
- Forks
- 217
- Avg merge
- 4d 20h
- Merged PRs (30d)
- 9
Description
Upgrade Flow EVM with the upcoming changes included in the Ethereum Glamsterdam hard-fork.
High-level Tasks:
- 1. Update
ethereum/go-ethereumdependency in flow-go to its latest version - 2. Fix breaking changes on types & interfaces from
ethereum/go-ethereumversion updates - 3. Implement new interfaces/methods added from
ethereum/go-ethereumupdates - 4. Implement & verify correctness of all EIPs included in
Glamsterdamhard-fork (https://eips.ethereum.org/EIPS/eip-7773) - 5. Update existing timestamp activation mechanism for hard-forks (Flow EVM testnet & mainnet)
1. Update ethereum/go-ethereum dependency in flow-go to its latest version
Current version in master branch is github.com/ethereum/go-ethereum v1.16.8.
The latest version is github.com/ethereum/go-ethereum v1.17.2, at the time of writing.
2. Fix breaking changes on types & interfaces from ethereum/go-ethereum version updates
Breakdown of breaking changes per version:
v1.16.9
No breaking changes
v1.17.0
PointCache()removed in https://github.com/ethereum/go-ethereum/pull/33461SelfDestruct6780()removed in https://github.com/ethereum/go-ethereum/pull/32919- Make sure
SelfDestruct()is now called, instead ofSelfDestruct6780() - Remove all occurrences of
SelfDestruct6780()from test cases and types
- Make sure
v1.17.1
No breaking changes
v1.17.2
EmitLogsForBurnAccounts()was added inStateDBinterface- Make sure this is now called from
Geth(it is called indeed) - Add a test-case, utilizing
SelfDestruct()to assert the burn log is emitted
- Make sure this is now called from
GasPooltype change fromuint64toGasPoolstruct- Double check proper initialization for this (
NewGasPoolis the proper constructor)
- Double check proper initialization for this (
TransferFuncnow expects theChainRulesas an extra parameter- Check why the rules are needed (the rules are needed for checking if Amsterdam is enabled, to emit
EthTransferLog)
- Check why the rules are needed (the rules are needed for checking if Amsterdam is enabled, to emit
1.17.3
- Use
uint256in coreMessagefor faster gas calculations (https://github.com/ethereum/go-ethereum/pull/34934) EmitLogsForBurnAccounts()was renamed toLogsForBurnAccounts()and it now returns all the Burn logsTouch()was added inStateDBinterfaceVerkleTimewas renamed toUBTTimeinChainConfigNewContract()expects aGasBudgetstruct type, instead of a plainuint64valueTransactionToMessage()no longer works forDryRunTransaction, since we provide noV,R,Ssignature values- Calldata floor gas cost has increased, the gas limit for certain test transactions was updated to match this
1.17.4
SetTxContext()was added inStateDBinterfaceFinalise()now tracks storage reads/writes and state changes (balance, nonce, code)BlockContextnow accepts a configurableCostPerStateByte, which defines the state creation gas cost increase
3. Implement new interfaces/methods added from ethereum/go-ethereum updates
-
EmitLogsForBurnAccounts()has been implemented and tested -
IsNewContract()was already implemented in our customStateDBinterface implementation -
SelfDestruct()has been updated, to handleEIP-6780. Flow EVM genesis block was already onDencun, so we only supportSelfDestruct()withEIP-6780, not the legacy behavior prior toDencun. -
SLOTNUMinformation is being injected in theEVM.BlockContext, to provide the value for the newly-addedSLOTNUMopcode.
4. Implement & verify correctness of all EIPs included in Glamsterdam hard-fork
The following list contains the EIP-s which are non-applicable on Flow EVM, given that we do not use Ethereum's PoS mechanism/consensus layer:
- EIP-8045: Exclude slashed validators from proposing
- EIP-8061: Increase exit and consolidation churn
- EIP-8080: Let exits use the consolidation queue
- EIP-7688: Forward compatible consensus data structures
- EIP-7732: Enshrined Proposer-Builder Separation
The following list contains the EIP-s which are applicable for Flow EVM, but they are still in draft status, hence they are not yet implemented in Geth, and their inclusion on Glamsterdam hard-fork is not yet decided:
- [DRAFT] EIP-2780: Reduce intrinsic transaction gas
- [DRAFT] EIP-7904: General Repricing
- [DRAFT] EIP-8038: State-access gas cost increase
- [DRAFT] EIP-7997: Deterministic Factory Predeploy
The following list contains the EIPs which are applicable for Flow EVM, they are scheduled for inclusion on Glamsterdam hard-fork, and therefore should be implemented:
- EIP-7708: ETH transfers emit a log
- EVMAddress.deposit
- COA.deposit
- COA.withdraw
- COA.call
- COA.deploy
- EIP-7954: Increase Maximum Contract Size
- EIP-8024: Backward compatible SWAPN, DUPN, EXCHANGE
- EIP-7778: Block Gas Accounting without Refunds
- EIP-7843: SLOTNUM opcode
- EIP-7976: Increase Calldata Floor Cost
- EIP-7981: Increase Access List Cost
- EIP-7928: Block-Level Access Lists
- EIP-8037: State Creation Gas Cost Increase
5. Update existing timestamp activation mechanism for hard-forks (Flow EVM testnet & mainnet)
Activation mechanism for Glamsterdam hard-fork upgrade has been updated.
- For
Emulator/Previewnetnetworks Flow EVM already runs on Glamsterdam - For
Testnet/Mainneta future date has been set. Upon exact date finalization from the Ethereum team, these will be updated to reflect the actual dates.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.