Skip to content

Commit 49fd411

Browse files
committed
refactor: use NewEVMArgs struct in hook
1 parent 03e24d4 commit 49fd411

File tree

2 files changed

+17
-7
lines changed

2 files changed

+17
-7
lines changed

core/vm/evm.libevm_test.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,15 @@ type chainIDOverrider struct {
1212
chainID int64
1313
}
1414

15-
func (o chainIDOverrider) OverrideNewEVMArgs(BlockContext, TxContext, StateDB, *params.ChainConfig, Config) (BlockContext, TxContext, StateDB, *params.ChainConfig, Config) {
16-
return BlockContext{}, TxContext{}, nil, &params.ChainConfig{ChainID: big.NewInt(o.chainID)}, Config{}
15+
func (o chainIDOverrider) OverrideNewEVMArgs(args *NewEVMArgs) *NewEVMArgs {
16+
args.ChainConfig = &params.ChainConfig{ChainID: big.NewInt(o.chainID)}
17+
return args
1718
}
1819

1920
func TestOverrideNewEVMArgs(t *testing.T) {
20-
// The OverrideNewEVMArgs hook accepts and returns all arguments to
21+
// The overrideNewEVMArgs function accepts and returns all arguments to
2122
// NewEVM(), in order. Here we lock in our assumption of that order. If this
22-
// breaks then the Hooks.OverrideNewEVMArgs() signature MUST be changed to
23-
// match.
23+
// breaks then all functionality overriding the args MUST be updated.
2424
var _ func(BlockContext, TxContext, StateDB, *params.ChainConfig, Config) *EVM = NewEVM
2525

2626
const chainID = 13579

core/vm/hooks.libevm.go

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,16 @@ var libevmHooks Hooks
1515

1616
// Hooks are arbitrary configuration functions to modify default VM behaviour.
1717
type Hooks interface {
18-
OverrideNewEVMArgs(BlockContext, TxContext, StateDB, *params.ChainConfig, Config) (BlockContext, TxContext, StateDB, *params.ChainConfig, Config)
18+
OverrideNewEVMArgs(*NewEVMArgs) *NewEVMArgs
19+
}
20+
21+
// NewEVMArgs are the arguments received by [NewEVM], available for override.
22+
type NewEVMArgs struct {
23+
BlockContext BlockContext
24+
TxContext TxContext
25+
StateDB StateDB
26+
ChainConfig *params.ChainConfig
27+
Config Config
1928
}
2029

2130
func overrideNewEVMArgs(
@@ -28,5 +37,6 @@ func overrideNewEVMArgs(
2837
if libevmHooks == nil {
2938
return blockCtx, txCtx, statedb, chainConfig, config
3039
}
31-
return libevmHooks.OverrideNewEVMArgs(blockCtx, txCtx, statedb, chainConfig, config)
40+
args := libevmHooks.OverrideNewEVMArgs(&NewEVMArgs{blockCtx, txCtx, statedb, chainConfig, config})
41+
return args.BlockContext, args.TxContext, args.StateDB, args.ChainConfig, args.Config
3242
}

0 commit comments

Comments
 (0)