Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
ffb657b
Bump ethereum/go-ethereum dependency to v1.16.9
m-Peter May 2, 2026
2211adf
Bump ethereum/go-ethereum dependency to v1.17.0
m-Peter May 2, 2026
e632f26
Bump ethereum/go-ethereum dependency to v1.17.1
m-Peter May 2, 2026
922adff
Bump ethereum/go-ethereum dependency to v1.17.2
m-Peter May 2, 2026
9abd95a
Add activation timestamps for Glamsterdam hard-fork
m-Peter May 3, 2026
d8c57ba
Add E2E tests to verify correctness of EIP-7708 (log emission for ETH…
m-Peter May 5, 2026
b45e523
Populate EVM BlockContext with information regarding SLOTNUM opcode
m-Peter May 7, 2026
2b94740
Update COA deployment logic to match EVM internals
m-Peter May 11, 2026
c308dec
Add more descriptive comments
m-Peter May 11, 2026
336a258
Set the Amsterdam hard-fork activation date to end of 2026
m-Peter May 12, 2026
e7423fc
Update calculation of SlotNumber in EVM BlockProposal
m-Peter May 12, 2026
368fe19
Update ethereum/go-ethereum dependency to v1.17.3 and fix breaking AP…
m-Peter May 12, 2026
68af970
Remove MaxTxGas limit cap under the Amsterdam hard-fork
m-Peter May 13, 2026
d4ae578
Record state access read in StateDB's public API
m-Peter May 13, 2026
52a7ae6
Bump OpenTelemetry packages to latest patched version
m-Peter May 14, 2026
f6eeb74
Test improvements and code simplifications
m-Peter May 14, 2026
805f19a
Address review comments
m-Peter May 15, 2026
8b481e5
Remove redundant sortedAddresses array allocation in LogsForBurnAccou…
m-Peter May 18, 2026
27e77cb
Add comments in all places where we track per-tx EIP-7928 state access
m-Peter May 20, 2026
cd044d0
Adjust SlotNumber() calculation for each network
m-Peter May 20, 2026
26223a8
Move SlotNumber() function to Block type from BlockProposal
m-Peter May 21, 2026
80e48fe
Address review comments
m-Peter May 21, 2026
48f911a
Proper EmptyCodeHash for special EVM system addresses
m-Peter May 22, 2026
f4130e5
Bump ethereum/go-ethereum dependency to v1.17.4
m-Peter Jun 22, 2026
b3fb1f9
Implement EIP-8037 for state creation gas cost increase
m-Peter Jun 22, 2026
39df265
Implement EIP-7928 for Block-Level Access Lists
m-Peter Jun 23, 2026
10f911e
Remove obsolete comment regarding usage of StateDB.Finalise()
m-Peter Jun 25, 2026
73f30b8
Update gasLimit in VM Bridge bootstrap to 20M
m-Peter Jun 29, 2026
009e853
Merge branch 'master' into mpeter/flow-evm-glamsterdam-upgrade
m-Peter Jun 29, 2026
a81f98b
Merge remote-tracking branch 'origin/master' into mpeter/flow-evm-gla…
m-Peter Jul 7, 2026
ab9f09e
Run make tidy
m-Peter Jul 7, 2026
0d7078e
Bump golang.org/x/net dependency to v0.55.0
m-Peter Jul 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion fvm/bootstrap.go
Original file line number Diff line number Diff line change
Expand Up @@ -1123,7 +1123,7 @@ func (b *bootstrapExecutor) setupVMBridge(serviceAddress flow.Address, env *temp

// Arbitrary high gas limit that can be used for all the
// EVM transactions to ensure none of them run out of gas
gasLimit := 15000000
gasLimit := 20_000_000
deploymentValue := 0.0

// Retrieve the factory bytecode from the JSON args
Expand Down
33 changes: 25 additions & 8 deletions fvm/evm/emulator/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import (
gethVM "github.com/ethereum/go-ethereum/core/vm"
"github.com/ethereum/go-ethereum/eth/tracers"
gethParams "github.com/ethereum/go-ethereum/params"
"github.com/holiman/uint256"

"github.com/onflow/flow-go/fvm/evm/types"
)
Expand All @@ -25,6 +26,10 @@ var (
PreviewnetOsakaActivation = uint64(0) // already on Osaka for PreviewNet
TestnetOsakaActivation = uint64(1763575200) // Wednesday, November 19, 2025 18:00:00 GMT+0000
MainnetOsakaActivation = uint64(1764784800) // Wednesday, December 03, 2025 18:00:00 GMT+0000

PreviewnetAmsterdamActivation = uint64(0) // already on Amsterdam for PreviewNet
TestnetAmsterdamActivation = uint64(1798740000) // Thursday, December 31, 2026 at 18:00:00 GMT+0000

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

TestnetAmsterdamActivation & MainnetAmsterdamActivation will be updated accordingly when there's official activation times.

MainnetAmsterdamActivation = uint64(1798740000) // Thursday, December 31, 2026 at 18:00:00 GMT+0000
)

// Config aggregates all the configuration (chain, evm, block, tx, ...)
Expand Down Expand Up @@ -102,22 +107,26 @@ func MakeChainConfig(chainID *big.Int) *gethParams.ChainConfig {
MuirGlacierBlock: bigZero, // already on MuirGlacier

// Fork scheduling based on timestamps
ShanghaiTime: &zero, // already on Shanghai
CancunTime: &zero, // already on Cancun
PragueTime: nil, // this is conditionally set below
OsakaTime: nil, // this is conditionally set below
VerkleTime: nil, // not on Verkle
ShanghaiTime: &zero, // already on Shanghai
CancunTime: &zero, // already on Cancun
PragueTime: nil, // this is conditionally set below
OsakaTime: nil, // this is conditionally set below
AmsterdamTime: nil, // this is conditionally set below
UBTTime: nil, // not on Verkle (a.k.a UBT)
}

if chainID.Cmp(types.FlowEVMPreviewNetChainID) == 0 {
chainConfig.PragueTime = &PreviewnetPragueActivation
chainConfig.OsakaTime = &PreviewnetOsakaActivation
chainConfig.AmsterdamTime = &PreviewnetAmsterdamActivation
} else if chainID.Cmp(types.FlowEVMTestNetChainID) == 0 {
chainConfig.PragueTime = &TestnetPragueActivation
chainConfig.OsakaTime = &TestnetOsakaActivation
chainConfig.AmsterdamTime = &TestnetAmsterdamActivation
} else if chainID.Cmp(types.FlowEVMMainNetChainID) == 0 {
chainConfig.PragueTime = &MainnetPragueActivation
chainConfig.OsakaTime = &MainnetOsakaActivation
chainConfig.AmsterdamTime = &MainnetAmsterdamActivation
}

return chainConfig
Expand All @@ -135,8 +144,7 @@ func defaultConfig() *Config {
NoBaseFee: true,
},
TxContext: &gethVM.TxContext{
GasPrice: new(big.Int),
BlobFeeCap: new(big.Int),
GasPrice: new(uint256.Int),
},
BlockContext: &gethVM.BlockContext{
CanTransfer: gethCore.CanTransfer,
Expand All @@ -146,6 +154,7 @@ func defaultConfig() *Config {
GetHash: func(n uint64) gethCommon.Hash {
return gethCommon.Hash{}
},
CostPerStateByte: gethParams.CostPerStateByte,
},
PCTracker: NewCallTracker(),
}
Expand Down Expand Up @@ -188,7 +197,7 @@ func WithOrigin(origin gethCommon.Address) Option {
// WithGasPrice sets the gas price for the transaction (usually the one sets by the sender)
func WithGasPrice(gasPrice *big.Int) Option {

@m-Peter m-Peter May 11, 2026

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

WithGasPrice seems to be not used in flow-go or flow-evm-gateway. Seems like a relic that we could remove entirely.

return func(c *Config) *Config {
c.TxContext.GasPrice = gasPrice
c.TxContext.GasPrice = uint256.MustFromBig(gasPrice)
return c
Comment thread
m-Peter marked this conversation as resolved.
}
}
Expand Down Expand Up @@ -264,6 +273,14 @@ func WithRandom(rand *gethCommon.Hash) Option {
}
}

// WithSlotNum sets the slot number in the block context
func WithSlotNum(slotNum uint64) Option {
return func(c *Config) *Config {
c.BlockContext.SlotNum = slotNum
return c
}
}

// WithTransactionTracer sets a transaction tracer
func WithTransactionTracer(tracer *tracers.Tracer) Option {
return func(c *Config) *Config {
Expand Down
Loading
Loading