示例#1
0
     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(
示例#2
0
    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,
)
示例#3
0
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,
示例#4
0
    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,
)