mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-20 10:52:25 +00:00
Revert "core/state, core/vm: implement EIP 6780 (#27189)"
This reverts commit 876a66cdfd.
This commit is contained in:
parent
a753ad711e
commit
47377e704b
6 changed files with 0 additions and 50 deletions
|
|
@ -86,9 +86,6 @@ type stateObject struct {
|
||||||
// or an account that is considered as empty will be marked as deleted at
|
// or an account that is considered as empty will be marked as deleted at
|
||||||
// the end of transaction and no longer accessible anymore.
|
// the end of transaction and no longer accessible anymore.
|
||||||
deleted bool
|
deleted bool
|
||||||
|
|
||||||
// Flag whether the object was created in the current transaction
|
|
||||||
created bool
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// empty returns whether the account is considered empty.
|
// empty returns whether the account is considered empty.
|
||||||
|
|
|
||||||
|
|
@ -493,17 +493,6 @@ func (s *StateDB) SelfDestruct(addr common.Address) {
|
||||||
stateObject.data.Balance = new(big.Int)
|
stateObject.data.Balance = new(big.Int)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *StateDB) Selfdestruct6780(addr common.Address) {
|
|
||||||
stateObject := s.getStateObject(addr)
|
|
||||||
if stateObject == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
if stateObject.created {
|
|
||||||
s.SelfDestruct(addr)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// SetTransientState sets transient storage for a given account. It
|
// SetTransientState sets transient storage for a given account. It
|
||||||
// adds the change to the journal so that it can be rolled back
|
// adds the change to the journal so that it can be rolled back
|
||||||
// to its previous value if there is a revert.
|
// to its previous value if there is a revert.
|
||||||
|
|
@ -692,9 +681,6 @@ func (s *StateDB) createObject(addr common.Address) (newobj, prev *stateObject)
|
||||||
delete(s.accountsOrigin, prev.addrHash)
|
delete(s.accountsOrigin, prev.addrHash)
|
||||||
delete(s.storagesOrigin, prev.addrHash)
|
delete(s.storagesOrigin, prev.addrHash)
|
||||||
}
|
}
|
||||||
|
|
||||||
newobj.created = true
|
|
||||||
|
|
||||||
s.setStateObject(newobj)
|
s.setStateObject(newobj)
|
||||||
if prev != nil && !prev.deleted {
|
if prev != nil && !prev.deleted {
|
||||||
return newobj, prev
|
return newobj, prev
|
||||||
|
|
@ -924,7 +910,6 @@ func (s *StateDB) Finalise(deleteEmptyObjects bool) {
|
||||||
} else {
|
} else {
|
||||||
obj.finalise(true) // Prefetch slots in the background
|
obj.finalise(true) // Prefetch slots in the background
|
||||||
}
|
}
|
||||||
obj.created = false
|
|
||||||
s.stateObjectsPending[addr] = struct{}{}
|
s.stateObjectsPending[addr] = struct{}{}
|
||||||
s.stateObjectsDirty[addr] = struct{}{}
|
s.stateObjectsDirty[addr] = struct{}{}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,6 @@ import (
|
||||||
|
|
||||||
var activators = map[int]func(*JumpTable){
|
var activators = map[int]func(*JumpTable){
|
||||||
5656: enable5656,
|
5656: enable5656,
|
||||||
6780: enable6780,
|
|
||||||
3855: enable3855,
|
3855: enable3855,
|
||||||
3860: enable3860,
|
3860: enable3860,
|
||||||
3529: enable3529,
|
3529: enable3529,
|
||||||
|
|
@ -292,14 +291,3 @@ func enable4844(jt *JumpTable) {
|
||||||
maxStack: maxStack(1, 1),
|
maxStack: maxStack(1, 1),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// enable6780 applies EIP-6780 (deactivate SELFDESTRUCT)
|
|
||||||
func enable6780(jt *JumpTable) {
|
|
||||||
jt[SELFDESTRUCT] = &operation{
|
|
||||||
execute: opSelfdestruct6780,
|
|
||||||
dynamicGas: gasSelfdestructEIP3529,
|
|
||||||
constantGas: params.SelfdestructGasEIP150,
|
|
||||||
minStack: minStack(1, 0),
|
|
||||||
maxStack: maxStack(1, 0),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -829,22 +829,6 @@ func opSelfdestruct(pc *uint64, interpreter *EVMInterpreter, scope *ScopeContext
|
||||||
return nil, errStopToken
|
return nil, errStopToken
|
||||||
}
|
}
|
||||||
|
|
||||||
func opSelfdestruct6780(pc *uint64, interpreter *EVMInterpreter, scope *ScopeContext) ([]byte, error) {
|
|
||||||
if interpreter.readOnly {
|
|
||||||
return nil, ErrWriteProtection
|
|
||||||
}
|
|
||||||
beneficiary := scope.Stack.pop()
|
|
||||||
balance := interpreter.evm.StateDB.GetBalance(scope.Contract.Address())
|
|
||||||
interpreter.evm.StateDB.SubBalance(scope.Contract.Address(), balance)
|
|
||||||
interpreter.evm.StateDB.AddBalance(beneficiary.Bytes20(), balance)
|
|
||||||
interpreter.evm.StateDB.Selfdestruct6780(scope.Contract.Address())
|
|
||||||
if tracer := interpreter.evm.Config.Tracer; tracer != nil {
|
|
||||||
tracer.CaptureEnter(SELFDESTRUCT, scope.Contract.Address(), beneficiary.Bytes20(), []byte{}, 0, balance)
|
|
||||||
tracer.CaptureExit([]byte{}, 0, nil)
|
|
||||||
}
|
|
||||||
return nil, errStopToken
|
|
||||||
}
|
|
||||||
|
|
||||||
// following functions are used by the instruction jump table
|
// following functions are used by the instruction jump table
|
||||||
|
|
||||||
// make log instruction function
|
// make log instruction function
|
||||||
|
|
|
||||||
|
|
@ -54,8 +54,6 @@ type StateDB interface {
|
||||||
SelfDestruct(common.Address)
|
SelfDestruct(common.Address)
|
||||||
HasSelfDestructed(common.Address) bool
|
HasSelfDestructed(common.Address) bool
|
||||||
|
|
||||||
Selfdestruct6780(common.Address)
|
|
||||||
|
|
||||||
// Exist reports whether the given account exists in state.
|
// Exist reports whether the given account exists in state.
|
||||||
// Notably this should also return true for self-destructed accounts.
|
// Notably this should also return true for self-destructed accounts.
|
||||||
Exist(common.Address) bool
|
Exist(common.Address) bool
|
||||||
|
|
|
||||||
|
|
@ -85,7 +85,6 @@ func newCancunInstructionSet() JumpTable {
|
||||||
enable4844(&instructionSet) // EIP-4844 (DATAHASH opcode)
|
enable4844(&instructionSet) // EIP-4844 (DATAHASH opcode)
|
||||||
enable1153(&instructionSet) // EIP-1153 "Transient Storage"
|
enable1153(&instructionSet) // EIP-1153 "Transient Storage"
|
||||||
enable5656(&instructionSet) // EIP-5656 (MCOPY opcode)
|
enable5656(&instructionSet) // EIP-5656 (MCOPY opcode)
|
||||||
enable6780(&instructionSet) // EIP-6780 SELFDESTRUCT only in same transaction
|
|
||||||
return validate(instructionSet)
|
return validate(instructionSet)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -93,7 +92,6 @@ func newShanghaiInstructionSet() JumpTable {
|
||||||
instructionSet := newMergeInstructionSet()
|
instructionSet := newMergeInstructionSet()
|
||||||
enable3855(&instructionSet) // PUSH0 instruction
|
enable3855(&instructionSet) // PUSH0 instruction
|
||||||
enable3860(&instructionSet) // Limit and meter initcode
|
enable3860(&instructionSet) // Limit and meter initcode
|
||||||
|
|
||||||
return validate(instructionSet)
|
return validate(instructionSet)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue