From 925d13bda44d6c51c0aa5d5e787a4d331d48ed22 Mon Sep 17 00:00:00 2001 From: Anna Shaleva Date: Fri, 14 Jun 2024 22:57:40 +0300 Subject: [PATCH] t8ntool: process OnPersist before state transition Exactly like it's done with BeaconBlockRoot. Should be a part of #147. Signed-off-by: Anna Shaleva --- cmd/evm/internal/t8ntool/execution.go | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/cmd/evm/internal/t8ntool/execution.go b/cmd/evm/internal/t8ntool/execution.go index 1ae093b61e..7f72275732 100644 --- a/cmd/evm/internal/t8ntool/execution.go +++ b/cmd/evm/internal/t8ntool/execution.go @@ -187,10 +187,20 @@ func (pre *Prestate) Apply(vmConfig vm.Config, chainConfig *params.ChainConfig, chainConfig.DAOForkBlock.Cmp(new(big.Int).SetUint64(pre.Env.Number)) == 0 { misc.ApplyDAOHardFork(statedb) } + var evm *vm.EVM if beaconRoot := pre.Env.ParentBeaconBlockRoot; beaconRoot != nil { - evm := vm.NewEVM(vmContext, vm.TxContext{}, statedb, chainConfig, vmConfig) + evm = vm.NewEVM(vmContext, vm.TxContext{}, statedb, chainConfig, vmConfig) core.ProcessBeaconBlockRoot(*beaconRoot, evm, statedb) } + if chainConfig.DBFT != nil { + if evm == nil { + evm = vm.NewEVM(vmContext, vm.TxContext{}, statedb, chainConfig, vmConfig) + } + err := core.ProcessOnPersist(evm, statedb) + if err != nil { + return nil, nil, nil, NewError(ErrorEVM, fmt.Errorf("could not process OnPersist: %v", err)) + } + } for i := 0; txIt.Next(); i++ { tx, err := txIt.Tx()