Forks¶
Frontier¶
FrontierVM¶
-
class
eth.vm.forks.frontier.
FrontierVM
(header: eth.abc.BlockHeaderAPI, chaindb: eth.abc.ChainDatabaseAPI, chain_context: eth.abc.ChainContextAPI, consensus_context: eth.abc.ConsensusContextAPI)¶ -
block_class
¶ alias of
eth.vm.forks.frontier.blocks.FrontierBlock
-
add_receipt_to_header
(old_header: eth.abc.BlockHeaderAPI, receipt: eth.abc.ReceiptAPI) → eth.abc.BlockHeaderAPI¶ Apply the receipt to the old header, and return the resulting header. This may have storage-related side-effects. For example, pre-Byzantium, the state root hash is included in the receipt, and so must be stored into the database.
-
classmethod
calculate_net_gas_refund
(consumed_gas: int, gross_refund: int) → int¶
-
static
compute_difficulty
(parent_header: eth.abc.BlockHeaderAPI, timestamp: int) → int¶ Computes the difficulty for a frontier block based on the parent block.
-
configure_header
(**header_params) → eth.rlp.headers.BlockHeader¶
-
static
create_header_from_parent
(parent_header: eth.abc.BlockHeaderAPI, **header_params) → eth.rlp.headers.BlockHeader¶
-
classmethod
finalize_gas_used
(transaction: eth.abc.SignedTransactionAPI, computation: eth.abc.ComputationAPI) → int¶
-
static
get_block_reward
() → int¶ Return the amount in wei that should be given to a miner as a reward for this block.
Note
This is an abstract method that must be implemented in subclasses
-
classmethod
get_nephew_reward
() → int¶ Return the reward which should be given to the miner of the given nephew.
Note
This is an abstract method that must be implemented in subclasses
-
static
get_uncle_reward
(block_number: int, uncle: eth.abc.BlockHeaderAPI) → int¶ Return the reward which should be given to the miner of the given uncle.
Note
This is an abstract method that must be implemented in subclasses
-
classmethod
make_receipt
(base_header: eth.abc.BlockHeaderAPI, transaction: eth.abc.SignedTransactionAPI, computation: eth.abc.ComputationAPI, state: eth.abc.StateAPI) → eth.abc.ReceiptAPI¶ Generate the receipt resulting from applying the transaction.
Parameters: - base_header – the header of the block before the transaction was applied.
- transaction – the transaction used to generate the receipt
- computation – the result of running the transaction computation
- state – the resulting state, after executing the computation
Returns: receipt
-
validate_transaction_against_header
(base_header: eth.abc.BlockHeaderAPI, transaction: eth.abc.SignedTransactionAPI) → None¶
-
fork
= 'frontier'¶
-
FrontierState¶
-
class
eth.vm.forks.frontier.state.
FrontierState
(db: eth.abc.AtomicDatabaseAPI, execution_context: eth.abc.ExecutionContextAPI, state_root: NewType.<locals>.new_type)¶ -
account_db_class
¶ alias of
eth.db.account.AccountDB
-
computation_class
¶ alias of
eth.vm.forks.frontier.computation.FrontierComputation
-
transaction_context_class
¶ alias of
eth.vm.forks.frontier.transaction_context.FrontierTransactionContext
-
transaction_executor_class
¶ alias of
FrontierTransactionExecutor
-
apply_transaction
(transaction: eth.abc.SignedTransactionAPI) → eth.abc.ComputationAPI¶ Apply transaction to the vm state
Parameters: transaction – the transaction to apply Returns: the computation
-
validate_transaction
(transaction: eth.abc.SignedTransactionAPI) → None¶ Validate the given
transaction
.
-
FrontierComputation¶
-
class
eth.vm.forks.frontier.computation.
FrontierComputation
(state: eth.abc.StateAPI, message: eth.abc.MessageAPI, transaction_context: eth.abc.TransactionContextAPI)¶ A class for all execution message computations in the
Frontier
fork. Inherits fromBaseComputation
-
classmethod
apply_create_message
(state: eth.abc.StateAPI, message: eth.abc.MessageAPI, transaction_context: eth.abc.TransactionContextAPI) → eth.abc.ComputationAPI¶ Execute a VM message to create a new contract. This is where the VM-specific create logic exists.
-
classmethod
apply_message
(state: eth.abc.StateAPI, message: eth.abc.MessageAPI, transaction_context: eth.abc.TransactionContextAPI) → eth.abc.ComputationAPI¶ Execute a VM message. This is where the VM-specific call logic exists.
-
opcodes
= {0: <abc.opcode:STOP object>, 1: <abc.opcode:ADD object>, 2: <abc.opcode:MUL object>, 3: <abc.opcode:SUB object>, 4: <abc.opcode:DIV object>, 5: <abc.opcode:SDIV object>, 6: <abc.opcode:MOD object>, 7: <abc.opcode:SMOD object>, 8: <abc.opcode:ADDMOD object>, 9: <abc.opcode:MULMOD object>, 10: <abc.opcode:EXP object>, 11: <abc.opcode:SIGNEXTEND object>, 16: <abc.opcode:LT object>, 17: <abc.opcode:GT object>, 18: <abc.opcode:SLT object>, 19: <abc.opcode:SGT object>, 20: <abc.opcode:EQ object>, 21: <abc.opcode:ISZERO object>, 22: <abc.opcode:AND object>, 23: <abc.opcode:OR object>, 24: <abc.opcode:XOR object>, 25: <abc.opcode:NOT object>, 26: <abc.opcode:BYTE object>, 32: <abc.opcode:SHA3 object>, 48: <abc.opcode:ADDRESS object>, 49: <abc.opcode:BALANCE object>, 50: <abc.opcode:ORIGIN object>, 51: <abc.opcode:CALLER object>, 52: <abc.opcode:CALLVALUE object>, 53: <abc.opcode:CALLDATALOAD object>, 54: <abc.opcode:CALLDATASIZE object>, 55: <abc.opcode:CALLDATACOPY object>, 56: <abc.opcode:CODESIZE object>, 57: <abc.opcode:CODECOPY object>, 58: <abc.opcode:GASPRICE object>, 59: <abc.opcode:EXTCODESIZE object>, 60: <abc.opcode:EXTCODECOPY object>, 64: <abc.opcode:BLOCKHASH object>, 65: <abc.opcode:COINBASE object>, 66: <abc.opcode:TIMESTAMP object>, 67: <abc.opcode:NUMBER object>, 68: <abc.opcode:DIFFICULTY object>, 69: <abc.opcode:GASLIMIT object>, 80: <abc.opcode:POP object>, 81: <abc.opcode:MLOAD object>, 82: <abc.opcode:MSTORE object>, 83: <abc.opcode:MSTORE8 object>, 84: <abc.opcode:SLOAD object>, 85: <abc.opcode:SSTORE object>, 86: <abc.opcode:JUMP object>, 87: <abc.opcode:JUMPI object>, 88: <abc.opcode:PC object>, 89: <abc.opcode:MSIZE object>, 90: <abc.opcode:GAS object>, 91: <abc.opcode:JUMPDEST object>, 96: <abc.opcode:PUSH1 object>, 97: <abc.opcode:PUSH2 object>, 98: <abc.opcode:PUSH3 object>, 99: <abc.opcode:PUSH4 object>, 100: <abc.opcode:PUSH5 object>, 101: <abc.opcode:PUSH6 object>, 102: <abc.opcode:PUSH7 object>, 103: <abc.opcode:PUSH8 object>, 104: <abc.opcode:PUSH9 object>, 105: <abc.opcode:PUSH10 object>, 106: <abc.opcode:PUSH11 object>, 107: <abc.opcode:PUSH12 object>, 108: <abc.opcode:PUSH13 object>, 109: <abc.opcode:PUSH14 object>, 110: <abc.opcode:PUSH15 object>, 111: <abc.opcode:PUSH16 object>, 112: <abc.opcode:PUSH17 object>, 113: <abc.opcode:PUSH18 object>, 114: <abc.opcode:PUSH19 object>, 115: <abc.opcode:PUSH20 object>, 116: <abc.opcode:PUSH21 object>, 117: <abc.opcode:PUSH22 object>, 118: <abc.opcode:PUSH23 object>, 119: <abc.opcode:PUSH24 object>, 120: <abc.opcode:PUSH25 object>, 121: <abc.opcode:PUSH26 object>, 122: <abc.opcode:PUSH27 object>, 123: <abc.opcode:PUSH28 object>, 124: <abc.opcode:PUSH29 object>, 125: <abc.opcode:PUSH30 object>, 126: <abc.opcode:PUSH31 object>, 127: <abc.opcode:PUSH32 object>, 128: <abc.opcode:DUP1 object>, 129: <abc.opcode:DUP2 object>, 130: <abc.opcode:DUP3 object>, 131: <abc.opcode:DUP4 object>, 132: <abc.opcode:DUP5 object>, 133: <abc.opcode:DUP6 object>, 134: <abc.opcode:DUP7 object>, 135: <abc.opcode:DUP8 object>, 136: <abc.opcode:DUP9 object>, 137: <abc.opcode:DUP10 object>, 138: <abc.opcode:DUP11 object>, 139: <abc.opcode:DUP12 object>, 140: <abc.opcode:DUP13 object>, 141: <abc.opcode:DUP14 object>, 142: <abc.opcode:DUP15 object>, 143: <abc.opcode:DUP16 object>, 144: <abc.opcode:SWAP1 object>, 145: <abc.opcode:SWAP2 object>, 146: <abc.opcode:SWAP3 object>, 147: <abc.opcode:SWAP4 object>, 148: <abc.opcode:SWAP5 object>, 149: <abc.opcode:SWAP6 object>, 150: <abc.opcode:SWAP7 object>, 151: <abc.opcode:SWAP8 object>, 152: <abc.opcode:SWAP9 object>, 153: <abc.opcode:SWAP10 object>, 154: <abc.opcode:SWAP11 object>, 155: <abc.opcode:SWAP12 object>, 156: <abc.opcode:SWAP13 object>, 157: <abc.opcode:SWAP14 object>, 158: <abc.opcode:SWAP15 object>, 159: <abc.opcode:SWAP16 object>, 160: <abc.opcode:LOG0 object>, 161: <abc.opcode:LOG1 object>, 162: <abc.opcode:LOG2 object>, 163: <abc.opcode:LOG3 object>, 164: <abc.opcode:LOG4 object>, 240: <abc.opcode:CREATE object>, 241: <abc.opcode:CALL object>, 242: <abc.opcode:CALLCODE object>, 243: <abc.opcode:RETURN object>, 255: <abc.opcode:SELFDESTRUCT object>}¶
-
classmethod
Homestead¶
HomesteadVM¶
-
class
eth.vm.forks.homestead.
HomesteadVM
(header: eth.abc.BlockHeaderAPI, chaindb: eth.abc.ChainDatabaseAPI, chain_context: eth.abc.ChainContextAPI, consensus_context: eth.abc.ConsensusContextAPI)¶ -
block_class
¶ alias of
eth.vm.forks.homestead.blocks.HomesteadBlock
-
static
compute_difficulty
(parent_header: eth.abc.BlockHeaderAPI, timestamp: int) → int¶ Computes the difficulty for a homestead block based on the parent block.
-
configure_header
(**header_params) → eth.rlp.headers.BlockHeader¶
-
static
create_header_from_parent
(parent_header: eth.abc.BlockHeaderAPI, **header_params) → eth.rlp.headers.BlockHeader¶
-
fork
= 'homestead'¶
-
HomesteadState¶
-
class
eth.vm.forks.homestead.state.
HomesteadState
(db: eth.abc.AtomicDatabaseAPI, execution_context: eth.abc.ExecutionContextAPI, state_root: NewType.<locals>.new_type)¶ -
computation_class
¶ alias of
eth.vm.forks.homestead.computation.HomesteadComputation
-
validate_transaction
(transaction: eth.abc.SignedTransactionAPI) → None¶ Validate the given
transaction
.
-
HomesteadComputation¶
-
class
eth.vm.forks.homestead.computation.
HomesteadComputation
(state: eth.abc.StateAPI, message: eth.abc.MessageAPI, transaction_context: eth.abc.TransactionContextAPI)¶ A class for all execution message computations in the
Frontier
fork. Inherits fromFrontierComputation
-
classmethod
apply_create_message
(state: eth.abc.StateAPI, message: eth.abc.MessageAPI, transaction_context: eth.abc.TransactionContextAPI) → eth.abc.ComputationAPI¶ Execute a VM message to create a new contract. This is where the VM-specific create logic exists.
-
opcodes
= {0: <abc.opcode:STOP object>, 1: <abc.opcode:ADD object>, 2: <abc.opcode:MUL object>, 3: <abc.opcode:SUB object>, 4: <abc.opcode:DIV object>, 5: <abc.opcode:SDIV object>, 6: <abc.opcode:MOD object>, 7: <abc.opcode:SMOD object>, 8: <abc.opcode:ADDMOD object>, 9: <abc.opcode:MULMOD object>, 10: <abc.opcode:EXP object>, 11: <abc.opcode:SIGNEXTEND object>, 16: <abc.opcode:LT object>, 17: <abc.opcode:GT object>, 18: <abc.opcode:SLT object>, 19: <abc.opcode:SGT object>, 20: <abc.opcode:EQ object>, 21: <abc.opcode:ISZERO object>, 22: <abc.opcode:AND object>, 23: <abc.opcode:OR object>, 24: <abc.opcode:XOR object>, 25: <abc.opcode:NOT object>, 26: <abc.opcode:BYTE object>, 32: <abc.opcode:SHA3 object>, 48: <abc.opcode:ADDRESS object>, 49: <abc.opcode:BALANCE object>, 50: <abc.opcode:ORIGIN object>, 51: <abc.opcode:CALLER object>, 52: <abc.opcode:CALLVALUE object>, 53: <abc.opcode:CALLDATALOAD object>, 54: <abc.opcode:CALLDATASIZE object>, 55: <abc.opcode:CALLDATACOPY object>, 56: <abc.opcode:CODESIZE object>, 57: <abc.opcode:CODECOPY object>, 58: <abc.opcode:GASPRICE object>, 59: <abc.opcode:EXTCODESIZE object>, 60: <abc.opcode:EXTCODECOPY object>, 64: <abc.opcode:BLOCKHASH object>, 65: <abc.opcode:COINBASE object>, 66: <abc.opcode:TIMESTAMP object>, 67: <abc.opcode:NUMBER object>, 68: <abc.opcode:DIFFICULTY object>, 69: <abc.opcode:GASLIMIT object>, 80: <abc.opcode:POP object>, 81: <abc.opcode:MLOAD object>, 82: <abc.opcode:MSTORE object>, 83: <abc.opcode:MSTORE8 object>, 84: <abc.opcode:SLOAD object>, 85: <abc.opcode:SSTORE object>, 86: <abc.opcode:JUMP object>, 87: <abc.opcode:JUMPI object>, 88: <abc.opcode:PC object>, 89: <abc.opcode:MSIZE object>, 90: <abc.opcode:GAS object>, 91: <abc.opcode:JUMPDEST object>, 96: <abc.opcode:PUSH1 object>, 97: <abc.opcode:PUSH2 object>, 98: <abc.opcode:PUSH3 object>, 99: <abc.opcode:PUSH4 object>, 100: <abc.opcode:PUSH5 object>, 101: <abc.opcode:PUSH6 object>, 102: <abc.opcode:PUSH7 object>, 103: <abc.opcode:PUSH8 object>, 104: <abc.opcode:PUSH9 object>, 105: <abc.opcode:PUSH10 object>, 106: <abc.opcode:PUSH11 object>, 107: <abc.opcode:PUSH12 object>, 108: <abc.opcode:PUSH13 object>, 109: <abc.opcode:PUSH14 object>, 110: <abc.opcode:PUSH15 object>, 111: <abc.opcode:PUSH16 object>, 112: <abc.opcode:PUSH17 object>, 113: <abc.opcode:PUSH18 object>, 114: <abc.opcode:PUSH19 object>, 115: <abc.opcode:PUSH20 object>, 116: <abc.opcode:PUSH21 object>, 117: <abc.opcode:PUSH22 object>, 118: <abc.opcode:PUSH23 object>, 119: <abc.opcode:PUSH24 object>, 120: <abc.opcode:PUSH25 object>, 121: <abc.opcode:PUSH26 object>, 122: <abc.opcode:PUSH27 object>, 123: <abc.opcode:PUSH28 object>, 124: <abc.opcode:PUSH29 object>, 125: <abc.opcode:PUSH30 object>, 126: <abc.opcode:PUSH31 object>, 127: <abc.opcode:PUSH32 object>, 128: <abc.opcode:DUP1 object>, 129: <abc.opcode:DUP2 object>, 130: <abc.opcode:DUP3 object>, 131: <abc.opcode:DUP4 object>, 132: <abc.opcode:DUP5 object>, 133: <abc.opcode:DUP6 object>, 134: <abc.opcode:DUP7 object>, 135: <abc.opcode:DUP8 object>, 136: <abc.opcode:DUP9 object>, 137: <abc.opcode:DUP10 object>, 138: <abc.opcode:DUP11 object>, 139: <abc.opcode:DUP12 object>, 140: <abc.opcode:DUP13 object>, 141: <abc.opcode:DUP14 object>, 142: <abc.opcode:DUP15 object>, 143: <abc.opcode:DUP16 object>, 144: <abc.opcode:SWAP1 object>, 145: <abc.opcode:SWAP2 object>, 146: <abc.opcode:SWAP3 object>, 147: <abc.opcode:SWAP4 object>, 148: <abc.opcode:SWAP5 object>, 149: <abc.opcode:SWAP6 object>, 150: <abc.opcode:SWAP7 object>, 151: <abc.opcode:SWAP8 object>, 152: <abc.opcode:SWAP9 object>, 153: <abc.opcode:SWAP10 object>, 154: <abc.opcode:SWAP11 object>, 155: <abc.opcode:SWAP12 object>, 156: <abc.opcode:SWAP13 object>, 157: <abc.opcode:SWAP14 object>, 158: <abc.opcode:SWAP15 object>, 159: <abc.opcode:SWAP16 object>, 160: <abc.opcode:LOG0 object>, 161: <abc.opcode:LOG1 object>, 162: <abc.opcode:LOG2 object>, 163: <abc.opcode:LOG3 object>, 164: <abc.opcode:LOG4 object>, 240: <abc.opcode:CREATE object>, 241: <abc.opcode:CALL object>, 242: <abc.opcode:CALLCODE object>, 243: <abc.opcode:RETURN object>, 244: <abc.opcode:DELEGATECALL object>, 255: <abc.opcode:SELFDESTRUCT object>}¶
-
classmethod
TangerineWhistle¶
TangerineWhistleVM¶
TangerineWhistleState¶
-
class
eth.vm.forks.tangerine_whistle.state.
TangerineWhistleState
(db: eth.abc.AtomicDatabaseAPI, execution_context: eth.abc.ExecutionContextAPI, state_root: NewType.<locals>.new_type)¶ -
computation_class
¶ alias of
eth.vm.forks.tangerine_whistle.computation.TangerineWhistleComputation
-
TangerineWhistleComputation¶
-
class
eth.vm.forks.tangerine_whistle.computation.
TangerineWhistleComputation
(state: eth.abc.StateAPI, message: eth.abc.MessageAPI, transaction_context: eth.abc.TransactionContextAPI)¶ A class for all execution message computations in the
TangerineWhistle
fork. Inherits fromHomesteadComputation
-
opcodes
= {0: <abc.opcode:STOP object>, 1: <abc.opcode:ADD object>, 2: <abc.opcode:MUL object>, 3: <abc.opcode:SUB object>, 4: <abc.opcode:DIV object>, 5: <abc.opcode:SDIV object>, 6: <abc.opcode:MOD object>, 7: <abc.opcode:SMOD object>, 8: <abc.opcode:ADDMOD object>, 9: <abc.opcode:MULMOD object>, 10: <abc.opcode:EXP object>, 11: <abc.opcode:SIGNEXTEND object>, 16: <abc.opcode:LT object>, 17: <abc.opcode:GT object>, 18: <abc.opcode:SLT object>, 19: <abc.opcode:SGT object>, 20: <abc.opcode:EQ object>, 21: <abc.opcode:ISZERO object>, 22: <abc.opcode:AND object>, 23: <abc.opcode:OR object>, 24: <abc.opcode:XOR object>, 25: <abc.opcode:NOT object>, 26: <abc.opcode:BYTE object>, 32: <abc.opcode:SHA3 object>, 48: <abc.opcode:ADDRESS object>, 49: <abc.opcode:BALANCE object>, 50: <abc.opcode:ORIGIN object>, 51: <abc.opcode:CALLER object>, 52: <abc.opcode:CALLVALUE object>, 53: <abc.opcode:CALLDATALOAD object>, 54: <abc.opcode:CALLDATASIZE object>, 55: <abc.opcode:CALLDATACOPY object>, 56: <abc.opcode:CODESIZE object>, 57: <abc.opcode:CODECOPY object>, 58: <abc.opcode:GASPRICE object>, 59: <abc.opcode:EXTCODESIZE object>, 60: <abc.opcode:EXTCODECOPY object>, 64: <abc.opcode:BLOCKHASH object>, 65: <abc.opcode:COINBASE object>, 66: <abc.opcode:TIMESTAMP object>, 67: <abc.opcode:NUMBER object>, 68: <abc.opcode:DIFFICULTY object>, 69: <abc.opcode:GASLIMIT object>, 80: <abc.opcode:POP object>, 81: <abc.opcode:MLOAD object>, 82: <abc.opcode:MSTORE object>, 83: <abc.opcode:MSTORE8 object>, 84: <abc.opcode:SLOAD object>, 85: <abc.opcode:SSTORE object>, 86: <abc.opcode:JUMP object>, 87: <abc.opcode:JUMPI object>, 88: <abc.opcode:PC object>, 89: <abc.opcode:MSIZE object>, 90: <abc.opcode:GAS object>, 91: <abc.opcode:JUMPDEST object>, 96: <abc.opcode:PUSH1 object>, 97: <abc.opcode:PUSH2 object>, 98: <abc.opcode:PUSH3 object>, 99: <abc.opcode:PUSH4 object>, 100: <abc.opcode:PUSH5 object>, 101: <abc.opcode:PUSH6 object>, 102: <abc.opcode:PUSH7 object>, 103: <abc.opcode:PUSH8 object>, 104: <abc.opcode:PUSH9 object>, 105: <abc.opcode:PUSH10 object>, 106: <abc.opcode:PUSH11 object>, 107: <abc.opcode:PUSH12 object>, 108: <abc.opcode:PUSH13 object>, 109: <abc.opcode:PUSH14 object>, 110: <abc.opcode:PUSH15 object>, 111: <abc.opcode:PUSH16 object>, 112: <abc.opcode:PUSH17 object>, 113: <abc.opcode:PUSH18 object>, 114: <abc.opcode:PUSH19 object>, 115: <abc.opcode:PUSH20 object>, 116: <abc.opcode:PUSH21 object>, 117: <abc.opcode:PUSH22 object>, 118: <abc.opcode:PUSH23 object>, 119: <abc.opcode:PUSH24 object>, 120: <abc.opcode:PUSH25 object>, 121: <abc.opcode:PUSH26 object>, 122: <abc.opcode:PUSH27 object>, 123: <abc.opcode:PUSH28 object>, 124: <abc.opcode:PUSH29 object>, 125: <abc.opcode:PUSH30 object>, 126: <abc.opcode:PUSH31 object>, 127: <abc.opcode:PUSH32 object>, 128: <abc.opcode:DUP1 object>, 129: <abc.opcode:DUP2 object>, 130: <abc.opcode:DUP3 object>, 131: <abc.opcode:DUP4 object>, 132: <abc.opcode:DUP5 object>, 133: <abc.opcode:DUP6 object>, 134: <abc.opcode:DUP7 object>, 135: <abc.opcode:DUP8 object>, 136: <abc.opcode:DUP9 object>, 137: <abc.opcode:DUP10 object>, 138: <abc.opcode:DUP11 object>, 139: <abc.opcode:DUP12 object>, 140: <abc.opcode:DUP13 object>, 141: <abc.opcode:DUP14 object>, 142: <abc.opcode:DUP15 object>, 143: <abc.opcode:DUP16 object>, 144: <abc.opcode:SWAP1 object>, 145: <abc.opcode:SWAP2 object>, 146: <abc.opcode:SWAP3 object>, 147: <abc.opcode:SWAP4 object>, 148: <abc.opcode:SWAP5 object>, 149: <abc.opcode:SWAP6 object>, 150: <abc.opcode:SWAP7 object>, 151: <abc.opcode:SWAP8 object>, 152: <abc.opcode:SWAP9 object>, 153: <abc.opcode:SWAP10 object>, 154: <abc.opcode:SWAP11 object>, 155: <abc.opcode:SWAP12 object>, 156: <abc.opcode:SWAP13 object>, 157: <abc.opcode:SWAP14 object>, 158: <abc.opcode:SWAP15 object>, 159: <abc.opcode:SWAP16 object>, 160: <abc.opcode:LOG0 object>, 161: <abc.opcode:LOG1 object>, 162: <abc.opcode:LOG2 object>, 163: <abc.opcode:LOG3 object>, 164: <abc.opcode:LOG4 object>, 240: <abc.opcode:CREATE object>, 241: <abc.opcode:CALL object>, 242: <abc.opcode:CALLCODE object>, 243: <abc.opcode:RETURN object>, 244: <abc.opcode:DELEGATECALL object>, 255: <abc.opcode:SELFDESTRUCT object>}¶
-
SpuriousDragon¶
SpuriousDragonVM¶
-
class
eth.vm.forks.spurious_dragon.
SpuriousDragonVM
(header: eth.abc.BlockHeaderAPI, chaindb: eth.abc.ChainDatabaseAPI, chain_context: eth.abc.ChainContextAPI, consensus_context: eth.abc.ConsensusContextAPI)¶ -
block_class
¶ alias of
eth.vm.forks.spurious_dragon.blocks.SpuriousDragonBlock
-
fork
= 'spurious-dragon'¶
-
SpuriousDragonState¶
-
class
eth.vm.forks.spurious_dragon.state.
SpuriousDragonState
(db: eth.abc.AtomicDatabaseAPI, execution_context: eth.abc.ExecutionContextAPI, state_root: NewType.<locals>.new_type)¶ -
computation_class
¶ alias of
eth.vm.forks.spurious_dragon.computation.SpuriousDragonComputation
-
transaction_executor_class
¶ alias of
SpuriousDragonTransactionExecutor
-
SpuriousDragonComputation¶
-
class
eth.vm.forks.spurious_dragon.computation.
SpuriousDragonComputation
(state: eth.abc.StateAPI, message: eth.abc.MessageAPI, transaction_context: eth.abc.TransactionContextAPI)¶ A class for all execution message computations in the
SpuriousDragon
fork. Inherits fromHomesteadComputation
-
classmethod
apply_create_message
(state: eth.abc.StateAPI, message: eth.abc.MessageAPI, transaction_context: eth.abc.TransactionContextAPI) → eth.abc.ComputationAPI¶ Execute a VM message to create a new contract. This is where the VM-specific create logic exists.
-
classmethod
validate_contract_code
(contract_code: bytes) → None¶
-
classmethod
validate_create_message
(message: eth.abc.MessageAPI) → None¶ Class method for validating a create message.
-
opcodes
= {0: <abc.opcode:STOP object>, 1: <abc.opcode:ADD object>, 2: <abc.opcode:MUL object>, 3: <abc.opcode:SUB object>, 4: <abc.opcode:DIV object>, 5: <abc.opcode:SDIV object>, 6: <abc.opcode:MOD object>, 7: <abc.opcode:SMOD object>, 8: <abc.opcode:ADDMOD object>, 9: <abc.opcode:MULMOD object>, 10: <abc.opcode:EXP object>, 11: <abc.opcode:SIGNEXTEND object>, 16: <abc.opcode:LT object>, 17: <abc.opcode:GT object>, 18: <abc.opcode:SLT object>, 19: <abc.opcode:SGT object>, 20: <abc.opcode:EQ object>, 21: <abc.opcode:ISZERO object>, 22: <abc.opcode:AND object>, 23: <abc.opcode:OR object>, 24: <abc.opcode:XOR object>, 25: <abc.opcode:NOT object>, 26: <abc.opcode:BYTE object>, 32: <abc.opcode:SHA3 object>, 48: <abc.opcode:ADDRESS object>, 49: <abc.opcode:BALANCE object>, 50: <abc.opcode:ORIGIN object>, 51: <abc.opcode:CALLER object>, 52: <abc.opcode:CALLVALUE object>, 53: <abc.opcode:CALLDATALOAD object>, 54: <abc.opcode:CALLDATASIZE object>, 55: <abc.opcode:CALLDATACOPY object>, 56: <abc.opcode:CODESIZE object>, 57: <abc.opcode:CODECOPY object>, 58: <abc.opcode:GASPRICE object>, 59: <abc.opcode:EXTCODESIZE object>, 60: <abc.opcode:EXTCODECOPY object>, 64: <abc.opcode:BLOCKHASH object>, 65: <abc.opcode:COINBASE object>, 66: <abc.opcode:TIMESTAMP object>, 67: <abc.opcode:NUMBER object>, 68: <abc.opcode:DIFFICULTY object>, 69: <abc.opcode:GASLIMIT object>, 80: <abc.opcode:POP object>, 81: <abc.opcode:MLOAD object>, 82: <abc.opcode:MSTORE object>, 83: <abc.opcode:MSTORE8 object>, 84: <abc.opcode:SLOAD object>, 85: <abc.opcode:SSTORE object>, 86: <abc.opcode:JUMP object>, 87: <abc.opcode:JUMPI object>, 88: <abc.opcode:PC object>, 89: <abc.opcode:MSIZE object>, 90: <abc.opcode:GAS object>, 91: <abc.opcode:JUMPDEST object>, 96: <abc.opcode:PUSH1 object>, 97: <abc.opcode:PUSH2 object>, 98: <abc.opcode:PUSH3 object>, 99: <abc.opcode:PUSH4 object>, 100: <abc.opcode:PUSH5 object>, 101: <abc.opcode:PUSH6 object>, 102: <abc.opcode:PUSH7 object>, 103: <abc.opcode:PUSH8 object>, 104: <abc.opcode:PUSH9 object>, 105: <abc.opcode:PUSH10 object>, 106: <abc.opcode:PUSH11 object>, 107: <abc.opcode:PUSH12 object>, 108: <abc.opcode:PUSH13 object>, 109: <abc.opcode:PUSH14 object>, 110: <abc.opcode:PUSH15 object>, 111: <abc.opcode:PUSH16 object>, 112: <abc.opcode:PUSH17 object>, 113: <abc.opcode:PUSH18 object>, 114: <abc.opcode:PUSH19 object>, 115: <abc.opcode:PUSH20 object>, 116: <abc.opcode:PUSH21 object>, 117: <abc.opcode:PUSH22 object>, 118: <abc.opcode:PUSH23 object>, 119: <abc.opcode:PUSH24 object>, 120: <abc.opcode:PUSH25 object>, 121: <abc.opcode:PUSH26 object>, 122: <abc.opcode:PUSH27 object>, 123: <abc.opcode:PUSH28 object>, 124: <abc.opcode:PUSH29 object>, 125: <abc.opcode:PUSH30 object>, 126: <abc.opcode:PUSH31 object>, 127: <abc.opcode:PUSH32 object>, 128: <abc.opcode:DUP1 object>, 129: <abc.opcode:DUP2 object>, 130: <abc.opcode:DUP3 object>, 131: <abc.opcode:DUP4 object>, 132: <abc.opcode:DUP5 object>, 133: <abc.opcode:DUP6 object>, 134: <abc.opcode:DUP7 object>, 135: <abc.opcode:DUP8 object>, 136: <abc.opcode:DUP9 object>, 137: <abc.opcode:DUP10 object>, 138: <abc.opcode:DUP11 object>, 139: <abc.opcode:DUP12 object>, 140: <abc.opcode:DUP13 object>, 141: <abc.opcode:DUP14 object>, 142: <abc.opcode:DUP15 object>, 143: <abc.opcode:DUP16 object>, 144: <abc.opcode:SWAP1 object>, 145: <abc.opcode:SWAP2 object>, 146: <abc.opcode:SWAP3 object>, 147: <abc.opcode:SWAP4 object>, 148: <abc.opcode:SWAP5 object>, 149: <abc.opcode:SWAP6 object>, 150: <abc.opcode:SWAP7 object>, 151: <abc.opcode:SWAP8 object>, 152: <abc.opcode:SWAP9 object>, 153: <abc.opcode:SWAP10 object>, 154: <abc.opcode:SWAP11 object>, 155: <abc.opcode:SWAP12 object>, 156: <abc.opcode:SWAP13 object>, 157: <abc.opcode:SWAP14 object>, 158: <abc.opcode:SWAP15 object>, 159: <abc.opcode:SWAP16 object>, 160: <abc.opcode:LOG0 object>, 161: <abc.opcode:LOG1 object>, 162: <abc.opcode:LOG2 object>, 163: <abc.opcode:LOG3 object>, 164: <abc.opcode:LOG4 object>, 240: <abc.opcode:CREATE object>, 241: <abc.opcode:CALL object>, 242: <abc.opcode:CALLCODE object>, 243: <abc.opcode:RETURN object>, 244: <abc.opcode:DELEGATECALL object>, 255: <abc.opcode:SELFDESTRUCT object>}¶
-
classmethod
Byzantium¶
ByzantiumVM¶
-
class
eth.vm.forks.byzantium.
ByzantiumVM
(header: eth.abc.BlockHeaderAPI, chaindb: eth.abc.ChainDatabaseAPI, chain_context: eth.abc.ChainContextAPI, consensus_context: eth.abc.ConsensusContextAPI)¶ -
block_class
¶ alias of
eth.vm.forks.byzantium.blocks.ByzantiumBlock
-
add_receipt_to_header
(old_header: eth.abc.BlockHeaderAPI, receipt: eth.abc.ReceiptAPI) → eth.abc.BlockHeaderAPI¶ Apply the receipt to the old header, and return the resulting header. This may have storage-related side-effects. For example, pre-Byzantium, the state root hash is included in the receipt, and so must be stored into the database.
-
static
get_block_reward
() → int¶ Return the amount in wei that should be given to a miner as a reward for this block.
Note
This is an abstract method that must be implemented in subclasses
-
classmethod
make_receipt
(base_header: eth.abc.BlockHeaderAPI, transaction: eth.abc.SignedTransactionAPI, computation: eth.abc.ComputationAPI, state: eth.abc.StateAPI) → eth.abc.ReceiptAPI¶ Generate the receipt resulting from applying the transaction.
Parameters: - base_header – the header of the block before the transaction was applied.
- transaction – the transaction used to generate the receipt
- computation – the result of running the transaction computation
- state – the resulting state, after executing the computation
Returns: receipt
-
classmethod
validate_receipt
(receipt: eth.abc.ReceiptAPI) → None¶ Validate the given
receipt
.
-
compute_difficulty
¶
-
configure_header
¶
-
create_header_from_parent
¶
-
fork
= 'byzantium'¶
-
get_uncle_reward
¶
-
ByzantiumState¶
-
class
eth.vm.forks.byzantium.state.
ByzantiumState
(db: eth.abc.AtomicDatabaseAPI, execution_context: eth.abc.ExecutionContextAPI, state_root: NewType.<locals>.new_type)¶ -
computation_class
¶ alias of
eth.vm.forks.byzantium.computation.ByzantiumComputation
-
ByzantiumComputation¶
-
class
eth.vm.forks.byzantium.computation.
ByzantiumComputation
(state: eth.abc.StateAPI, message: eth.abc.MessageAPI, transaction_context: eth.abc.TransactionContextAPI)¶ A class for all execution message computations in the
Byzantium
fork. Inherits fromSpuriousDragonComputation
-
opcodes
= {0: <abc.opcode:STOP object>, 1: <abc.opcode:ADD object>, 2: <abc.opcode:MUL object>, 3: <abc.opcode:SUB object>, 4: <abc.opcode:DIV object>, 5: <abc.opcode:SDIV object>, 6: <abc.opcode:MOD object>, 7: <abc.opcode:SMOD object>, 8: <abc.opcode:ADDMOD object>, 9: <abc.opcode:MULMOD object>, 10: <abc.opcode:EXP object>, 11: <abc.opcode:SIGNEXTEND object>, 16: <abc.opcode:LT object>, 17: <abc.opcode:GT object>, 18: <abc.opcode:SLT object>, 19: <abc.opcode:SGT object>, 20: <abc.opcode:EQ object>, 21: <abc.opcode:ISZERO object>, 22: <abc.opcode:AND object>, 23: <abc.opcode:OR object>, 24: <abc.opcode:XOR object>, 25: <abc.opcode:NOT object>, 26: <abc.opcode:BYTE object>, 32: <abc.opcode:SHA3 object>, 48: <abc.opcode:ADDRESS object>, 49: <abc.opcode:BALANCE object>, 50: <abc.opcode:ORIGIN object>, 51: <abc.opcode:CALLER object>, 52: <abc.opcode:CALLVALUE object>, 53: <abc.opcode:CALLDATALOAD object>, 54: <abc.opcode:CALLDATASIZE object>, 55: <abc.opcode:CALLDATACOPY object>, 56: <abc.opcode:CODESIZE object>, 57: <abc.opcode:CODECOPY object>, 58: <abc.opcode:GASPRICE object>, 59: <abc.opcode:EXTCODESIZE object>, 60: <abc.opcode:EXTCODECOPY object>, 61: <abc.opcode:RETURNDATASIZE object>, 62: <abc.opcode:RETURNDATACOPY object>, 64: <abc.opcode:BLOCKHASH object>, 65: <abc.opcode:COINBASE object>, 66: <abc.opcode:TIMESTAMP object>, 67: <abc.opcode:NUMBER object>, 68: <abc.opcode:DIFFICULTY object>, 69: <abc.opcode:GASLIMIT object>, 80: <abc.opcode:POP object>, 81: <abc.opcode:MLOAD object>, 82: <abc.opcode:MSTORE object>, 83: <abc.opcode:MSTORE8 object>, 84: <abc.opcode:SLOAD object>, 85: <abc.opcode:SSTORE object>, 86: <abc.opcode:JUMP object>, 87: <abc.opcode:JUMPI object>, 88: <abc.opcode:PC object>, 89: <abc.opcode:MSIZE object>, 90: <abc.opcode:GAS object>, 91: <abc.opcode:JUMPDEST object>, 96: <abc.opcode:PUSH1 object>, 97: <abc.opcode:PUSH2 object>, 98: <abc.opcode:PUSH3 object>, 99: <abc.opcode:PUSH4 object>, 100: <abc.opcode:PUSH5 object>, 101: <abc.opcode:PUSH6 object>, 102: <abc.opcode:PUSH7 object>, 103: <abc.opcode:PUSH8 object>, 104: <abc.opcode:PUSH9 object>, 105: <abc.opcode:PUSH10 object>, 106: <abc.opcode:PUSH11 object>, 107: <abc.opcode:PUSH12 object>, 108: <abc.opcode:PUSH13 object>, 109: <abc.opcode:PUSH14 object>, 110: <abc.opcode:PUSH15 object>, 111: <abc.opcode:PUSH16 object>, 112: <abc.opcode:PUSH17 object>, 113: <abc.opcode:PUSH18 object>, 114: <abc.opcode:PUSH19 object>, 115: <abc.opcode:PUSH20 object>, 116: <abc.opcode:PUSH21 object>, 117: <abc.opcode:PUSH22 object>, 118: <abc.opcode:PUSH23 object>, 119: <abc.opcode:PUSH24 object>, 120: <abc.opcode:PUSH25 object>, 121: <abc.opcode:PUSH26 object>, 122: <abc.opcode:PUSH27 object>, 123: <abc.opcode:PUSH28 object>, 124: <abc.opcode:PUSH29 object>, 125: <abc.opcode:PUSH30 object>, 126: <abc.opcode:PUSH31 object>, 127: <abc.opcode:PUSH32 object>, 128: <abc.opcode:DUP1 object>, 129: <abc.opcode:DUP2 object>, 130: <abc.opcode:DUP3 object>, 131: <abc.opcode:DUP4 object>, 132: <abc.opcode:DUP5 object>, 133: <abc.opcode:DUP6 object>, 134: <abc.opcode:DUP7 object>, 135: <abc.opcode:DUP8 object>, 136: <abc.opcode:DUP9 object>, 137: <abc.opcode:DUP10 object>, 138: <abc.opcode:DUP11 object>, 139: <abc.opcode:DUP12 object>, 140: <abc.opcode:DUP13 object>, 141: <abc.opcode:DUP14 object>, 142: <abc.opcode:DUP15 object>, 143: <abc.opcode:DUP16 object>, 144: <abc.opcode:SWAP1 object>, 145: <abc.opcode:SWAP2 object>, 146: <abc.opcode:SWAP3 object>, 147: <abc.opcode:SWAP4 object>, 148: <abc.opcode:SWAP5 object>, 149: <abc.opcode:SWAP6 object>, 150: <abc.opcode:SWAP7 object>, 151: <abc.opcode:SWAP8 object>, 152: <abc.opcode:SWAP9 object>, 153: <abc.opcode:SWAP10 object>, 154: <abc.opcode:SWAP11 object>, 155: <abc.opcode:SWAP12 object>, 156: <abc.opcode:SWAP13 object>, 157: <abc.opcode:SWAP14 object>, 158: <abc.opcode:SWAP15 object>, 159: <abc.opcode:SWAP16 object>, 160: <abc.opcode:LOG0 object>, 161: <abc.opcode:LOG1 object>, 162: <abc.opcode:LOG2 object>, 163: <abc.opcode:LOG3 object>, 164: <abc.opcode:LOG4 object>, 240: <abc.opcode:CREATE object>, 241: <abc.opcode:CALL object>, 242: <abc.opcode:CALLCODE object>, 243: <abc.opcode:RETURN object>, 244: <abc.opcode:DELEGATECALL object>, 250: <abc.opcode:STATICCALL object>, 253: <abc.opcode:REVERT object>, 255: <abc.opcode:SELFDESTRUCT object>}¶
-
Constantinople¶
ConstantinopleVM¶
-
class
eth.vm.forks.constantinople.
ConstantinopleVM
(header: eth.abc.BlockHeaderAPI, chaindb: eth.abc.ChainDatabaseAPI, chain_context: eth.abc.ChainContextAPI, consensus_context: eth.abc.ConsensusContextAPI)¶ -
block_class
¶ alias of
eth.vm.forks.constantinople.blocks.ConstantinopleBlock
-
static
get_block_reward
() → int¶ Return the amount in wei that should be given to a miner as a reward for this block.
Note
This is an abstract method that must be implemented in subclasses
-
compute_difficulty
¶
-
configure_header
¶
-
create_header_from_parent
¶
-
fork
= 'constantinople'¶
-
get_uncle_reward
¶
-
ConstantinopleState¶
-
class
eth.vm.forks.constantinople.state.
ConstantinopleState
(db: eth.abc.AtomicDatabaseAPI, execution_context: eth.abc.ExecutionContextAPI, state_root: NewType.<locals>.new_type)¶ -
computation_class
¶ alias of
eth.vm.forks.constantinople.computation.ConstantinopleComputation
-
ConstantinopleComputation¶
-
class
eth.vm.forks.constantinople.computation.
ConstantinopleComputation
(state: eth.abc.StateAPI, message: eth.abc.MessageAPI, transaction_context: eth.abc.TransactionContextAPI)¶ A class for all execution message computations in the
Constantinople
fork. Inherits fromByzantiumComputation
-
opcodes
= {0: <abc.opcode:STOP object>, 1: <abc.opcode:ADD object>, 2: <abc.opcode:MUL object>, 3: <abc.opcode:SUB object>, 4: <abc.opcode:DIV object>, 5: <abc.opcode:SDIV object>, 6: <abc.opcode:MOD object>, 7: <abc.opcode:SMOD object>, 8: <abc.opcode:ADDMOD object>, 9: <abc.opcode:MULMOD object>, 10: <abc.opcode:EXP object>, 11: <abc.opcode:SIGNEXTEND object>, 16: <abc.opcode:LT object>, 17: <abc.opcode:GT object>, 18: <abc.opcode:SLT object>, 19: <abc.opcode:SGT object>, 20: <abc.opcode:EQ object>, 21: <abc.opcode:ISZERO object>, 22: <abc.opcode:AND object>, 23: <abc.opcode:OR object>, 24: <abc.opcode:XOR object>, 25: <abc.opcode:NOT object>, 26: <abc.opcode:BYTE object>, 27: <abc.opcode:SHL object>, 28: <abc.opcode:SHR object>, 29: <abc.opcode:SAR object>, 32: <abc.opcode:SHA3 object>, 48: <abc.opcode:ADDRESS object>, 49: <abc.opcode:BALANCE object>, 50: <abc.opcode:ORIGIN object>, 51: <abc.opcode:CALLER object>, 52: <abc.opcode:CALLVALUE object>, 53: <abc.opcode:CALLDATALOAD object>, 54: <abc.opcode:CALLDATASIZE object>, 55: <abc.opcode:CALLDATACOPY object>, 56: <abc.opcode:CODESIZE object>, 57: <abc.opcode:CODECOPY object>, 58: <abc.opcode:GASPRICE object>, 59: <abc.opcode:EXTCODESIZE object>, 60: <abc.opcode:EXTCODECOPY object>, 61: <abc.opcode:RETURNDATASIZE object>, 62: <abc.opcode:RETURNDATACOPY object>, 63: <abc.opcode:EXTCODEHASH object>, 64: <abc.opcode:BLOCKHASH object>, 65: <abc.opcode:COINBASE object>, 66: <abc.opcode:TIMESTAMP object>, 67: <abc.opcode:NUMBER object>, 68: <abc.opcode:DIFFICULTY object>, 69: <abc.opcode:GASLIMIT object>, 80: <abc.opcode:POP object>, 81: <abc.opcode:MLOAD object>, 82: <abc.opcode:MSTORE object>, 83: <abc.opcode:MSTORE8 object>, 84: <abc.opcode:SLOAD object>, 85: <abc.opcode:SSTORE object>, 86: <abc.opcode:JUMP object>, 87: <abc.opcode:JUMPI object>, 88: <abc.opcode:PC object>, 89: <abc.opcode:MSIZE object>, 90: <abc.opcode:GAS object>, 91: <abc.opcode:JUMPDEST object>, 96: <abc.opcode:PUSH1 object>, 97: <abc.opcode:PUSH2 object>, 98: <abc.opcode:PUSH3 object>, 99: <abc.opcode:PUSH4 object>, 100: <abc.opcode:PUSH5 object>, 101: <abc.opcode:PUSH6 object>, 102: <abc.opcode:PUSH7 object>, 103: <abc.opcode:PUSH8 object>, 104: <abc.opcode:PUSH9 object>, 105: <abc.opcode:PUSH10 object>, 106: <abc.opcode:PUSH11 object>, 107: <abc.opcode:PUSH12 object>, 108: <abc.opcode:PUSH13 object>, 109: <abc.opcode:PUSH14 object>, 110: <abc.opcode:PUSH15 object>, 111: <abc.opcode:PUSH16 object>, 112: <abc.opcode:PUSH17 object>, 113: <abc.opcode:PUSH18 object>, 114: <abc.opcode:PUSH19 object>, 115: <abc.opcode:PUSH20 object>, 116: <abc.opcode:PUSH21 object>, 117: <abc.opcode:PUSH22 object>, 118: <abc.opcode:PUSH23 object>, 119: <abc.opcode:PUSH24 object>, 120: <abc.opcode:PUSH25 object>, 121: <abc.opcode:PUSH26 object>, 122: <abc.opcode:PUSH27 object>, 123: <abc.opcode:PUSH28 object>, 124: <abc.opcode:PUSH29 object>, 125: <abc.opcode:PUSH30 object>, 126: <abc.opcode:PUSH31 object>, 127: <abc.opcode:PUSH32 object>, 128: <abc.opcode:DUP1 object>, 129: <abc.opcode:DUP2 object>, 130: <abc.opcode:DUP3 object>, 131: <abc.opcode:DUP4 object>, 132: <abc.opcode:DUP5 object>, 133: <abc.opcode:DUP6 object>, 134: <abc.opcode:DUP7 object>, 135: <abc.opcode:DUP8 object>, 136: <abc.opcode:DUP9 object>, 137: <abc.opcode:DUP10 object>, 138: <abc.opcode:DUP11 object>, 139: <abc.opcode:DUP12 object>, 140: <abc.opcode:DUP13 object>, 141: <abc.opcode:DUP14 object>, 142: <abc.opcode:DUP15 object>, 143: <abc.opcode:DUP16 object>, 144: <abc.opcode:SWAP1 object>, 145: <abc.opcode:SWAP2 object>, 146: <abc.opcode:SWAP3 object>, 147: <abc.opcode:SWAP4 object>, 148: <abc.opcode:SWAP5 object>, 149: <abc.opcode:SWAP6 object>, 150: <abc.opcode:SWAP7 object>, 151: <abc.opcode:SWAP8 object>, 152: <abc.opcode:SWAP9 object>, 153: <abc.opcode:SWAP10 object>, 154: <abc.opcode:SWAP11 object>, 155: <abc.opcode:SWAP12 object>, 156: <abc.opcode:SWAP13 object>, 157: <abc.opcode:SWAP14 object>, 158: <abc.opcode:SWAP15 object>, 159: <abc.opcode:SWAP16 object>, 160: <abc.opcode:LOG0 object>, 161: <abc.opcode:LOG1 object>, 162: <abc.opcode:LOG2 object>, 163: <abc.opcode:LOG3 object>, 164: <abc.opcode:LOG4 object>, 240: <abc.opcode:CREATE object>, 241: <abc.opcode:CALL object>, 242: <abc.opcode:CALLCODE object>, 243: <abc.opcode:RETURN object>, 244: <abc.opcode:DELEGATECALL object>, 245: <abc.opcode:CREATE2 object>, 250: <abc.opcode:STATICCALL object>, 253: <abc.opcode:REVERT object>, 255: <abc.opcode:SELFDESTRUCT object>}¶
-
Petersburg¶
PetersburgVM¶
-
class
eth.vm.forks.petersburg.
PetersburgVM
(header: eth.abc.BlockHeaderAPI, chaindb: eth.abc.ChainDatabaseAPI, chain_context: eth.abc.ChainContextAPI, consensus_context: eth.abc.ConsensusContextAPI)¶ -
block_class
¶ alias of
eth.vm.forks.petersburg.blocks.PetersburgBlock
-
static
get_block_reward
() → int¶ Return the amount in wei that should be given to a miner as a reward for this block.
Note
This is an abstract method that must be implemented in subclasses
-
compute_difficulty
¶
-
configure_header
¶
-
create_header_from_parent
¶
-
fork
= 'petersburg'¶
-
get_uncle_reward
¶
-
PetersburgState¶
-
class
eth.vm.forks.petersburg.state.
PetersburgState
(db: eth.abc.AtomicDatabaseAPI, execution_context: eth.abc.ExecutionContextAPI, state_root: NewType.<locals>.new_type)¶ -
computation_class
¶ alias of
eth.vm.forks.petersburg.computation.PetersburgComputation
-
PetersburgComputation¶
-
class
eth.vm.forks.petersburg.computation.
PetersburgComputation
(state: eth.abc.StateAPI, message: eth.abc.MessageAPI, transaction_context: eth.abc.TransactionContextAPI)¶ A class for all execution message computations in the
Petersburg
fork. Inherits fromByzantiumComputation
-
opcodes
= {0: <abc.opcode:STOP object>, 1: <abc.opcode:ADD object>, 2: <abc.opcode:MUL object>, 3: <abc.opcode:SUB object>, 4: <abc.opcode:DIV object>, 5: <abc.opcode:SDIV object>, 6: <abc.opcode:MOD object>, 7: <abc.opcode:SMOD object>, 8: <abc.opcode:ADDMOD object>, 9: <abc.opcode:MULMOD object>, 10: <abc.opcode:EXP object>, 11: <abc.opcode:SIGNEXTEND object>, 16: <abc.opcode:LT object>, 17: <abc.opcode:GT object>, 18: <abc.opcode:SLT object>, 19: <abc.opcode:SGT object>, 20: <abc.opcode:EQ object>, 21: <abc.opcode:ISZERO object>, 22: <abc.opcode:AND object>, 23: <abc.opcode:OR object>, 24: <abc.opcode:XOR object>, 25: <abc.opcode:NOT object>, 26: <abc.opcode:BYTE object>, 27: <abc.opcode:SHL object>, 28: <abc.opcode:SHR object>, 29: <abc.opcode:SAR object>, 32: <abc.opcode:SHA3 object>, 48: <abc.opcode:ADDRESS object>, 49: <abc.opcode:BALANCE object>, 50: <abc.opcode:ORIGIN object>, 51: <abc.opcode:CALLER object>, 52: <abc.opcode:CALLVALUE object>, 53: <abc.opcode:CALLDATALOAD object>, 54: <abc.opcode:CALLDATASIZE object>, 55: <abc.opcode:CALLDATACOPY object>, 56: <abc.opcode:CODESIZE object>, 57: <abc.opcode:CODECOPY object>, 58: <abc.opcode:GASPRICE object>, 59: <abc.opcode:EXTCODESIZE object>, 60: <abc.opcode:EXTCODECOPY object>, 61: <abc.opcode:RETURNDATASIZE object>, 62: <abc.opcode:RETURNDATACOPY object>, 63: <abc.opcode:EXTCODEHASH object>, 64: <abc.opcode:BLOCKHASH object>, 65: <abc.opcode:COINBASE object>, 66: <abc.opcode:TIMESTAMP object>, 67: <abc.opcode:NUMBER object>, 68: <abc.opcode:DIFFICULTY object>, 69: <abc.opcode:GASLIMIT object>, 80: <abc.opcode:POP object>, 81: <abc.opcode:MLOAD object>, 82: <abc.opcode:MSTORE object>, 83: <abc.opcode:MSTORE8 object>, 84: <abc.opcode:SLOAD object>, 85: <abc.opcode:SSTORE object>, 86: <abc.opcode:JUMP object>, 87: <abc.opcode:JUMPI object>, 88: <abc.opcode:PC object>, 89: <abc.opcode:MSIZE object>, 90: <abc.opcode:GAS object>, 91: <abc.opcode:JUMPDEST object>, 96: <abc.opcode:PUSH1 object>, 97: <abc.opcode:PUSH2 object>, 98: <abc.opcode:PUSH3 object>, 99: <abc.opcode:PUSH4 object>, 100: <abc.opcode:PUSH5 object>, 101: <abc.opcode:PUSH6 object>, 102: <abc.opcode:PUSH7 object>, 103: <abc.opcode:PUSH8 object>, 104: <abc.opcode:PUSH9 object>, 105: <abc.opcode:PUSH10 object>, 106: <abc.opcode:PUSH11 object>, 107: <abc.opcode:PUSH12 object>, 108: <abc.opcode:PUSH13 object>, 109: <abc.opcode:PUSH14 object>, 110: <abc.opcode:PUSH15 object>, 111: <abc.opcode:PUSH16 object>, 112: <abc.opcode:PUSH17 object>, 113: <abc.opcode:PUSH18 object>, 114: <abc.opcode:PUSH19 object>, 115: <abc.opcode:PUSH20 object>, 116: <abc.opcode:PUSH21 object>, 117: <abc.opcode:PUSH22 object>, 118: <abc.opcode:PUSH23 object>, 119: <abc.opcode:PUSH24 object>, 120: <abc.opcode:PUSH25 object>, 121: <abc.opcode:PUSH26 object>, 122: <abc.opcode:PUSH27 object>, 123: <abc.opcode:PUSH28 object>, 124: <abc.opcode:PUSH29 object>, 125: <abc.opcode:PUSH30 object>, 126: <abc.opcode:PUSH31 object>, 127: <abc.opcode:PUSH32 object>, 128: <abc.opcode:DUP1 object>, 129: <abc.opcode:DUP2 object>, 130: <abc.opcode:DUP3 object>, 131: <abc.opcode:DUP4 object>, 132: <abc.opcode:DUP5 object>, 133: <abc.opcode:DUP6 object>, 134: <abc.opcode:DUP7 object>, 135: <abc.opcode:DUP8 object>, 136: <abc.opcode:DUP9 object>, 137: <abc.opcode:DUP10 object>, 138: <abc.opcode:DUP11 object>, 139: <abc.opcode:DUP12 object>, 140: <abc.opcode:DUP13 object>, 141: <abc.opcode:DUP14 object>, 142: <abc.opcode:DUP15 object>, 143: <abc.opcode:DUP16 object>, 144: <abc.opcode:SWAP1 object>, 145: <abc.opcode:SWAP2 object>, 146: <abc.opcode:SWAP3 object>, 147: <abc.opcode:SWAP4 object>, 148: <abc.opcode:SWAP5 object>, 149: <abc.opcode:SWAP6 object>, 150: <abc.opcode:SWAP7 object>, 151: <abc.opcode:SWAP8 object>, 152: <abc.opcode:SWAP9 object>, 153: <abc.opcode:SWAP10 object>, 154: <abc.opcode:SWAP11 object>, 155: <abc.opcode:SWAP12 object>, 156: <abc.opcode:SWAP13 object>, 157: <abc.opcode:SWAP14 object>, 158: <abc.opcode:SWAP15 object>, 159: <abc.opcode:SWAP16 object>, 160: <abc.opcode:LOG0 object>, 161: <abc.opcode:LOG1 object>, 162: <abc.opcode:LOG2 object>, 163: <abc.opcode:LOG3 object>, 164: <abc.opcode:LOG4 object>, 240: <abc.opcode:CREATE object>, 241: <abc.opcode:CALL object>, 242: <abc.opcode:CALLCODE object>, 243: <abc.opcode:RETURN object>, 244: <abc.opcode:DELEGATECALL object>, 245: <abc.opcode:CREATE2 object>, 250: <abc.opcode:STATICCALL object>, 253: <abc.opcode:REVERT object>, 255: <abc.opcode:SELFDESTRUCT object>}¶
-
Istanbul¶
IstanbulVM¶
-
class
eth.vm.forks.istanbul.
IstanbulVM
(header: eth.abc.BlockHeaderAPI, chaindb: eth.abc.ChainDatabaseAPI, chain_context: eth.abc.ChainContextAPI, consensus_context: eth.abc.ConsensusContextAPI)¶ -
block_class
¶ alias of
eth.vm.forks.istanbul.blocks.IstanbulBlock
-
compute_difficulty
¶
-
configure_header
¶
-
create_header_from_parent
¶
-
fork
= 'istanbul'¶
-
IstanbulState¶
-
class
eth.vm.forks.istanbul.state.
IstanbulState
(db: eth.abc.AtomicDatabaseAPI, execution_context: eth.abc.ExecutionContextAPI, state_root: NewType.<locals>.new_type)¶ -
computation_class
¶ alias of
eth.vm.forks.istanbul.computation.IstanbulComputation
-
IstanbulComputation¶
-
class
eth.vm.forks.istanbul.computation.
IstanbulComputation
(state: eth.abc.StateAPI, message: eth.abc.MessageAPI, transaction_context: eth.abc.TransactionContextAPI)¶ A class for all execution message computations in the
Istanbul
fork. Inherits fromPetersburgComputation
-
opcodes
= {0: <abc.opcode:STOP object>, 1: <abc.opcode:ADD object>, 2: <abc.opcode:MUL object>, 3: <abc.opcode:SUB object>, 4: <abc.opcode:DIV object>, 5: <abc.opcode:SDIV object>, 6: <abc.opcode:MOD object>, 7: <abc.opcode:SMOD object>, 8: <abc.opcode:ADDMOD object>, 9: <abc.opcode:MULMOD object>, 10: <abc.opcode:EXP object>, 11: <abc.opcode:SIGNEXTEND object>, 16: <abc.opcode:LT object>, 17: <abc.opcode:GT object>, 18: <abc.opcode:SLT object>, 19: <abc.opcode:SGT object>, 20: <abc.opcode:EQ object>, 21: <abc.opcode:ISZERO object>, 22: <abc.opcode:AND object>, 23: <abc.opcode:OR object>, 24: <abc.opcode:XOR object>, 25: <abc.opcode:NOT object>, 26: <abc.opcode:BYTE object>, 27: <abc.opcode:SHL object>, 28: <abc.opcode:SHR object>, 29: <abc.opcode:SAR object>, 32: <abc.opcode:SHA3 object>, 48: <abc.opcode:ADDRESS object>, 49: <abc.opcode:BALANCE object>, 50: <abc.opcode:ORIGIN object>, 51: <abc.opcode:CALLER object>, 52: <abc.opcode:CALLVALUE object>, 53: <abc.opcode:CALLDATALOAD object>, 54: <abc.opcode:CALLDATASIZE object>, 55: <abc.opcode:CALLDATACOPY object>, 56: <abc.opcode:CODESIZE object>, 57: <abc.opcode:CODECOPY object>, 58: <abc.opcode:GASPRICE object>, 59: <abc.opcode:EXTCODESIZE object>, 60: <abc.opcode:EXTCODECOPY object>, 61: <abc.opcode:RETURNDATASIZE object>, 62: <abc.opcode:RETURNDATACOPY object>, 63: <abc.opcode:EXTCODEHASH object>, 64: <abc.opcode:BLOCKHASH object>, 65: <abc.opcode:COINBASE object>, 66: <abc.opcode:TIMESTAMP object>, 67: <abc.opcode:NUMBER object>, 68: <abc.opcode:DIFFICULTY object>, 69: <abc.opcode:GASLIMIT object>, 70: <abc.opcode:CHAINID object>, 71: <abc.opcode:SELFBALANCE object>, 80: <abc.opcode:POP object>, 81: <abc.opcode:MLOAD object>, 82: <abc.opcode:MSTORE object>, 83: <abc.opcode:MSTORE8 object>, 84: <abc.opcode:SLOAD object>, 85: <abc.opcode:SSTORE object>, 86: <abc.opcode:JUMP object>, 87: <abc.opcode:JUMPI object>, 88: <abc.opcode:PC object>, 89: <abc.opcode:MSIZE object>, 90: <abc.opcode:GAS object>, 91: <abc.opcode:JUMPDEST object>, 96: <abc.opcode:PUSH1 object>, 97: <abc.opcode:PUSH2 object>, 98: <abc.opcode:PUSH3 object>, 99: <abc.opcode:PUSH4 object>, 100: <abc.opcode:PUSH5 object>, 101: <abc.opcode:PUSH6 object>, 102: <abc.opcode:PUSH7 object>, 103: <abc.opcode:PUSH8 object>, 104: <abc.opcode:PUSH9 object>, 105: <abc.opcode:PUSH10 object>, 106: <abc.opcode:PUSH11 object>, 107: <abc.opcode:PUSH12 object>, 108: <abc.opcode:PUSH13 object>, 109: <abc.opcode:PUSH14 object>, 110: <abc.opcode:PUSH15 object>, 111: <abc.opcode:PUSH16 object>, 112: <abc.opcode:PUSH17 object>, 113: <abc.opcode:PUSH18 object>, 114: <abc.opcode:PUSH19 object>, 115: <abc.opcode:PUSH20 object>, 116: <abc.opcode:PUSH21 object>, 117: <abc.opcode:PUSH22 object>, 118: <abc.opcode:PUSH23 object>, 119: <abc.opcode:PUSH24 object>, 120: <abc.opcode:PUSH25 object>, 121: <abc.opcode:PUSH26 object>, 122: <abc.opcode:PUSH27 object>, 123: <abc.opcode:PUSH28 object>, 124: <abc.opcode:PUSH29 object>, 125: <abc.opcode:PUSH30 object>, 126: <abc.opcode:PUSH31 object>, 127: <abc.opcode:PUSH32 object>, 128: <abc.opcode:DUP1 object>, 129: <abc.opcode:DUP2 object>, 130: <abc.opcode:DUP3 object>, 131: <abc.opcode:DUP4 object>, 132: <abc.opcode:DUP5 object>, 133: <abc.opcode:DUP6 object>, 134: <abc.opcode:DUP7 object>, 135: <abc.opcode:DUP8 object>, 136: <abc.opcode:DUP9 object>, 137: <abc.opcode:DUP10 object>, 138: <abc.opcode:DUP11 object>, 139: <abc.opcode:DUP12 object>, 140: <abc.opcode:DUP13 object>, 141: <abc.opcode:DUP14 object>, 142: <abc.opcode:DUP15 object>, 143: <abc.opcode:DUP16 object>, 144: <abc.opcode:SWAP1 object>, 145: <abc.opcode:SWAP2 object>, 146: <abc.opcode:SWAP3 object>, 147: <abc.opcode:SWAP4 object>, 148: <abc.opcode:SWAP5 object>, 149: <abc.opcode:SWAP6 object>, 150: <abc.opcode:SWAP7 object>, 151: <abc.opcode:SWAP8 object>, 152: <abc.opcode:SWAP9 object>, 153: <abc.opcode:SWAP10 object>, 154: <abc.opcode:SWAP11 object>, 155: <abc.opcode:SWAP12 object>, 156: <abc.opcode:SWAP13 object>, 157: <abc.opcode:SWAP14 object>, 158: <abc.opcode:SWAP15 object>, 159: <abc.opcode:SWAP16 object>, 160: <abc.opcode:LOG0 object>, 161: <abc.opcode:LOG1 object>, 162: <abc.opcode:LOG2 object>, 163: <abc.opcode:LOG3 object>, 164: <abc.opcode:LOG4 object>, 240: <abc.opcode:CREATE object>, 241: <abc.opcode:CALL object>, 242: <abc.opcode:CALLCODE object>, 243: <abc.opcode:RETURN object>, 244: <abc.opcode:DELEGATECALL object>, 245: <abc.opcode:CREATE2 object>, 250: <abc.opcode:STATICCALL object>, 253: <abc.opcode:REVERT object>, 255: <abc.opcode:SELFDESTRUCT object>}¶
-
Muir Glacier¶
Submodules¶
eth.vm.forks.muir_glacier.blocks module¶
-
class
eth.vm.forks.muir_glacier.blocks.
MuirGlacierBlock
(header: eth.abc.BlockHeaderAPI, transactions: Sequence[eth.abc.SignedTransactionAPI] = None, uncles: Sequence[eth.abc.BlockHeaderAPI] = None)¶ Bases:
eth.vm.forks.istanbul.blocks.IstanbulBlock
-
transaction_builder
¶ alias of
eth.vm.forks.muir_glacier.transactions.MuirGlacierTransaction
-
header
¶
-
transactions
¶
-
uncles
¶
-
eth.vm.forks.muir_glacier.computation module¶
-
class
eth.vm.forks.muir_glacier.computation.
MuirGlacierComputation
(state: eth.abc.StateAPI, message: eth.abc.MessageAPI, transaction_context: eth.abc.TransactionContextAPI)¶ Bases:
eth.vm.forks.istanbul.computation.IstanbulComputation
A class for all execution message computations in the
MuirGlacier
fork. Inherits fromIstanbulComputation
-
opcodes
= {0: <abc.opcode:STOP object>, 1: <abc.opcode:ADD object>, 2: <abc.opcode:MUL object>, 3: <abc.opcode:SUB object>, 4: <abc.opcode:DIV object>, 5: <abc.opcode:SDIV object>, 6: <abc.opcode:MOD object>, 7: <abc.opcode:SMOD object>, 8: <abc.opcode:ADDMOD object>, 9: <abc.opcode:MULMOD object>, 10: <abc.opcode:EXP object>, 11: <abc.opcode:SIGNEXTEND object>, 16: <abc.opcode:LT object>, 17: <abc.opcode:GT object>, 18: <abc.opcode:SLT object>, 19: <abc.opcode:SGT object>, 20: <abc.opcode:EQ object>, 21: <abc.opcode:ISZERO object>, 22: <abc.opcode:AND object>, 23: <abc.opcode:OR object>, 24: <abc.opcode:XOR object>, 25: <abc.opcode:NOT object>, 26: <abc.opcode:BYTE object>, 27: <abc.opcode:SHL object>, 28: <abc.opcode:SHR object>, 29: <abc.opcode:SAR object>, 32: <abc.opcode:SHA3 object>, 48: <abc.opcode:ADDRESS object>, 49: <abc.opcode:BALANCE object>, 50: <abc.opcode:ORIGIN object>, 51: <abc.opcode:CALLER object>, 52: <abc.opcode:CALLVALUE object>, 53: <abc.opcode:CALLDATALOAD object>, 54: <abc.opcode:CALLDATASIZE object>, 55: <abc.opcode:CALLDATACOPY object>, 56: <abc.opcode:CODESIZE object>, 57: <abc.opcode:CODECOPY object>, 58: <abc.opcode:GASPRICE object>, 59: <abc.opcode:EXTCODESIZE object>, 60: <abc.opcode:EXTCODECOPY object>, 61: <abc.opcode:RETURNDATASIZE object>, 62: <abc.opcode:RETURNDATACOPY object>, 63: <abc.opcode:EXTCODEHASH object>, 64: <abc.opcode:BLOCKHASH object>, 65: <abc.opcode:COINBASE object>, 66: <abc.opcode:TIMESTAMP object>, 67: <abc.opcode:NUMBER object>, 68: <abc.opcode:DIFFICULTY object>, 69: <abc.opcode:GASLIMIT object>, 70: <abc.opcode:CHAINID object>, 71: <abc.opcode:SELFBALANCE object>, 80: <abc.opcode:POP object>, 81: <abc.opcode:MLOAD object>, 82: <abc.opcode:MSTORE object>, 83: <abc.opcode:MSTORE8 object>, 84: <abc.opcode:SLOAD object>, 85: <abc.opcode:SSTORE object>, 86: <abc.opcode:JUMP object>, 87: <abc.opcode:JUMPI object>, 88: <abc.opcode:PC object>, 89: <abc.opcode:MSIZE object>, 90: <abc.opcode:GAS object>, 91: <abc.opcode:JUMPDEST object>, 96: <abc.opcode:PUSH1 object>, 97: <abc.opcode:PUSH2 object>, 98: <abc.opcode:PUSH3 object>, 99: <abc.opcode:PUSH4 object>, 100: <abc.opcode:PUSH5 object>, 101: <abc.opcode:PUSH6 object>, 102: <abc.opcode:PUSH7 object>, 103: <abc.opcode:PUSH8 object>, 104: <abc.opcode:PUSH9 object>, 105: <abc.opcode:PUSH10 object>, 106: <abc.opcode:PUSH11 object>, 107: <abc.opcode:PUSH12 object>, 108: <abc.opcode:PUSH13 object>, 109: <abc.opcode:PUSH14 object>, 110: <abc.opcode:PUSH15 object>, 111: <abc.opcode:PUSH16 object>, 112: <abc.opcode:PUSH17 object>, 113: <abc.opcode:PUSH18 object>, 114: <abc.opcode:PUSH19 object>, 115: <abc.opcode:PUSH20 object>, 116: <abc.opcode:PUSH21 object>, 117: <abc.opcode:PUSH22 object>, 118: <abc.opcode:PUSH23 object>, 119: <abc.opcode:PUSH24 object>, 120: <abc.opcode:PUSH25 object>, 121: <abc.opcode:PUSH26 object>, 122: <abc.opcode:PUSH27 object>, 123: <abc.opcode:PUSH28 object>, 124: <abc.opcode:PUSH29 object>, 125: <abc.opcode:PUSH30 object>, 126: <abc.opcode:PUSH31 object>, 127: <abc.opcode:PUSH32 object>, 128: <abc.opcode:DUP1 object>, 129: <abc.opcode:DUP2 object>, 130: <abc.opcode:DUP3 object>, 131: <abc.opcode:DUP4 object>, 132: <abc.opcode:DUP5 object>, 133: <abc.opcode:DUP6 object>, 134: <abc.opcode:DUP7 object>, 135: <abc.opcode:DUP8 object>, 136: <abc.opcode:DUP9 object>, 137: <abc.opcode:DUP10 object>, 138: <abc.opcode:DUP11 object>, 139: <abc.opcode:DUP12 object>, 140: <abc.opcode:DUP13 object>, 141: <abc.opcode:DUP14 object>, 142: <abc.opcode:DUP15 object>, 143: <abc.opcode:DUP16 object>, 144: <abc.opcode:SWAP1 object>, 145: <abc.opcode:SWAP2 object>, 146: <abc.opcode:SWAP3 object>, 147: <abc.opcode:SWAP4 object>, 148: <abc.opcode:SWAP5 object>, 149: <abc.opcode:SWAP6 object>, 150: <abc.opcode:SWAP7 object>, 151: <abc.opcode:SWAP8 object>, 152: <abc.opcode:SWAP9 object>, 153: <abc.opcode:SWAP10 object>, 154: <abc.opcode:SWAP11 object>, 155: <abc.opcode:SWAP12 object>, 156: <abc.opcode:SWAP13 object>, 157: <abc.opcode:SWAP14 object>, 158: <abc.opcode:SWAP15 object>, 159: <abc.opcode:SWAP16 object>, 160: <abc.opcode:LOG0 object>, 161: <abc.opcode:LOG1 object>, 162: <abc.opcode:LOG2 object>, 163: <abc.opcode:LOG3 object>, 164: <abc.opcode:LOG4 object>, 240: <abc.opcode:CREATE object>, 241: <abc.opcode:CALL object>, 242: <abc.opcode:CALLCODE object>, 243: <abc.opcode:RETURN object>, 244: <abc.opcode:DELEGATECALL object>, 245: <abc.opcode:CREATE2 object>, 250: <abc.opcode:STATICCALL object>, 253: <abc.opcode:REVERT object>, 255: <abc.opcode:SELFDESTRUCT object>}¶
-
eth.vm.forks.muir_glacier.headers module¶
eth.vm.forks.muir_glacier.opcodes module¶
eth.vm.forks.muir_glacier.state module¶
-
class
eth.vm.forks.muir_glacier.state.
MuirGlacierState
(db: eth.abc.AtomicDatabaseAPI, execution_context: eth.abc.ExecutionContextAPI, state_root: NewType.<locals>.new_type)¶ Bases:
eth.vm.forks.istanbul.state.IstanbulState
-
computation_class
¶ alias of
eth.vm.forks.muir_glacier.computation.MuirGlacierComputation
-
eth.vm.forks.muir_glacier.transactions module¶
-
class
eth.vm.forks.muir_glacier.transactions.
MuirGlacierTransaction
(*args, **kwargs)¶ Bases:
eth.vm.forks.istanbul.transactions.IstanbulTransaction
-
classmethod
create_unsigned_transaction
(*, nonce: int, gas_price: int, gas: int, to: NewType.<locals>.new_type, value: int, data: bytes) → eth.vm.forks.muir_glacier.transactions.MuirGlacierUnsignedTransaction¶ Create an unsigned transaction.
-
data
¶
-
gas
¶
-
gas_price
¶
-
nonce
¶
-
r
¶
-
s
¶
-
to
¶
-
v
¶
-
value
¶
-
classmethod
-
class
eth.vm.forks.muir_glacier.transactions.
MuirGlacierUnsignedTransaction
(*args, **kwargs)¶ Bases:
eth.vm.forks.istanbul.transactions.IstanbulUnsignedTransaction
-
as_signed_transaction
(private_key: eth_keys.datatypes.PrivateKey, chain_id: int = None) → eth.vm.forks.muir_glacier.transactions.MuirGlacierTransaction¶ Return a version of this transaction which has been signed using the provided private_key
-
data
¶
-
gas
¶
-
gas_price
¶
-
nonce
¶
-
to
¶
-
value
¶
-
Module contents¶
-
class
eth.vm.forks.muir_glacier.
MuirGlacierVM
(header: eth.abc.BlockHeaderAPI, chaindb: eth.abc.ChainDatabaseAPI, chain_context: eth.abc.ChainContextAPI, consensus_context: eth.abc.ConsensusContextAPI)¶ Bases:
eth.vm.forks.istanbul.IstanbulVM
-
block_class
¶
-
compute_difficulty
¶
-
configure_header
¶
-
create_header_from_parent
¶
-
fork
= 'muir-glacier'¶
-
Berlin¶
Submodules¶
eth.vm.forks.berlin.blocks module¶
-
class
eth.vm.forks.berlin.blocks.
BerlinBlock
(header: eth.abc.BlockHeaderAPI, transactions: Sequence[eth.abc.SignedTransactionAPI] = None, uncles: Sequence[eth.abc.BlockHeaderAPI] = None)¶ Bases:
eth.vm.forks.muir_glacier.blocks.MuirGlacierBlock
-
receipt_builder
¶
-
transaction_builder
¶ alias of
eth.vm.forks.berlin.transactions.BerlinTransactionBuilder
-
header
¶
-
transactions
¶
-
uncles
¶
-
eth.vm.forks.berlin.computation module¶
-
class
eth.vm.forks.berlin.computation.
BerlinComputation
(state: eth.abc.StateAPI, message: eth.abc.MessageAPI, transaction_context: eth.abc.TransactionContextAPI)¶ Bases:
eth.vm.forks.muir_glacier.computation.MuirGlacierComputation
A class for all execution message computations in the
Berlin
fork. Inherits fromMuirGlacierComputation
-
opcodes
= {0: <abc.opcode:STOP object>, 1: <abc.opcode:ADD object>, 2: <abc.opcode:MUL object>, 3: <abc.opcode:SUB object>, 4: <abc.opcode:DIV object>, 5: <abc.opcode:SDIV object>, 6: <abc.opcode:MOD object>, 7: <abc.opcode:SMOD object>, 8: <abc.opcode:ADDMOD object>, 9: <abc.opcode:MULMOD object>, 10: <abc.opcode:EXP object>, 11: <abc.opcode:SIGNEXTEND object>, 16: <abc.opcode:LT object>, 17: <abc.opcode:GT object>, 18: <abc.opcode:SLT object>, 19: <abc.opcode:SGT object>, 20: <abc.opcode:EQ object>, 21: <abc.opcode:ISZERO object>, 22: <abc.opcode:AND object>, 23: <abc.opcode:OR object>, 24: <abc.opcode:XOR object>, 25: <abc.opcode:NOT object>, 26: <abc.opcode:BYTE object>, 27: <abc.opcode:SHL object>, 28: <abc.opcode:SHR object>, 29: <abc.opcode:SAR object>, 32: <abc.opcode:SHA3 object>, 48: <abc.opcode:ADDRESS object>, 49: <abc.opcode:BALANCE object>, 50: <abc.opcode:ORIGIN object>, 51: <abc.opcode:CALLER object>, 52: <abc.opcode:CALLVALUE object>, 53: <abc.opcode:CALLDATALOAD object>, 54: <abc.opcode:CALLDATASIZE object>, 55: <abc.opcode:CALLDATACOPY object>, 56: <abc.opcode:CODESIZE object>, 57: <abc.opcode:CODECOPY object>, 58: <abc.opcode:GASPRICE object>, 59: <abc.opcode:EXTCODESIZE object>, 60: <abc.opcode:EXTCODECOPY object>, 61: <abc.opcode:RETURNDATASIZE object>, 62: <abc.opcode:RETURNDATACOPY object>, 63: <abc.opcode:EXTCODEHASH object>, 64: <abc.opcode:BLOCKHASH object>, 65: <abc.opcode:COINBASE object>, 66: <abc.opcode:TIMESTAMP object>, 67: <abc.opcode:NUMBER object>, 68: <abc.opcode:DIFFICULTY object>, 69: <abc.opcode:GASLIMIT object>, 70: <abc.opcode:CHAINID object>, 71: <abc.opcode:SELFBALANCE object>, 80: <abc.opcode:POP object>, 81: <abc.opcode:MLOAD object>, 82: <abc.opcode:MSTORE object>, 83: <abc.opcode:MSTORE8 object>, 84: <abc.opcode:SLOAD object>, 85: <abc.opcode:SSTORE object>, 86: <abc.opcode:JUMP object>, 87: <abc.opcode:JUMPI object>, 88: <abc.opcode:PC object>, 89: <abc.opcode:MSIZE object>, 90: <abc.opcode:GAS object>, 91: <abc.opcode:JUMPDEST object>, 96: <abc.opcode:PUSH1 object>, 97: <abc.opcode:PUSH2 object>, 98: <abc.opcode:PUSH3 object>, 99: <abc.opcode:PUSH4 object>, 100: <abc.opcode:PUSH5 object>, 101: <abc.opcode:PUSH6 object>, 102: <abc.opcode:PUSH7 object>, 103: <abc.opcode:PUSH8 object>, 104: <abc.opcode:PUSH9 object>, 105: <abc.opcode:PUSH10 object>, 106: <abc.opcode:PUSH11 object>, 107: <abc.opcode:PUSH12 object>, 108: <abc.opcode:PUSH13 object>, 109: <abc.opcode:PUSH14 object>, 110: <abc.opcode:PUSH15 object>, 111: <abc.opcode:PUSH16 object>, 112: <abc.opcode:PUSH17 object>, 113: <abc.opcode:PUSH18 object>, 114: <abc.opcode:PUSH19 object>, 115: <abc.opcode:PUSH20 object>, 116: <abc.opcode:PUSH21 object>, 117: <abc.opcode:PUSH22 object>, 118: <abc.opcode:PUSH23 object>, 119: <abc.opcode:PUSH24 object>, 120: <abc.opcode:PUSH25 object>, 121: <abc.opcode:PUSH26 object>, 122: <abc.opcode:PUSH27 object>, 123: <abc.opcode:PUSH28 object>, 124: <abc.opcode:PUSH29 object>, 125: <abc.opcode:PUSH30 object>, 126: <abc.opcode:PUSH31 object>, 127: <abc.opcode:PUSH32 object>, 128: <abc.opcode:DUP1 object>, 129: <abc.opcode:DUP2 object>, 130: <abc.opcode:DUP3 object>, 131: <abc.opcode:DUP4 object>, 132: <abc.opcode:DUP5 object>, 133: <abc.opcode:DUP6 object>, 134: <abc.opcode:DUP7 object>, 135: <abc.opcode:DUP8 object>, 136: <abc.opcode:DUP9 object>, 137: <abc.opcode:DUP10 object>, 138: <abc.opcode:DUP11 object>, 139: <abc.opcode:DUP12 object>, 140: <abc.opcode:DUP13 object>, 141: <abc.opcode:DUP14 object>, 142: <abc.opcode:DUP15 object>, 143: <abc.opcode:DUP16 object>, 144: <abc.opcode:SWAP1 object>, 145: <abc.opcode:SWAP2 object>, 146: <abc.opcode:SWAP3 object>, 147: <abc.opcode:SWAP4 object>, 148: <abc.opcode:SWAP5 object>, 149: <abc.opcode:SWAP6 object>, 150: <abc.opcode:SWAP7 object>, 151: <abc.opcode:SWAP8 object>, 152: <abc.opcode:SWAP9 object>, 153: <abc.opcode:SWAP10 object>, 154: <abc.opcode:SWAP11 object>, 155: <abc.opcode:SWAP12 object>, 156: <abc.opcode:SWAP13 object>, 157: <abc.opcode:SWAP14 object>, 158: <abc.opcode:SWAP15 object>, 159: <abc.opcode:SWAP16 object>, 160: <abc.opcode:LOG0 object>, 161: <abc.opcode:LOG1 object>, 162: <abc.opcode:LOG2 object>, 163: <abc.opcode:LOG3 object>, 164: <abc.opcode:LOG4 object>, 240: <abc.opcode:CREATE object>, 241: <abc.opcode:CALL object>, 242: <abc.opcode:CALLCODE object>, 243: <abc.opcode:RETURN object>, 244: <abc.opcode:DELEGATECALL object>, 245: <abc.opcode:CREATE2 object>, 250: <abc.opcode:STATICCALL object>, 253: <abc.opcode:REVERT object>, 255: <abc.opcode:SELFDESTRUCT object>}¶
-
eth.vm.forks.berlin.constants module¶
eth.vm.forks.berlin.headers module¶
eth.vm.forks.berlin.logic module¶
-
class
eth.vm.forks.berlin.logic.
CallCodeEIP2929
¶ Bases:
eth.vm.forks.berlin.logic.LoadFeeByCacheWarmth
,eth.vm.logic.call.CallCodeEIP150
-
class
eth.vm.forks.berlin.logic.
CallEIP2929
¶ Bases:
eth.vm.forks.berlin.logic.LoadFeeByCacheWarmth
,eth.vm.logic.call.CallByzantium
-
class
eth.vm.forks.berlin.logic.
Create2EIP2929
¶ Bases:
eth.vm.logic.system.Create2
-
generate_contract_address
(stack_data: eth.vm.logic.system.CreateOpcodeStackData, call_data: bytes, computation: eth.abc.ComputationAPI) → NewType.<locals>.new_type¶
-
-
class
eth.vm.forks.berlin.logic.
CreateEIP2929
¶ Bases:
eth.vm.logic.system.CreateByzantium
-
generate_contract_address
(stack_data: eth.vm.logic.system.CreateOpcodeStackData, call_data: bytes, computation: eth.abc.ComputationAPI) → NewType.<locals>.new_type¶
-
-
class
eth.vm.forks.berlin.logic.
DelegateCallEIP2929
¶ Bases:
eth.vm.forks.berlin.logic.LoadFeeByCacheWarmth
,eth.vm.logic.call.DelegateCallEIP150
-
class
eth.vm.forks.berlin.logic.
LoadFeeByCacheWarmth
¶ Bases:
object
-
get_account_load_fee
(computation: eth.abc.ComputationAPI, code_address: NewType.<locals>.new_type) → int¶
-
-
class
eth.vm.forks.berlin.logic.
StaticCallEIP2929
¶ Bases:
eth.vm.forks.berlin.logic.LoadFeeByCacheWarmth
,eth.vm.logic.call.StaticCall
-
eth.vm.forks.berlin.logic.
balance_eip2929
(computation: eth.abc.ComputationAPI) → None¶
-
eth.vm.forks.berlin.logic.
extcodecopy_eip2929
(computation: eth.abc.ComputationAPI) → None¶
-
eth.vm.forks.berlin.logic.
extcodehash_eip2929
(computation: eth.abc.ComputationAPI) → None¶ Return the code hash for a given address. EIP: https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1052.md
-
eth.vm.forks.berlin.logic.
extcodesize_eip2929
(computation: eth.abc.ComputationAPI) → None¶
-
eth.vm.forks.berlin.logic.
selfdestruct_eip2929
(computation: eth.abc.ComputationAPI) → None¶
-
eth.vm.forks.berlin.logic.
sload_eip2929
(computation: eth.abc.ComputationAPI) → None¶
-
eth.vm.forks.berlin.logic.
sstore_eip2929
¶
-
eth.vm.forks.berlin.logic.
sstore_eip2929_generic
¶
eth.vm.forks.berlin.opcodes module¶
eth.vm.forks.berlin.receipts module¶
-
class
eth.vm.forks.berlin.receipts.
BerlinReceiptBuilder
¶ Bases:
eth.abc.ReceiptBuilderAPI
-
legacy_sedes
¶ alias of
eth.rlp.receipts.Receipt
-
typed_receipt_class
¶ alias of
TypedReceipt
-
classmethod
decode
(encoded: bytes) → eth.abc.ReceiptAPI¶ This decodes a receipt that is encoded to either a typed receipt, a legacy receipt, or the body of a typed receipt. It assumes that typed receipts are not rlp-encoded first.
If dealing with an object that is always rlp encoded, then use this instead:
rlp.decode(encoded, sedes=ReceiptBuilderAPI)For example, you may receive a list of receipts via a devp2p request. Each receipt is either a (legacy) rlp list, or a (new-style) bytestring. Even if the receipt is a bytestring, it’s wrapped in an rlp bytestring, in that context. New-style receipts will not be wrapped in an RLP bytestring in other contexts. They will just be an EIP-2718 type-byte plus payload of concatenated bytes, which cannot be decoded as RLP. This happens for example, when calculating the receipt root hash.
-
classmethod
deserialize
(encoded: Union[bytes, List[bytes]]) → eth.abc.ReceiptAPI¶ Extract a receipt from an encoded RLP object.
This method is used by rlp.decode(…, sedes=ReceiptBuilderAPI).
-
classmethod
serialize
(obj: eth.abc.ReceiptAPI) → Union[bytes, List[bytes]]¶ Encode a receipt to a series of bytes used by RLP.
In the case of legacy receipt, it will actually be a list of bytes. That doesn’t show up here, because pyrlp doesn’t export type annotations.
This method is used by rlp.encode(obj).
-
-
class
eth.vm.forks.berlin.receipts.
TypedReceipt
(type_id: int, proxy_target: eth.abc.ReceiptAPI)¶ Bases:
eth.abc.ReceiptAPI
,eth.abc.ReceiptDecoderAPI
-
copy
(*args, **kwargs) → eth.abc.ReceiptAPI¶ Return a copy of the receipt, optionally overwriting any of its properties.
-
classmethod
decode
(encoded: bytes) → eth.abc.ReceiptAPI¶ This decodes a receipt that is encoded to either a typed receipt, a legacy receipt, or the body of a typed receipt. It assumes that typed receipts are not rlp-encoded first.
If dealing with an object that is always rlp encoded, then use this instead:
rlp.decode(encoded, sedes=ReceiptBuilderAPI)For example, you may receive a list of receipts via a devp2p request. Each receipt is either a (legacy) rlp list, or a (new-style) bytestring. Even if the receipt is a bytestring, it’s wrapped in an rlp bytestring, in that context. New-style receipts will not be wrapped in an RLP bytestring in other contexts. They will just be an EIP-2718 type-byte plus payload of concatenated bytes, which cannot be decoded as RLP. This happens for example, when calculating the receipt root hash.
-
classmethod
deserialize
(encoded_unchecked: Union[bytes, List[bytes]]) → eth.abc.ReceiptAPI¶
-
encode
() → bytes¶ This encodes a receipt, no matter if it’s: a legacy receipt, a typed receipt, or the payload of a typed receipt. See more context in decode.
-
classmethod
get_payload_codec
(type_id: int) → Type[eth.abc.ReceiptDecoderAPI]¶
-
classmethod
serialize
(obj: eth.vm.forks.berlin.receipts.TypedReceipt) → Union[bytes, List[bytes]]¶
-
bloom
¶
-
bloom_filter
¶
-
codecs
= {1: <class 'eth.rlp.receipts.Receipt'>}¶
-
gas_used
¶
-
logs
¶
-
rlp_type
= <rlp.sedes.binary.Binary object>¶
-
state_root
¶
-
eth.vm.forks.berlin.state module¶
-
class
eth.vm.forks.berlin.state.
BerlinState
(db: eth.abc.AtomicDatabaseAPI, execution_context: eth.abc.ExecutionContextAPI, state_root: NewType.<locals>.new_type)¶ Bases:
eth.vm.forks.muir_glacier.state.MuirGlacierState
-
computation_class
¶
-
transaction_executor_class
¶ alias of
BerlinTransactionExecutor
-
-
class
eth.vm.forks.berlin.state.
BerlinTransactionExecutor
(vm_state: eth.abc.StateAPI)¶ Bases:
eth.vm.forks.spurious_dragon.state.SpuriousDragonTransactionExecutor
-
build_computation
(message: eth.abc.MessageAPI, transaction: eth.abc.SignedTransactionAPI) → eth.abc.ComputationAPI¶ Apply the
message
to the VM and use the giventransaction
to retrieve the context from.
-
eth.vm.forks.berlin.transactions module¶
-
class
eth.vm.forks.berlin.transactions.
AccessListPayloadDecoder
¶ Bases:
eth.abc.TransactionDecoderAPI
-
classmethod
decode
(payload: bytes) → eth.abc.SignedTransactionAPI¶ This decodes a transaction that is encoded to either a typed transaction or a legacy transaction, or even the payload of one of the transaction types. It assumes that typed transactions are not rlp-encoded first.
If dealing with an object that is rlp encoded first, then use this instead:
rlp.decode(encoded, sedes=TransactionBuilderAPI)For example, you may receive a list of transactions via a devp2p request. Each transaction is either a (legacy) rlp list, or a (new-style) bytestring. Even if the transaction is a bytestring, it’s wrapped in an rlp bytestring, in that context. New-style transactions will not be wrapped in an RLP bytestring in other contexts. They will just be an EIP-2718 type-byte plus payload of concatenated bytes, which cannot be decoded as RLP. An example context for this is calculating the transaction root hash.
-
classmethod
-
class
eth.vm.forks.berlin.transactions.
AccessListTransaction
(*args, **kwargs)¶ Bases:
rlp.sedes.serializable.Serializable
,eth.rlp.transactions.SignedTransactionMethods
,eth.abc.SignedTransactionAPI
-
check_signature_validity
() → None¶ Check if the signature is valid. Raise a
ValidationError
if the signature is invalid.
-
encode
() → bytes¶ This encodes a transaction, no matter if it’s: a legacy transaction, a typed transaction, or the payload of a typed transaction. See more context in decode.
-
get_intrinsic_gas
() → int¶ Return the intrinsic gas for the transaction which is defined as the amount of gas that is needed before any code runs.
-
get_message_for_signing
() → bytes¶ Return the bytestring that should be signed in order to create a signed transaction.
-
get_sender
() → NewType.<locals>.new_type¶ Get the 20-byte address which sent this transaction.
This can be a slow operation.
transaction.sender
is always preferred.
-
make_receipt
(status: bytes, gas_used: int, log_entries: Tuple[Tuple[bytes, Tuple[int, ...], bytes], ...]) → eth.abc.ReceiptAPI¶ Build a receipt for this transaction.
Transactions have this responsibility because there are different types of transactions, which have different types of receipts. (See access-list transactions, which change the receipt encoding)
Parameters: - status – success or failure (used to be the state root after execution)
- gas_used – cumulative usage of this transaction and the previous ones in the header
- log_entries – logs generated during execution
-
access_list
¶
-
chain_id
¶
-
data
¶
-
gas
¶
-
gas_price
¶
-
hash
¶
-
max_fee_per_gas
¶ Will default to gas_price if this is a pre-1559 transaction.
-
max_priority_fee_per_gas
¶ Will default to gas_price if this is a pre-1559 transaction.
-
nonce
¶
-
r
¶
-
s
¶
-
to
¶
-
value
¶
-
y_parity
¶
-
-
class
eth.vm.forks.berlin.transactions.
AccountAccesses
(*args, **kwargs)¶ Bases:
rlp.sedes.serializable.Serializable
-
account
¶
-
storage_keys
¶
-
-
class
eth.vm.forks.berlin.transactions.
BerlinLegacyTransaction
(*args, **kwargs)¶ Bases:
eth.vm.forks.muir_glacier.transactions.MuirGlacierTransaction
-
data
¶
-
gas
¶
-
gas_price
¶
-
nonce
¶
-
r
¶
-
s
¶
-
to
¶
-
v
¶
-
value
¶
-
-
class
eth.vm.forks.berlin.transactions.
BerlinTransactionBuilder
¶ Bases:
eth.abc.TransactionBuilderAPI
Responsible for serializing transactions of ambiguous type.
It dispatches to either the legacy transaction type or the new typed transaction, depending on the nature of the encoded/decoded transaction.
-
legacy_signed
¶ alias of
BerlinLegacyTransaction
-
legacy_unsigned
¶ alias of
BerlinUnsignedLegacyTransaction
-
typed_transaction
¶ alias of
TypedTransaction
-
classmethod
create_unsigned_transaction
(*, nonce: int, gas_price: int, gas: int, to: NewType.<locals>.new_type, value: int, data: bytes) → eth.abc.UnsignedTransactionAPI¶ Create an unsigned transaction.
-
classmethod
decode
(encoded: bytes) → eth.abc.SignedTransactionAPI¶ This decodes a transaction that is encoded to either a typed transaction or a legacy transaction, or even the payload of one of the transaction types. It assumes that typed transactions are not rlp-encoded first.
If dealing with an object that is rlp encoded first, then use this instead:
rlp.decode(encoded, sedes=TransactionBuilderAPI)For example, you may receive a list of transactions via a devp2p request. Each transaction is either a (legacy) rlp list, or a (new-style) bytestring. Even if the transaction is a bytestring, it’s wrapped in an rlp bytestring, in that context. New-style transactions will not be wrapped in an RLP bytestring in other contexts. They will just be an EIP-2718 type-byte plus payload of concatenated bytes, which cannot be decoded as RLP. An example context for this is calculating the transaction root hash.
-
classmethod
deserialize
(encoded: Union[bytes, List[bytes]]) → eth.abc.SignedTransactionAPI¶ Extract a transaction from an encoded RLP object.
This method is used by rlp.decode(…, sedes=TransactionBuilderAPI).
-
classmethod
new_access_list_transaction
(chain_id: int, nonce: int, gas_price: int, gas: int, to: NewType.<locals>.new_type, value: int, data: bytes, access_list: Sequence[Tuple[NewType.<locals>.new_type, Sequence[int]]], y_parity: int, r: int, s: int) → eth.vm.forks.berlin.transactions.TypedTransaction¶
-
classmethod
new_transaction
(nonce: int, gas_price: int, gas: int, to: NewType.<locals>.new_type, value: int, data: bytes, v: int, r: int, s: int) → eth.abc.SignedTransactionAPI¶ Create a signed transaction.
-
classmethod
new_unsigned_access_list_transaction
(chain_id: int, nonce: int, gas_price: int, gas: int, to: NewType.<locals>.new_type, value: int, data: bytes, access_list: Sequence[Tuple[NewType.<locals>.new_type, Sequence[int]]]) → eth.vm.forks.berlin.transactions.TypedTransaction¶
-
classmethod
serialize
(obj: eth.abc.SignedTransactionAPI) → Union[bytes, List[bytes]]¶ Encode a transaction to a series of bytes used by RLP.
In the case of legacy transactions, it will actually be a list of bytes. That doesn’t show up here, because pyrlp doesn’t export type annotations.
This method is used by rlp.encode(obj).
-
-
class
eth.vm.forks.berlin.transactions.
BerlinUnsignedLegacyTransaction
(*args, **kwargs)¶ Bases:
eth.vm.forks.muir_glacier.transactions.MuirGlacierUnsignedTransaction
-
as_signed_transaction
(private_key: eth_keys.datatypes.PrivateKey, chain_id: int = None) → eth.vm.forks.berlin.transactions.BerlinLegacyTransaction¶ Return a version of this transaction which has been signed using the provided private_key
-
data
¶
-
gas
¶
-
gas_price
¶
-
nonce
¶
-
to
¶
-
value
¶
-
-
class
eth.vm.forks.berlin.transactions.
TypedTransaction
(type_id: int, proxy_target: eth.abc.SignedTransactionAPI)¶ Bases:
eth.rlp.transactions.SignedTransactionMethods
,eth.abc.SignedTransactionAPI
,eth.abc.TransactionDecoderAPI
-
receipt_builder
¶
-
check_signature_validity
() → None¶ Check if the signature is valid. Raise a
ValidationError
if the signature is invalid.
-
copy
(**overrides) → eth.vm.forks.berlin.transactions.TypedTransaction¶ Return a copy of the transaction.
-
classmethod
decode
(encoded: bytes) → eth.abc.SignedTransactionAPI¶ This decodes a transaction that is encoded to either a typed transaction or a legacy transaction, or even the payload of one of the transaction types. It assumes that typed transactions are not rlp-encoded first.
If dealing with an object that is rlp encoded first, then use this instead:
rlp.decode(encoded, sedes=TransactionBuilderAPI)For example, you may receive a list of transactions via a devp2p request. Each transaction is either a (legacy) rlp list, or a (new-style) bytestring. Even if the transaction is a bytestring, it’s wrapped in an rlp bytestring, in that context. New-style transactions will not be wrapped in an RLP bytestring in other contexts. They will just be an EIP-2718 type-byte plus payload of concatenated bytes, which cannot be decoded as RLP. An example context for this is calculating the transaction root hash.
-
classmethod
deserialize
(encoded_unchecked: Union[bytes, List[bytes]]) → eth.abc.SignedTransactionAPI¶
-
encode
() → bytes¶ This encodes a transaction, no matter if it’s: a legacy transaction, a typed transaction, or the payload of a typed transaction. See more context in decode.
-
get_intrinsic_gas
() → int¶ Return the intrinsic gas for the transaction which is defined as the amount of gas that is needed before any code runs.
-
get_message_for_signing
() → bytes¶ Return the bytestring that should be signed in order to create a signed transaction.
-
classmethod
get_payload_codec
(type_id: int) → Type[eth.abc.TransactionDecoderAPI]¶
-
get_sender
() → NewType.<locals>.new_type¶ Get the 20-byte address which sent this transaction.
This can be a slow operation.
transaction.sender
is always preferred.
-
make_receipt
(status: bytes, gas_used: int, log_entries: Tuple[Tuple[bytes, Tuple[int, ...], bytes], ...]) → eth.abc.ReceiptAPI¶ Build a receipt for this transaction.
Transactions have this responsibility because there are different types of transactions, which have different types of receipts. (See access-list transactions, which change the receipt encoding)
Parameters: - status – success or failure (used to be the state root after execution)
- gas_used – cumulative usage of this transaction and the previous ones in the header
- log_entries – logs generated during execution
-
classmethod
serialize
(obj: eth.vm.forks.berlin.transactions.TypedTransaction) → Union[bytes, List[bytes]]¶
-
access_list
¶ Get addresses to be accessed by a transaction, and their storage slots.
-
chain_id
¶
-
data
¶
-
decoders
= {1: <class 'eth.vm.forks.berlin.transactions.AccessListPayloadDecoder'>}¶
-
gas
¶
-
gas_price
¶ Will raise
AttributeError
if get or set on a 1559 transaction.
-
hash
¶
-
max_fee_per_gas
¶ Will default to gas_price if this is a pre-1559 transaction.
-
max_priority_fee_per_gas
¶ Will default to gas_price if this is a pre-1559 transaction.
-
nonce
¶
-
r
¶
-
rlp_type
= <rlp.sedes.binary.Binary object>¶
-
s
¶
-
to
¶
-
value
¶
-
y_parity
¶ The bit used to disambiguate elliptic curve signatures.
The only values this method will return are 0 or 1.
-
-
class
eth.vm.forks.berlin.transactions.
UnsignedAccessListTransaction
(*args, **kwargs)¶ Bases:
rlp.sedes.serializable.Serializable
-
as_signed_transaction
(private_key: eth_keys.datatypes.PrivateKey) → eth.vm.forks.berlin.transactions.TypedTransaction¶
-
get_intrinsic_gas
() → int¶
-
get_message_for_signing
() → bytes¶
-
validate
() → None¶
-
access_list
¶
-
chain_id
¶
-
data
¶
-
gas
¶
-
gas_price
¶
-
intrinsic_gas
¶
-
max_fee_per_gas
¶
-
max_priority_fee_per_gas
¶
-
nonce
¶
-
to
¶
-
value
¶
-
Module contents¶
-
class
eth.vm.forks.berlin.
BerlinVM
(header: eth.abc.BlockHeaderAPI, chaindb: eth.abc.ChainDatabaseAPI, chain_context: eth.abc.ChainContextAPI, consensus_context: eth.abc.ConsensusContextAPI)¶ Bases:
eth.vm.forks.muir_glacier.MuirGlacierVM
-
block_class
¶
-
compute_difficulty
¶
-
configure_header
¶
-
create_header_from_parent
¶
-
fork
= 'berlin'¶
-
London¶
Submodules¶
eth.vm.forks.london.blocks module¶
-
class
eth.vm.forks.london.blocks.
LondonBackwardsHeader
¶ Bases:
eth.abc.BlockHeaderSedesAPI
An rlp sedes class for block headers.
It can serialize and deserialize both London and pre-London headers.
-
classmethod
deserialize
(encoded: List[bytes]) → eth.abc.BlockHeaderAPI¶ Extract a header from an encoded RLP object.
This method is used by rlp.decode(…, sedes=TransactionBuilderAPI).
-
classmethod
serialize
(obj: eth.abc.BlockHeaderAPI) → List[bytes]¶ Encode a header to a series of bytes used by RLP.
This method is used by rlp.encode(obj).
-
classmethod
-
class
eth.vm.forks.london.blocks.
LondonBlock
(header: eth.abc.BlockHeaderAPI, transactions: Sequence[eth.abc.SignedTransactionAPI] = None, uncles: Sequence[eth.abc.BlockHeaderAPI] = None)¶ Bases:
eth.vm.forks.berlin.blocks.BerlinBlock
-
receipt_builder
¶
-
transaction_builder
¶ alias of
eth.vm.forks.london.transactions.LondonTransactionBuilder
-
header
¶
-
transactions
¶
-
uncles
¶
-
-
class
eth.vm.forks.london.blocks.
LondonBlockHeader
(difficulty: int, block_number: NewType.<locals>.new_type, gas_limit: int, timestamp: int = None, coinbase: NewType.<locals>.new_type = b'x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00', parent_hash: NewType.<locals>.new_type = b'x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00', uncles_hash: NewType.<locals>.new_type = b'x1dxccMxe8xdexc7]zxabx85xb5gxb6xccxd4x1axd3x12Ex1bx94x8atx13xf0xa1Bxfd@xd4x93G', state_root: NewType.<locals>.new_type = b'Vxe8x1fx17x1bxccUxa6xffx83Exe6x92xc0xf8n[Hxe0x1bx99lxadxc0x01b/xb5xe3cxb4!', transaction_root: NewType.<locals>.new_type = b'Vxe8x1fx17x1bxccUxa6xffx83Exe6x92xc0xf8n[Hxe0x1bx99lxadxc0x01b/xb5xe3cxb4!', receipt_root: NewType.<locals>.new_type = b'Vxe8x1fx17x1bxccUxa6xffx83Exe6x92xc0xf8n[Hxe0x1bx99lxadxc0x01b/xb5xe3cxb4!', bloom: int = 0, gas_used: int = 0, extra_data: bytes = b'', mix_hash: NewType.<locals>.new_type = b'x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00', nonce: bytes = b'x00x00x00x00x00x00x00B', base_fee_per_gas: int = 0)¶ Bases:
rlp.sedes.serializable.Serializable
,eth.abc.BlockHeaderAPI
-
base_fee_per_gas
¶
-
block_number
¶
-
bloom
¶
-
coinbase
¶
-
difficulty
¶
-
extra_data
¶
-
gas_limit
¶
-
gas_used
¶
-
hash
¶ Return the hash of the block header.
-
hex_hash
¶ Return the hash as a hex string.
-
is_genesis
¶ Return
True
if this header represents the genesis block of the chain, otherwiseFalse
.
-
mining_hash
¶ Return the mining hash of the block header.
-
mix_hash
¶
-
nonce
¶
-
parent_hash
¶
-
receipt_root
¶
-
state_root
¶
-
timestamp
¶
-
transaction_root
¶
-
uncles_hash
¶
-
withdrawals_root
¶ Return the withdrawals root of the block.
Set to None in pre-Shanghai header.
-
-
class
eth.vm.forks.london.blocks.
LondonMiningHeader
(*args, **kwargs)¶ Bases:
rlp.sedes.serializable.Serializable
,eth.abc.MiningHeaderAPI
-
base_fee_per_gas
¶
-
block_number
¶
-
bloom
¶
-
coinbase
¶
-
difficulty
¶
-
extra_data
¶
-
gas_limit
¶
-
gas_used
¶
-
parent_hash
¶
-
receipt_root
¶
-
state_root
¶
-
timestamp
¶
-
transaction_root
¶
-
uncles_hash
¶
-
eth.vm.forks.london.computation module¶
-
class
eth.vm.forks.london.computation.
LondonComputation
(state: eth.abc.StateAPI, message: eth.abc.MessageAPI, transaction_context: eth.abc.TransactionContextAPI)¶ Bases:
eth.vm.forks.berlin.computation.BerlinComputation
A class for all execution message computations in the
London
fork. Inherits fromBerlinComputation
-
classmethod
validate_contract_code
(contract_code: bytes) → None¶
-
opcodes
= {0: <abc.opcode:STOP object>, 1: <abc.opcode:ADD object>, 2: <abc.opcode:MUL object>, 3: <abc.opcode:SUB object>, 4: <abc.opcode:DIV object>, 5: <abc.opcode:SDIV object>, 6: <abc.opcode:MOD object>, 7: <abc.opcode:SMOD object>, 8: <abc.opcode:ADDMOD object>, 9: <abc.opcode:MULMOD object>, 10: <abc.opcode:EXP object>, 11: <abc.opcode:SIGNEXTEND object>, 16: <abc.opcode:LT object>, 17: <abc.opcode:GT object>, 18: <abc.opcode:SLT object>, 19: <abc.opcode:SGT object>, 20: <abc.opcode:EQ object>, 21: <abc.opcode:ISZERO object>, 22: <abc.opcode:AND object>, 23: <abc.opcode:OR object>, 24: <abc.opcode:XOR object>, 25: <abc.opcode:NOT object>, 26: <abc.opcode:BYTE object>, 27: <abc.opcode:SHL object>, 28: <abc.opcode:SHR object>, 29: <abc.opcode:SAR object>, 32: <abc.opcode:SHA3 object>, 48: <abc.opcode:ADDRESS object>, 49: <abc.opcode:BALANCE object>, 50: <abc.opcode:ORIGIN object>, 51: <abc.opcode:CALLER object>, 52: <abc.opcode:CALLVALUE object>, 53: <abc.opcode:CALLDATALOAD object>, 54: <abc.opcode:CALLDATASIZE object>, 55: <abc.opcode:CALLDATACOPY object>, 56: <abc.opcode:CODESIZE object>, 57: <abc.opcode:CODECOPY object>, 58: <abc.opcode:GASPRICE object>, 59: <abc.opcode:EXTCODESIZE object>, 60: <abc.opcode:EXTCODECOPY object>, 61: <abc.opcode:RETURNDATASIZE object>, 62: <abc.opcode:RETURNDATACOPY object>, 63: <abc.opcode:EXTCODEHASH object>, 64: <abc.opcode:BLOCKHASH object>, 65: <abc.opcode:COINBASE object>, 66: <abc.opcode:TIMESTAMP object>, 67: <abc.opcode:NUMBER object>, 68: <abc.opcode:DIFFICULTY object>, 69: <abc.opcode:GASLIMIT object>, 70: <abc.opcode:CHAINID object>, 71: <abc.opcode:SELFBALANCE object>, 72: <abc.opcode:BASEFEE object>, 80: <abc.opcode:POP object>, 81: <abc.opcode:MLOAD object>, 82: <abc.opcode:MSTORE object>, 83: <abc.opcode:MSTORE8 object>, 84: <abc.opcode:SLOAD object>, 85: <abc.opcode:SSTORE object>, 86: <abc.opcode:JUMP object>, 87: <abc.opcode:JUMPI object>, 88: <abc.opcode:PC object>, 89: <abc.opcode:MSIZE object>, 90: <abc.opcode:GAS object>, 91: <abc.opcode:JUMPDEST object>, 96: <abc.opcode:PUSH1 object>, 97: <abc.opcode:PUSH2 object>, 98: <abc.opcode:PUSH3 object>, 99: <abc.opcode:PUSH4 object>, 100: <abc.opcode:PUSH5 object>, 101: <abc.opcode:PUSH6 object>, 102: <abc.opcode:PUSH7 object>, 103: <abc.opcode:PUSH8 object>, 104: <abc.opcode:PUSH9 object>, 105: <abc.opcode:PUSH10 object>, 106: <abc.opcode:PUSH11 object>, 107: <abc.opcode:PUSH12 object>, 108: <abc.opcode:PUSH13 object>, 109: <abc.opcode:PUSH14 object>, 110: <abc.opcode:PUSH15 object>, 111: <abc.opcode:PUSH16 object>, 112: <abc.opcode:PUSH17 object>, 113: <abc.opcode:PUSH18 object>, 114: <abc.opcode:PUSH19 object>, 115: <abc.opcode:PUSH20 object>, 116: <abc.opcode:PUSH21 object>, 117: <abc.opcode:PUSH22 object>, 118: <abc.opcode:PUSH23 object>, 119: <abc.opcode:PUSH24 object>, 120: <abc.opcode:PUSH25 object>, 121: <abc.opcode:PUSH26 object>, 122: <abc.opcode:PUSH27 object>, 123: <abc.opcode:PUSH28 object>, 124: <abc.opcode:PUSH29 object>, 125: <abc.opcode:PUSH30 object>, 126: <abc.opcode:PUSH31 object>, 127: <abc.opcode:PUSH32 object>, 128: <abc.opcode:DUP1 object>, 129: <abc.opcode:DUP2 object>, 130: <abc.opcode:DUP3 object>, 131: <abc.opcode:DUP4 object>, 132: <abc.opcode:DUP5 object>, 133: <abc.opcode:DUP6 object>, 134: <abc.opcode:DUP7 object>, 135: <abc.opcode:DUP8 object>, 136: <abc.opcode:DUP9 object>, 137: <abc.opcode:DUP10 object>, 138: <abc.opcode:DUP11 object>, 139: <abc.opcode:DUP12 object>, 140: <abc.opcode:DUP13 object>, 141: <abc.opcode:DUP14 object>, 142: <abc.opcode:DUP15 object>, 143: <abc.opcode:DUP16 object>, 144: <abc.opcode:SWAP1 object>, 145: <abc.opcode:SWAP2 object>, 146: <abc.opcode:SWAP3 object>, 147: <abc.opcode:SWAP4 object>, 148: <abc.opcode:SWAP5 object>, 149: <abc.opcode:SWAP6 object>, 150: <abc.opcode:SWAP7 object>, 151: <abc.opcode:SWAP8 object>, 152: <abc.opcode:SWAP9 object>, 153: <abc.opcode:SWAP10 object>, 154: <abc.opcode:SWAP11 object>, 155: <abc.opcode:SWAP12 object>, 156: <abc.opcode:SWAP13 object>, 157: <abc.opcode:SWAP14 object>, 158: <abc.opcode:SWAP15 object>, 159: <abc.opcode:SWAP16 object>, 160: <abc.opcode:LOG0 object>, 161: <abc.opcode:LOG1 object>, 162: <abc.opcode:LOG2 object>, 163: <abc.opcode:LOG3 object>, 164: <abc.opcode:LOG4 object>, 240: <abc.opcode:CREATE object>, 241: <abc.opcode:CALL object>, 242: <abc.opcode:CALLCODE object>, 243: <abc.opcode:RETURN object>, 244: <abc.opcode:DELEGATECALL object>, 245: <abc.opcode:CREATE2 object>, 250: <abc.opcode:STATICCALL object>, 253: <abc.opcode:REVERT object>, 255: <abc.opcode:SELFDESTRUCT object>}¶
-
classmethod
eth.vm.forks.london.constants module¶
eth.vm.forks.london.headers module¶
-
class
eth.vm.forks.london.headers.
LondonBackwardsHeader
¶ Bases:
eth.abc.BlockHeaderSedesAPI
An rlp sedes class for block headers.
It can serialize and deserialize both London and pre-London headers.
-
classmethod
deserialize
(encoded: List[bytes]) → eth.abc.BlockHeaderAPI¶ Extract a header from an encoded RLP object.
This method is used by rlp.decode(…, sedes=TransactionBuilderAPI).
-
classmethod
serialize
(obj: eth.abc.BlockHeaderAPI) → List[bytes]¶ Encode a header to a series of bytes used by RLP.
This method is used by rlp.encode(obj).
-
classmethod
-
eth.vm.forks.london.headers.
calculate_expected_base_fee_per_gas
(parent_header: eth.abc.BlockHeaderAPI) → int¶
-
eth.vm.forks.london.headers.
create_london_header_from_parent
¶
eth.vm.forks.london.opcodes module¶
eth.vm.forks.london.receipts module¶
-
class
eth.vm.forks.london.receipts.
LondonReceiptBuilder
¶ Bases:
eth.vm.forks.berlin.receipts.BerlinReceiptBuilder
-
typed_receipt_class
¶ alias of
LondonTypedReceipt
-
-
class
eth.vm.forks.london.receipts.
LondonTypedReceipt
(type_id: int, proxy_target: eth.abc.ReceiptAPI)¶ Bases:
eth.vm.forks.berlin.receipts.TypedReceipt
-
codecs
= {1: <class 'eth.rlp.receipts.Receipt'>, 2: <class 'eth.rlp.receipts.Receipt'>}¶
-
eth.vm.forks.london.state module¶
-
class
eth.vm.forks.london.state.
LondonState
(db: eth.abc.AtomicDatabaseAPI, execution_context: eth.abc.ExecutionContextAPI, state_root: NewType.<locals>.new_type)¶ Bases:
eth.vm.forks.berlin.state.BerlinState
-
computation_class
¶
-
transaction_executor_class
¶ alias of
LondonTransactionExecutor
-
get_gas_price
(transaction: eth.abc.SignedTransactionAPI) → int¶ Return the gas price of the given transaction.
Factor in the current block’s base gas price, if appropriate. (See EIP-1559)
-
get_tip
(transaction: eth.abc.SignedTransactionAPI) → int¶ Return the gas price that gets allocated to the miner/validator.
Pre-EIP-1559 that would be the full transaction gas price. After, it would be the tip price (potentially reduced, if the base fee is so high that it surpasses the transaction’s maximum gas price after adding the tip).
-
get_transaction_context
(transaction: eth.abc.SignedTransactionAPI) → eth.abc.TransactionContextAPI¶ London-specific transaction context creation, where gas_price includes the block base fee
-
validate_transaction
(transaction: eth.abc.SignedTransactionAPI) → None¶ Validate the given
transaction
.
-
base_fee
¶ Return the current
base_fee
from the currentexecution_context
Raises a
NotImplementedError
if called in an execution context prior to the London hard fork.
-
-
class
eth.vm.forks.london.state.
LondonTransactionExecutor
(vm_state: eth.abc.StateAPI)¶ Bases:
eth.vm.forks.berlin.state.BerlinTransactionExecutor
-
build_evm_message
(transaction: eth.abc.SignedTransactionAPI) → eth.abc.MessageAPI¶ Build and return a
MessageAPI
from the giventransaction
.
-
classmethod
calculate_gas_refund
(computation: eth.abc.ComputationAPI, gas_used: int) → int¶
-
eth.vm.forks.london.storage module¶
eth.vm.forks.london.transactions module¶
-
class
eth.vm.forks.london.transactions.
DynamicFeePayloadDecoder
¶ Bases:
eth.abc.TransactionDecoderAPI
-
classmethod
decode
(payload: bytes) → eth.abc.SignedTransactionAPI¶ This decodes a transaction that is encoded to either a typed transaction or a legacy transaction, or even the payload of one of the transaction types. It assumes that typed transactions are not rlp-encoded first.
If dealing with an object that is rlp encoded first, then use this instead:
rlp.decode(encoded, sedes=TransactionBuilderAPI)For example, you may receive a list of transactions via a devp2p request. Each transaction is either a (legacy) rlp list, or a (new-style) bytestring. Even if the transaction is a bytestring, it’s wrapped in an rlp bytestring, in that context. New-style transactions will not be wrapped in an RLP bytestring in other contexts. They will just be an EIP-2718 type-byte plus payload of concatenated bytes, which cannot be decoded as RLP. An example context for this is calculating the transaction root hash.
-
classmethod
-
class
eth.vm.forks.london.transactions.
DynamicFeeTransaction
(*args, **kwargs)¶ Bases:
rlp.sedes.serializable.Serializable
,eth.rlp.transactions.SignedTransactionMethods
,eth.abc.SignedTransactionAPI
-
check_signature_validity
() → None¶ Check if the signature is valid. Raise a
ValidationError
if the signature is invalid.
-
encode
() → bytes¶ This encodes a transaction, no matter if it’s: a legacy transaction, a typed transaction, or the payload of a typed transaction. See more context in decode.
-
get_intrinsic_gas
() → int¶ Return the intrinsic gas for the transaction which is defined as the amount of gas that is needed before any code runs.
-
get_message_for_signing
() → bytes¶ Return the bytestring that should be signed in order to create a signed transaction.
-
get_sender
() → NewType.<locals>.new_type¶ Get the 20-byte address which sent this transaction.
This can be a slow operation.
transaction.sender
is always preferred.
-
make_receipt
(status: bytes, gas_used: int, log_entries: Tuple[Tuple[bytes, Tuple[int, ...], bytes], ...]) → eth.abc.ReceiptAPI¶ Build a receipt for this transaction.
Transactions have this responsibility because there are different types of transactions, which have different types of receipts. (See access-list transactions, which change the receipt encoding)
Parameters: - status – success or failure (used to be the state root after execution)
- gas_used – cumulative usage of this transaction and the previous ones in the header
- log_entries – logs generated during execution
-
access_list
¶
-
chain_id
¶
-
data
¶
-
gas
¶
-
gas_price
¶ Will raise
AttributeError
if get or set on a 1559 transaction.
-
hash
¶
-
max_fee_per_gas
¶
-
max_priority_fee_per_gas
¶
-
nonce
¶
-
r
¶
-
s
¶
-
to
¶
-
value
¶
-
y_parity
¶
-
-
class
eth.vm.forks.london.transactions.
LondonLegacyTransaction
(*args, **kwargs)¶ Bases:
eth.vm.forks.berlin.transactions.BerlinLegacyTransaction
-
data
¶
-
gas
¶
-
gas_price
¶
-
nonce
¶
-
r
¶
-
s
¶
-
to
¶
-
v
¶
-
value
¶
-
-
class
eth.vm.forks.london.transactions.
LondonTransactionBuilder
¶ Bases:
eth.vm.forks.berlin.transactions.BerlinTransactionBuilder
-
legacy_signed
¶ alias of
LondonLegacyTransaction
-
legacy_unsigned
¶ alias of
LondonUnsignedLegacyTransaction
-
typed_transaction
¶ alias of
LondonTypedTransaction
-
classmethod
new_dynamic_fee_transaction
(chain_id: int, nonce: int, max_priority_fee_per_gas: int, max_fee_per_gas: int, gas: int, to: NewType.<locals>.new_type, value: int, data: bytes, access_list: Sequence[Tuple[NewType.<locals>.new_type, Sequence[int]]], y_parity: int, r: int, s: int) → eth.vm.forks.london.transactions.LondonTypedTransaction¶
-
classmethod
new_unsigned_dynamic_fee_transaction
(chain_id: int, nonce: int, max_priority_fee_per_gas: int, max_fee_per_gas: int, gas: int, to: NewType.<locals>.new_type, value: int, data: bytes, access_list: Sequence[Tuple[NewType.<locals>.new_type, Sequence[int]]]) → eth.vm.forks.london.transactions.LondonTypedTransaction¶
-
-
class
eth.vm.forks.london.transactions.
LondonTypedTransaction
(type_id: int, proxy_target: eth.abc.SignedTransactionAPI)¶ Bases:
eth.vm.forks.berlin.transactions.TypedTransaction
-
receipt_builder
¶
-
decoders
= {1: <class 'eth.vm.forks.berlin.transactions.AccessListPayloadDecoder'>, 2: <class 'eth.vm.forks.london.transactions.DynamicFeePayloadDecoder'>}¶
-
-
class
eth.vm.forks.london.transactions.
LondonUnsignedLegacyTransaction
(*args, **kwargs)¶ Bases:
eth.vm.forks.berlin.transactions.BerlinUnsignedLegacyTransaction
-
as_signed_transaction
(private_key: eth_keys.datatypes.PrivateKey, chain_id: int = None) → eth.vm.forks.london.transactions.LondonLegacyTransaction¶ Return a version of this transaction which has been signed using the provided private_key
-
data
¶
-
gas
¶
-
gas_price
¶
-
nonce
¶
-
to
¶
-
value
¶
-
-
class
eth.vm.forks.london.transactions.
UnsignedDynamicFeeTransaction
(*args, **kwargs)¶ Bases:
rlp.sedes.serializable.Serializable
-
as_signed_transaction
(private_key: eth_keys.datatypes.PrivateKey) → eth.vm.forks.berlin.transactions.TypedTransaction¶
-
get_intrinsic_gas
() → int¶
-
get_message_for_signing
() → bytes¶
-
validate
() → None¶
-
access_list
¶
-
chain_id
¶
-
data
¶
-
gas
¶
-
intrinsic_gas
¶
-
max_fee_per_gas
¶
-
max_priority_fee_per_gas
¶
-
nonce
¶
-
to
¶
-
value
¶
-
eth.vm.forks.london.validation module¶
-
eth.vm.forks.london.validation.
validate_london_normalized_transaction
(state: eth.abc.StateAPI, transaction: eth.abc.SignedTransactionAPI) → None¶ Validates a London normalized transaction.
Raise eth.exceptions.ValidationError if the sender cannot afford to send this transaction.
Module contents¶
-
class
eth.vm.forks.london.
LondonVM
(header: eth.abc.BlockHeaderAPI, chaindb: eth.abc.ChainDatabaseAPI, chain_context: eth.abc.ChainContextAPI, consensus_context: eth.abc.ConsensusContextAPI)¶ Bases:
eth.vm.forks.berlin.BerlinVM
-
block_class
¶
-
classmethod
calculate_net_gas_refund
(consumed_gas: int, gross_refund: int) → int¶
-
classmethod
validate_gas
(header: eth.abc.BlockHeaderAPI, parent_header: eth.abc.BlockHeaderAPI) → None¶
-
compute_difficulty
¶
-
configure_header
¶
-
create_header_from_parent
¶
-
fork
= 'london'¶
-
Arrow Glacier¶
Submodules¶
eth.vm.forks.arrow_glacier.blocks module¶
-
class
eth.vm.forks.arrow_glacier.blocks.
ArrowGlacierBlock
(header: eth.abc.BlockHeaderAPI, transactions: Sequence[eth.abc.SignedTransactionAPI] = None, uncles: Sequence[eth.abc.BlockHeaderAPI] = None)¶ Bases:
eth.vm.forks.london.blocks.LondonBlock
-
transaction_builder
¶ alias of
eth.vm.forks.arrow_glacier.transactions.ArrowGlacierTransactionBuilder
-
header
¶
-
transactions
¶
-
uncles
¶
-
-
class
eth.vm.forks.arrow_glacier.blocks.
ArrowGlacierBlockHeader
(difficulty: int, block_number: NewType.<locals>.new_type, gas_limit: int, timestamp: int = None, coinbase: NewType.<locals>.new_type = b'x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00', parent_hash: NewType.<locals>.new_type = b'x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00', uncles_hash: NewType.<locals>.new_type = b'x1dxccMxe8xdexc7]zxabx85xb5gxb6xccxd4x1axd3x12Ex1bx94x8atx13xf0xa1Bxfd@xd4x93G', state_root: NewType.<locals>.new_type = b'Vxe8x1fx17x1bxccUxa6xffx83Exe6x92xc0xf8n[Hxe0x1bx99lxadxc0x01b/xb5xe3cxb4!', transaction_root: NewType.<locals>.new_type = b'Vxe8x1fx17x1bxccUxa6xffx83Exe6x92xc0xf8n[Hxe0x1bx99lxadxc0x01b/xb5xe3cxb4!', receipt_root: NewType.<locals>.new_type = b'Vxe8x1fx17x1bxccUxa6xffx83Exe6x92xc0xf8n[Hxe0x1bx99lxadxc0x01b/xb5xe3cxb4!', bloom: int = 0, gas_used: int = 0, extra_data: bytes = b'', mix_hash: NewType.<locals>.new_type = b'x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00', nonce: bytes = b'x00x00x00x00x00x00x00B', base_fee_per_gas: int = 0)¶ Bases:
eth.vm.forks.london.blocks.LondonBlockHeader
,abc.ABC
-
base_fee_per_gas
¶
-
block_number
¶
-
bloom
¶
-
coinbase
¶
-
difficulty
¶
-
extra_data
¶
-
gas_limit
¶
-
gas_used
¶
-
mix_hash
¶
-
nonce
¶
-
parent_hash
¶
-
receipt_root
¶
-
state_root
¶
-
timestamp
¶
-
transaction_root
¶
-
uncles_hash
¶
-
-
class
eth.vm.forks.arrow_glacier.blocks.
ArrowGlacierMiningHeader
(*args, **kwargs)¶ Bases:
eth.vm.forks.london.blocks.LondonMiningHeader
,abc.ABC
-
base_fee_per_gas
¶
-
block_number
¶
-
bloom
¶
-
coinbase
¶
-
difficulty
¶
-
extra_data
¶
-
gas_limit
¶
-
gas_used
¶
-
parent_hash
¶
-
receipt_root
¶
-
state_root
¶
-
timestamp
¶
-
transaction_root
¶
-
uncles_hash
¶
-
eth.vm.forks.arrow_glacier.computation module¶
-
class
eth.vm.forks.arrow_glacier.computation.
ArrowGlacierComputation
(state: eth.abc.StateAPI, message: eth.abc.MessageAPI, transaction_context: eth.abc.TransactionContextAPI)¶ Bases:
eth.vm.forks.london.computation.LondonComputation
A class for all execution message computations in the
ArrowGlacier
fork. Inherits fromLondonComputation
eth.vm.forks.arrow_glacier.headers module¶
-
eth.vm.forks.arrow_glacier.headers.
create_arrow_glacier_header_from_parent
¶
eth.vm.forks.arrow_glacier.state module¶
-
class
eth.vm.forks.arrow_glacier.state.
ArrowGlacierState
(db: eth.abc.AtomicDatabaseAPI, execution_context: eth.abc.ExecutionContextAPI, state_root: NewType.<locals>.new_type)¶ Bases:
eth.vm.forks.london.state.LondonState
-
computation_class
¶ alias of
eth.vm.forks.arrow_glacier.computation.ArrowGlacierComputation
-
transaction_executor_class
¶ alias of
ArrowGlacierTransactionExecutor
-
-
class
eth.vm.forks.arrow_glacier.state.
ArrowGlacierTransactionExecutor
(vm_state: eth.abc.StateAPI)¶
eth.vm.forks.arrow_glacier.transactions module¶
-
class
eth.vm.forks.arrow_glacier.transactions.
ArrowGlacierLegacyTransaction
(*args, **kwargs)¶ Bases:
eth.vm.forks.london.transactions.LondonLegacyTransaction
,abc.ABC
-
data
¶
-
gas
¶
-
gas_price
¶
-
nonce
¶
-
r
¶
-
s
¶
-
to
¶
-
v
¶
-
value
¶
-
-
class
eth.vm.forks.arrow_glacier.transactions.
ArrowGlacierTransactionBuilder
¶ Bases:
eth.vm.forks.london.transactions.LondonTransactionBuilder
-
legacy_signed
¶ alias of
ArrowGlacierLegacyTransaction
-
legacy_unsigned
¶
-
-
class
eth.vm.forks.arrow_glacier.transactions.
ArrowGlacierUnsignedLegacyTransaction
(*args, **kwargs)¶ Bases:
eth.vm.forks.london.transactions.LondonUnsignedLegacyTransaction
-
as_signed_transaction
(private_key: eth_keys.datatypes.PrivateKey, chain_id: int = None) → eth.vm.forks.arrow_glacier.transactions.ArrowGlacierLegacyTransaction¶ Return a version of this transaction which has been signed using the provided private_key
-
data
¶
-
gas
¶
-
gas_price
¶
-
nonce
¶
-
to
¶
-
value
¶
-
Module contents¶
-
class
eth.vm.forks.arrow_glacier.
ArrowGlacierVM
(header: eth.abc.BlockHeaderAPI, chaindb: eth.abc.ChainDatabaseAPI, chain_context: eth.abc.ChainContextAPI, consensus_context: eth.abc.ConsensusContextAPI)¶ Bases:
eth.vm.forks.london.LondonVM
-
block_class
¶ alias of
eth.vm.forks.arrow_glacier.blocks.ArrowGlacierBlock
-
compute_difficulty
¶
-
configure_header
¶
-
create_header_from_parent
¶
-
fork
= 'arrow-glacier'¶
-
Gray Glacier¶
Submodules¶
eth.vm.forks.gray_glacier.blocks module¶
-
class
eth.vm.forks.gray_glacier.blocks.
GrayGlacierBlock
(header: eth.abc.BlockHeaderAPI, transactions: Sequence[eth.abc.SignedTransactionAPI] = None, uncles: Sequence[eth.abc.BlockHeaderAPI] = None)¶ Bases:
eth.vm.forks.arrow_glacier.blocks.ArrowGlacierBlock
-
transaction_builder
¶ alias of
eth.vm.forks.gray_glacier.transactions.GrayGlacierTransactionBuilder
-
header
¶
-
transactions
¶
-
uncles
¶
-
-
class
eth.vm.forks.gray_glacier.blocks.
GrayGlacierBlockHeader
(difficulty: int, block_number: NewType.<locals>.new_type, gas_limit: int, timestamp: int = None, coinbase: NewType.<locals>.new_type = b'x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00', parent_hash: NewType.<locals>.new_type = b'x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00', uncles_hash: NewType.<locals>.new_type = b'x1dxccMxe8xdexc7]zxabx85xb5gxb6xccxd4x1axd3x12Ex1bx94x8atx13xf0xa1Bxfd@xd4x93G', state_root: NewType.<locals>.new_type = b'Vxe8x1fx17x1bxccUxa6xffx83Exe6x92xc0xf8n[Hxe0x1bx99lxadxc0x01b/xb5xe3cxb4!', transaction_root: NewType.<locals>.new_type = b'Vxe8x1fx17x1bxccUxa6xffx83Exe6x92xc0xf8n[Hxe0x1bx99lxadxc0x01b/xb5xe3cxb4!', receipt_root: NewType.<locals>.new_type = b'Vxe8x1fx17x1bxccUxa6xffx83Exe6x92xc0xf8n[Hxe0x1bx99lxadxc0x01b/xb5xe3cxb4!', bloom: int = 0, gas_used: int = 0, extra_data: bytes = b'', mix_hash: NewType.<locals>.new_type = b'x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00', nonce: bytes = b'x00x00x00x00x00x00x00B', base_fee_per_gas: int = 0)¶ Bases:
eth.vm.forks.arrow_glacier.blocks.ArrowGlacierBlockHeader
,abc.ABC
-
base_fee_per_gas
¶
-
block_number
¶
-
bloom
¶
-
coinbase
¶
-
difficulty
¶
-
extra_data
¶
-
gas_limit
¶
-
gas_used
¶
-
mix_hash
¶
-
nonce
¶
-
parent_hash
¶
-
receipt_root
¶
-
state_root
¶
-
timestamp
¶
-
transaction_root
¶
-
uncles_hash
¶
-
-
class
eth.vm.forks.gray_glacier.blocks.
GrayGlacierMiningHeader
(*args, **kwargs)¶ Bases:
eth.vm.forks.arrow_glacier.blocks.ArrowGlacierMiningHeader
,abc.ABC
-
base_fee_per_gas
¶
-
block_number
¶
-
bloom
¶
-
coinbase
¶
-
difficulty
¶
-
extra_data
¶
-
gas_limit
¶
-
gas_used
¶
-
parent_hash
¶
-
receipt_root
¶
-
state_root
¶
-
timestamp
¶
-
transaction_root
¶
-
uncles_hash
¶
-
eth.vm.forks.gray_glacier.computation module¶
-
class
eth.vm.forks.gray_glacier.computation.
GrayGlacierComputation
(state: eth.abc.StateAPI, message: eth.abc.MessageAPI, transaction_context: eth.abc.TransactionContextAPI)¶ Bases:
eth.vm.forks.arrow_glacier.computation.ArrowGlacierComputation
A class for all execution message computations in the
GrayGlacier
fork. Inherits fromArrowGlacierComputation
eth.vm.forks.gray_glacier.headers module¶
-
eth.vm.forks.gray_glacier.headers.
create_gray_glacier_header_from_parent
¶
eth.vm.forks.gray_glacier.state module¶
-
class
eth.vm.forks.gray_glacier.state.
GrayGlacierState
(db: eth.abc.AtomicDatabaseAPI, execution_context: eth.abc.ExecutionContextAPI, state_root: NewType.<locals>.new_type)¶ Bases:
eth.vm.forks.arrow_glacier.state.ArrowGlacierState
-
computation_class
¶ alias of
eth.vm.forks.gray_glacier.computation.GrayGlacierComputation
-
transaction_executor_class
¶ alias of
GrayGlacierTransactionExecutor
-
-
class
eth.vm.forks.gray_glacier.state.
GrayGlacierTransactionExecutor
(vm_state: eth.abc.StateAPI)¶ Bases:
eth.vm.forks.arrow_glacier.state.ArrowGlacierTransactionExecutor
eth.vm.forks.gray_glacier.transactions module¶
-
class
eth.vm.forks.gray_glacier.transactions.
GrayGlacierLegacyTransaction
(*args, **kwargs)¶ Bases:
eth.vm.forks.arrow_glacier.transactions.ArrowGlacierLegacyTransaction
,abc.ABC
-
data
¶
-
gas
¶
-
gas_price
¶
-
nonce
¶
-
r
¶
-
s
¶
-
to
¶
-
v
¶
-
value
¶
-
-
class
eth.vm.forks.gray_glacier.transactions.
GrayGlacierTransactionBuilder
¶ Bases:
eth.vm.forks.arrow_glacier.transactions.ArrowGlacierTransactionBuilder
-
legacy_signed
¶ alias of
GrayGlacierLegacyTransaction
-
legacy_unsigned
¶ alias of
GrayGlacierUnsignedLegacyTransaction
-
-
class
eth.vm.forks.gray_glacier.transactions.
GrayGlacierUnsignedLegacyTransaction
(*args, **kwargs)¶ Bases:
eth.vm.forks.arrow_glacier.transactions.ArrowGlacierUnsignedLegacyTransaction
-
as_signed_transaction
(private_key: eth_keys.datatypes.PrivateKey, chain_id: int = None) → eth.vm.forks.gray_glacier.transactions.GrayGlacierLegacyTransaction¶ Return a version of this transaction which has been signed using the provided private_key
-
data
¶
-
gas
¶
-
gas_price
¶
-
nonce
¶
-
to
¶
-
value
¶
-
Module contents¶
-
class
eth.vm.forks.gray_glacier.
GrayGlacierVM
(header: eth.abc.BlockHeaderAPI, chaindb: eth.abc.ChainDatabaseAPI, chain_context: eth.abc.ChainContextAPI, consensus_context: eth.abc.ConsensusContextAPI)¶ Bases:
eth.vm.forks.arrow_glacier.ArrowGlacierVM
-
block_class
¶
-
compute_difficulty
¶
-
configure_header
¶
-
create_header_from_parent
¶
-
fork
= 'gray-glacier'¶
-