mythril.laser.ethereum.transaction package

Submodules

mythril.laser.ethereum.transaction.concolic module

This module contains functions to set up and execute concolic message calls.

mythril.laser.ethereum.transaction.concolic.execute_contract_creation(laser_evm, callee_address, caller_address, origin_address, data, gas_limit, gas_price, value, code=None, track_gas=False, contract_name=None)[source]

Executes a contract creation transaction concretely.

Parameters:
  • laser_evm

  • callee_address

  • caller_address

  • origin_address

  • code

  • data

  • gas_limit

  • gas_price

  • value

  • track_gas

Returns:

mythril.laser.ethereum.transaction.concolic.execute_message_call(laser_evm, callee_address, caller_address, origin_address, data, gas_limit, gas_price, value, code=None, track_gas=False) None | List[GlobalState][source]

Execute a message call transaction from all open states.

Parameters:
  • laser_evm

  • callee_address

  • caller_address

  • origin_address

  • code

  • data

  • gas_limit

  • gas_price

  • value

  • track_gas

Returns:

mythril.laser.ethereum.transaction.concolic.execute_transaction(*args, **kwargs) None | List[GlobalState][source]

Chooses the transaction type based on callee address and executes the transaction

mythril.laser.ethereum.transaction.symbolic module

This module contains functions setting up and executing transactions with symbolic values.

class mythril.laser.ethereum.transaction.symbolic.Actors(creator=1004753105490295263244812946565948198177742958590, attacker=1271270613000041655817448348132275889066893754095, someguy=974334424887268612135789888477522013103955028650)[source]

Bases: object

property attacker
property creator
mythril.laser.ethereum.transaction.symbolic.execute_contract_creation(laser_evm, contract_initialization_code, contract_name=None, world_state=None, origin=1004753105490295263244812946565948198177742958590, caller=1004753105490295263244812946565948198177742958590) Account[source]

Executes a contract creation transaction from all open states.

Parameters:
  • laser_evm

  • contract_initialization_code

  • contract_name

Returns:

mythril.laser.ethereum.transaction.symbolic.execute_message_call(laser_evm, callee_address: BitVec, func_hashes: List[List[int]] | None = None) None[source]

Executes a message call transaction from all open states.

Parameters:
  • laser_evm

  • callee_address

mythril.laser.ethereum.transaction.symbolic.execute_message_call_preprocessing(laser_evm, callee_address: BitVec) None[source]

Executes a message call transaction from all open states.

Parameters:
  • laser_evm

  • callee_address

mythril.laser.ethereum.transaction.symbolic.execute_transaction(*args, **kwargs)[source]

Chooses the transaction type based on callee address and executes the transaction

mythril.laser.ethereum.transaction.symbolic.generate_function_constraints(calldata: SymbolicCalldata, func_hashes: List[List[int]]) List[Bool][source]

This will generate constraints for fixing the function call part of calldata :param calldata: Calldata :param func_hashes: The list of function hashes allowed for this transaction :return: Constraints List

mythril.laser.ethereum.transaction.transaction_models module

This module contians the transaction models used throughout LASER’s symbolic execution.

class mythril.laser.ethereum.transaction.transaction_models.BaseTransaction(world_state: WorldState, callee_account: Account | None = None, caller: ExprRef | None = None, call_data=None, identifier: str | None = None, gas_price=None, gas_limit=None, origin=None, code=None, call_value=None, init_call_data=True, static=False, base_fee=None)[source]

Bases: object

Basic transaction class holding common data.

initial_global_state() GlobalState[source]
initial_global_state_from_environment(environment, active_function)[source]
Parameters:
  • environment

  • active_function

Returns:

class mythril.laser.ethereum.transaction.transaction_models.ContractCreationTransaction(world_state: WorldState, caller: ExprRef | None = None, call_data=None, identifier: str | None = None, gas_price=None, gas_limit=None, origin=None, code=None, call_value=None, contract_name=None, contract_address=None, base_fee=None)[source]

Bases: BaseTransaction

Transaction object models an transaction.

end(global_state: GlobalState, return_data=None, revert=False)[source]
Parameters:
  • global_state

  • return_data

  • revert

initial_global_state() GlobalState[source]

Initialize the execution environment.

class mythril.laser.ethereum.transaction.transaction_models.MessageCallTransaction(*args, **kwargs)[source]

Bases: BaseTransaction

Transaction object models an transaction.

end(global_state: GlobalState, return_data=None, revert=False) None[source]
Parameters:
  • global_state

  • return_data

  • revert

initial_global_state() GlobalState[source]

Initialize the execution environment.

exception mythril.laser.ethereum.transaction.transaction_models.TransactionEndSignal(global_state: GlobalState, revert=False)[source]

Bases: Exception

Exception raised when a transaction is finalized.

exception mythril.laser.ethereum.transaction.transaction_models.TransactionStartSignal(transaction: MessageCallTransaction | ContractCreationTransaction, op_code: str, global_state: GlobalState)[source]

Bases: Exception

Exception raised when a new transaction is started.

class mythril.laser.ethereum.transaction.transaction_models.TxIdManager(*args, **kwargs)[source]

Bases: object

get_next_tx_id()[source]
restart_counter()[source]
set_counter(tx_id)[source]

Module contents