You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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
EmitLogsForBurnAccounts() was renamed to LogsForBurnAccounts() and it now returns all the Burn logs
Touch() was added in StateDB interface
VerkleTime was renamed to UBTTime in ChainConfig
NewContract() expects a GasBudget struct type, instead of a plain uint64 value
TransactionToMessage() no longer works for DryRunTransaction, since we provide no V,R,S signature values
Calldata floor gas cost has increased, the gas limit for certain test transactions was updated to match this
3. Implement new interfaces/methods added from ethereum/go-ethereum updates
EmitLogsForBurnAccounts() has been implemented and tested
IsNewContract() was already implemented in our custom StateDB interface implementation
SelfDestruct() has been updated, to handle EIP-6780. Flow EVM genesis block was already on Dencun, so we only support SelfDestruct() with EIP-6780, not the legacy behavior prior to Dencun.
SLOTNUM information is being injected in the EVM.BlockContext, to provide the value for the newly-added SLOTNUM opcode.
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:
Activation mechanism for Glamsterdam hard-fork upgrade has been updated.
For Emulator / Previewnet networks Flow EVM already runs on Glamsterdam
For Testnet / Mainnet a future date has been set. Upon exact date finalization from the Ethereum team, these will be updated to reflect the actual dates.
Upgrade Flow EVM with the upcoming changes included in the Ethereum Glamsterdam hard-fork.
High-level Tasks:
ethereum/go-ethereumdependency in flow-go to its latest versionethereum/go-ethereumversion updatesethereum/go-ethereumupdatesGlamsterdamhard-fork (https://eips.ethereum.org/EIPS/eip-7773)1. Update
ethereum/go-ethereumdependency in flow-go to its latest versionCurrent version in
masterbranch isgit.832008.xyz/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-ethereumversion updatesBreakdown of breaking changes per version:
v1.16.9
No breaking changes
v1.17.0
PointCache()removed in trie, go.mod: remove all references to go-verkle and go-ipa ethereum/go-ethereum#33461SelfDestruct6780()removed in core: invoke selfdestruct tracer hooks during finalisation ethereum/go-ethereum#32919SelfDestruct()is now called, instead ofSelfDestruct6780()SelfDestruct6780()from test cases and typesv1.17.1
No breaking changes
v1.17.2
EmitLogsForBurnAccounts()was added inStateDBinterfaceGeth(it is called indeed)SelfDestruct()to assert the burn log is emittedGasPooltype change fromuint64toGasPoolstructNewGasPoolis the proper constructor)TransferFuncnow expects theChainRulesas an extra parameterEthTransferLog)1.17.3
uint256in coreMessagefor faster gas calculations (core: use uint256 in core.Message ethereum/go-ethereum#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 values3. Implement new interfaces/methods added from
ethereum/go-ethereumupdatesEmitLogsForBurnAccounts()has been implemented and testedIsNewContract()was already implemented in our customStateDBinterface implementationSelfDestruct()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:
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:
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:
5. Update existing timestamp activation mechanism for hard-forks (Flow EVM testnet & mainnet)
Activation mechanism for Glamsterdam hard-fork upgrade has been updated.
Emulator/Previewnetnetworks Flow EVM already runs on GlamsterdamTestnet/Mainneta future date has been set. Upon exact date finalization from the Ethereum team, these will be updated to reflect the actual dates.