Merge pull request #22809 from holiman/alt_3541

core: implement EIP-3541
pull/22836/head
Péter Szilágyi 3 years ago committed by GitHub
commit e77ef8fa8a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 1
      core/vm/errors.go
  2. 5
      core/vm/evm.go

@ -34,6 +34,7 @@ var (
ErrWriteProtection = errors.New("write protection")
ErrReturnDataOutOfBounds = errors.New("return data out of bounds")
ErrGasUintOverflow = errors.New("gas uint64 overflow")
ErrInvalidCode = errors.New("invalid code: must not begin with 0xef")
)
// ErrStackUnderflow wraps an evm error when the items on the stack less

@ -468,6 +468,11 @@ func (evm *EVM) create(caller ContractRef, codeAndHash *codeAndHash, gas uint64,
err = ErrMaxCodeSizeExceeded
}
// Reject code starting with 0xEF if EIP-3541 is enabled.
if err == nil && len(ret) >= 1 && ret[0] == 0xEF && evm.chainRules.IsLondon {
err = ErrInvalidCode
}
// if the contract creation ran successfully and no errors were returned
// calculate the gas required to store the code. If the code could not
// be stored due to not enough gas set an error and let it be handled

Loading…
Cancel
Save