mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-23 05:06:43 +00:00
eth/tracers: fix prestateTracer for EIP-6780 SELFDESTRUCT
This commit is contained in:
parent
5dd0fe2f53
commit
193516ed81
1 changed files with 9 additions and 1 deletions
|
|
@ -131,7 +131,15 @@ func (t *prestateTracer) OnOpcode(pc uint64, opcode byte, gas, cost uint64, scop
|
||||||
addr := common.Address(stackData[stackLen-1].Bytes20())
|
addr := common.Address(stackData[stackLen-1].Bytes20())
|
||||||
t.lookupAccount(addr)
|
t.lookupAccount(addr)
|
||||||
if op == vm.SELFDESTRUCT {
|
if op == vm.SELFDESTRUCT {
|
||||||
t.deleted[caller] = true
|
if t.chainConfig.IsCancun(t.env.BlockNumber, t.env.Time) {
|
||||||
|
// EIP-6780: only delete if created in same transaction
|
||||||
|
if t.created[caller] {
|
||||||
|
t.deleted[caller] = true
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// Pre-EIP-6780: always delete
|
||||||
|
t.deleted[caller] = true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
case stackLen >= 5 && (op == vm.DELEGATECALL || op == vm.CALL || op == vm.STATICCALL || op == vm.CALLCODE):
|
case stackLen >= 5 && (op == vm.DELEGATECALL || op == vm.CALL || op == vm.STATICCALL || op == vm.CALLCODE):
|
||||||
addr := common.Address(stackData[stackLen-2].Bytes20())
|
addr := common.Address(stackData[stackLen-2].Bytes20())
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue