diff --git a/core/state/statedb_hooked.go b/core/state/statedb_hooked.go index 62aec89782..9cab382e12 100644 --- a/core/state/statedb_hooked.go +++ b/core/state/statedb_hooked.go @@ -309,14 +309,17 @@ func (s *hookedStateDB) Finalise(deleteEmptyObjects bool) { // If an initcode invokes selfdestruct, do not emit a code change. prevCodeHash := s.inner.GetCodeHash(addr) - if prevCodeHash == types.EmptyCodeHash { - continue + if prevCodeHash != types.EmptyCodeHash { + // Otherwise, trace the change. + if s.hooks.OnCodeChangeV2 != nil { + s.hooks.OnCodeChangeV2(addr, prevCodeHash, s.inner.GetCode(addr), types.EmptyCodeHash, nil, tracing.CodeChangeSelfDestruct) + } else if s.hooks.OnCodeChange != nil { + s.hooks.OnCodeChange(addr, prevCodeHash, s.inner.GetCode(addr), types.EmptyCodeHash, nil) + } } - // Otherwise, trace the change. - if s.hooks.OnCodeChangeV2 != nil { - s.hooks.OnCodeChangeV2(addr, prevCodeHash, s.inner.GetCode(addr), types.EmptyCodeHash, nil, tracing.CodeChangeSelfDestruct) - } else if s.hooks.OnCodeChange != nil { - s.hooks.OnCodeChange(addr, prevCodeHash, s.inner.GetCode(addr), types.EmptyCodeHash, nil) + + if s.hooks.OnSelfDestructChange != nil { + s.hooks.OnSelfDestructChange(addr) } } diff --git a/tests/init.go b/tests/init.go index 4c3268c41c..117410b7a8 100644 --- a/tests/init.go +++ b/tests/init.go @@ -525,6 +525,38 @@ var Forks = map[string]*params.ChainConfig{ BPO2: bpo2BlobConfig, }, }, + "BPO2ToAmsterdamAtTime15k": { + ChainID: big.NewInt(1), + HomesteadBlock: big.NewInt(0), + EIP150Block: big.NewInt(0), + EIP155Block: big.NewInt(0), + EIP158Block: big.NewInt(0), + ByzantiumBlock: big.NewInt(0), + ConstantinopleBlock: big.NewInt(0), + PetersburgBlock: big.NewInt(0), + IstanbulBlock: big.NewInt(0), + MuirGlacierBlock: big.NewInt(0), + BerlinBlock: big.NewInt(0), + LondonBlock: big.NewInt(0), + ArrowGlacierBlock: big.NewInt(0), + MergeNetsplitBlock: big.NewInt(0), + TerminalTotalDifficulty: big.NewInt(0), + ShanghaiTime: u64(0), + CancunTime: u64(0), + PragueTime: u64(0), + OsakaTime: u64(0), + BPO1Time: u64(0), + BPO2Time: u64(0), + AmsterdamTime: u64(15_000), + DepositContractAddress: params.MainnetChainConfig.DepositContractAddress, + BlobScheduleConfig: ¶ms.BlobScheduleConfig{ + Cancun: params.DefaultCancunBlobConfig, + Prague: params.DefaultPragueBlobConfig, + Osaka: params.DefaultOsakaBlobConfig, + BPO1: bpo1BlobConfig, + BPO2: bpo2BlobConfig, + }, + }, "OsakaToBPO1AtTime15k": { ChainID: big.NewInt(1), HomesteadBlock: big.NewInt(0),