gas_cost=constants.GAS_NULL, logic_fn=logic.extcodecopy_eip2929, mnemonic=mnemonics.EXTCODECOPY, ), opcode_values.EXTCODEHASH: as_opcode( gas_cost=constants.GAS_NULL, logic_fn=logic.extcodehash_eip2929, mnemonic=mnemonics.EXTCODEHASH, ), opcode_values.SLOAD: as_opcode( gas_cost=constants.GAS_NULL, logic_fn=logic.sload_eip2929, mnemonic=mnemonics.SLOAD, ), opcode_values.SSTORE: as_opcode( logic_fn=ensure_no_static(logic.sstore_eip2929), mnemonic=mnemonics.SSTORE, gas_cost=constants.GAS_NULL, ), # System opcodes opcode_values.CREATE: logic.CreateEIP2929.configure( __name__='opcode:CREATE', mnemonic=mnemonics.CREATE, gas_cost=constants.GAS_CREATE, )(), opcode_values.CALL: logic.CallEIP2929.configure( __name__='opcode:CALL', mnemonic=mnemonics.CALL, gas_cost=constants.GAS_NULL, )(), opcode_values.CALLCODE: logic.CallCodeEIP2929.configure(
as_opcode, ) from eth import constants from eth.vm.forks.berlin.opcodes import ( BERLIN_OPCODES, ) from eth.vm.forks.byzantium.opcodes import ( ensure_no_static, ) from . import storage UPDATED_OPCODES: Dict[int, Opcode] = { opcode_values.BASEFEE: as_opcode( gas_cost=constants.GAS_BASE, logic_fn=block.basefee, mnemonic=mnemonics.BASEFEE, ), opcode_values.SSTORE: as_opcode( gas_cost=constants.GAS_NULL, logic_fn=ensure_no_static(storage.sstore_eip3529), mnemonic=mnemonics.SSTORE, ), } LONDON_OPCODES = merge( copy.deepcopy(BERLIN_OPCODES), UPDATED_OPCODES, )
UPDATED_OPCODES = { # New opcodes opcode_values.CHAINID: as_opcode( logic_fn=context.chain_id, mnemonic=mnemonics.CHAINID, gas_cost=constants.GAS_BASE, ), opcode_values.SELFBALANCE: as_opcode( logic_fn=context.selfbalance, mnemonic=mnemonics.SELFBALANCE, gas_cost=constants.GAS_LOW, ), # Repriced opcodes opcode_values.SSTORE: as_opcode( logic_fn=ensure_no_static(sstore_eip2200), mnemonic=mnemonics.SSTORE, gas_cost=constants.GAS_NULL, ), opcode_values.BALANCE: as_opcode( logic_fn=context.balance, mnemonic=mnemonics.BALANCE, gas_cost=GAS_BALANCE_EIP1884, ), opcode_values.SLOAD: as_opcode( logic_fn=storage.sload, mnemonic=mnemonics.SLOAD, gas_cost=GAS_SLOAD_EIP1884, ), opcode_values.EXTCODEHASH: as_opcode( logic_fn=context.extcodehash,
opcode_values.SAR: as_opcode( logic_fn=arithmetic.sar, mnemonic=mnemonics.SAR, gas_cost=constants.GAS_VERYLOW, ), opcode_values.EXTCODEHASH: as_opcode( logic_fn=context.extcodehash, mnemonic=mnemonics.EXTCODEHASH, gas_cost=GAS_EXTCODEHASH_EIP1052, ), opcode_values.CREATE2: system.Create2.configure( __name__='opcode:CREATE2', mnemonic=mnemonics.CREATE2, gas_cost=constants.GAS_CREATE, )(), opcode_values.SSTORE: as_opcode( logic_fn=ensure_no_static(sstore_eip1283), mnemonic=mnemonics.SSTORE, gas_cost=constants.GAS_NULL, ), } CONSTANTINOPLE_OPCODES = merge( copy.deepcopy(BYZANTIUM_OPCODES), UPDATED_OPCODES, )