ethpector.data package¶
Submodules¶
ethpector.data.base module¶
- class ethpector.data.base.DataProvider[source]¶
Bases:
object
Base class for ethpector data-providers
- account_summary(address: str) AccountSummary [source]¶
Default implementation to acquire an address summary
- Parameters:
address (str) – Hex-string of an address.
- Returns:
Summary of the account state.
- Return type:
ethpector.data.datatypes module¶
- class ethpector.data.datatypes.AccountSummary(is_contract: bool, balance: int, ens_name: str)[source]¶
Bases:
object
Basic summary of current account state of an address.
- class ethpector.data.datatypes.AssemblySummary(constants, function_entrypoints, jump_targets, jumps, jumpdests, meta_data, unique_instructions_visited, total_instructions)[source]¶
Bases:
AnnotationBase
- constants: list[ethpector.data.datatypes.ConstantSummary]¶
- function_entrypoints: list[ethpector.data.datatypes.FunctionEntrypoint]¶
- jump_targets: list[ethpector.data.datatypes.JumpTarget]¶
- meta_data: MetaDataString¶
- class ethpector.data.datatypes.Call(state, _type, to, gas, value=0x0, data=None)[source]¶
Bases:
SymbolicAnnotation
- data: SymbolicMemorySlice¶
- gas: SymbolicVariable¶
- type: SymbolicVariable¶
- value: SymbolicVariable¶
- class ethpector.data.datatypes.Calldatacopy(state, offset, mem_addr, length)[source]¶
Bases:
SymbolicAnnotation
- length: SymbolicVariable¶
- mem_addr: SymbolicVariable¶
- offset: SymbolicVariable¶
- class ethpector.data.datatypes.Calldataload(state, offset)[source]¶
Bases:
SymbolicAnnotation
- offset: SymbolicVariable¶
- class ethpector.data.datatypes.ConditionalJump(state, to, condition)[source]¶
Bases:
SymbolicAnnotation
- class ethpector.data.datatypes.ConstantSummary(length, value, introduced_at)[source]¶
Bases:
AnnotationBase
- class ethpector.data.datatypes.Create(state, value, data)[source]¶
Bases:
SymbolicAnnotation
- data: SymbolicMemorySlice¶
- value: SymbolicVariable¶
- class ethpector.data.datatypes.Create2(state, salt, value, data)[source]¶
Bases:
SymbolicAnnotation
- data: SymbolicMemorySlice¶
- salt: SymbolicVariable¶
- value: SymbolicVariable¶
- class ethpector.data.datatypes.FunctionEntrypoint(pc, function_name)[source]¶
Bases:
PCAnnotation
- class ethpector.data.datatypes.FunctionSummary(name)[source]¶
Bases:
AnnotationBase
- class ethpector.data.datatypes.JumpTarget(pc, target)[source]¶
Bases:
PCAnnotation
- class ethpector.data.datatypes.Log(state, n, topic0, topic1, topic2, topic3, data)[source]¶
Bases:
SymbolicAnnotation
- data: SymbolicMemorySlice¶
- topic0: SymbolicVariable¶
- topic1: SymbolicVariable¶
- topic2: SymbolicVariable¶
- topic3: SymbolicVariable¶
- class ethpector.data.datatypes.MemoryLoad(state, slot)[source]¶
Bases:
SymbolicAnnotation
- slot: SymbolicVariable¶
- class ethpector.data.datatypes.MemoryWrite(state, slot, value)[source]¶
Bases:
SymbolicAnnotation
- slot: SymbolicVariable¶
- value: SymbolicVariable¶
- class ethpector.data.datatypes.MetaDataString(raw, index, data, url)[source]¶
Bases:
AnnotationBase
- class ethpector.data.datatypes.PCAnnotation(pc)[source]¶
Bases:
AnnotationBase
- class ethpector.data.datatypes.Push(state, value)[source]¶
Bases:
SymbolicAnnotation
- class ethpector.data.datatypes.Return(state, data)[source]¶
Bases:
SymbolicAnnotation
- data: SymbolicMemorySlice¶
- class ethpector.data.datatypes.Revert(state, data)[source]¶
Bases:
SymbolicAnnotation
- data: SymbolicMemorySlice¶
- class ethpector.data.datatypes.Selfdestruct(state, address)[source]¶
Bases:
SymbolicAnnotation
- address: SymbolicVariable¶
- class ethpector.data.datatypes.SenderConstraintFunction(state, address, condition, model, true_branch_reachable=None, false_branch_reachable=None, is_storage_address=True, probably_mapping=False)[source]¶
Bases:
SymbolicAnnotation
- address: SymbolicVariable¶
- condition: SymbolicExpression¶
- class ethpector.data.datatypes.StorageLoad(state, slot)[source]¶
Bases:
SymbolicAnnotation
- slot: SymbolicVariable¶
- class ethpector.data.datatypes.StorageWrite(state, slot, value)[source]¶
Bases:
SymbolicAnnotation
- slot: SymbolicVariable¶
- value: SymbolicVariable¶
- class ethpector.data.datatypes.SymbolicAnnotation(state)[source]¶
Bases:
PCAnnotation
- class ethpector.data.datatypes.SymbolicExecSummary(functions: list[ethpector.data.datatypes.FunctionSummary], calls: list[ethpector.data.datatypes.Call], storage_reads: list[ethpector.data.datatypes.StorageLoad], storage_writes: list[ethpector.data.datatypes.StorageWrite], memory_reads: list[ethpector.data.datatypes.MemoryLoad], memory_writes: list[ethpector.data.datatypes.MemoryWrite], logs: list[ethpector.data.datatypes.Log], returns: list[ethpector.data.datatypes.Return], reverts: list[ethpector.data.datatypes.Revert], calldataloads: list[ethpector.data.datatypes.Calldataload], calldatacopies: list[ethpector.data.datatypes.Calldatacopy], selfdestructs: list[ethpector.data.datatypes.Selfdestruct], conditional_jumps: list[ethpector.data.datatypes.ConditionalJump], unconditional_jumps: list[ethpector.data.datatypes.UnconditionalJump], pushes: list[ethpector.data.datatypes.Push], creates: list[ethpector.data.datatypes.Push], create2s: list[ethpector.data.datatypes.Push], sender_constraint_functions: list[ethpector.data.datatypes.SenderConstraintFunction], unique_instructions_visited: int)[source]¶
Bases:
object
- calldatacopies: list[ethpector.data.datatypes.Calldatacopy]¶
- calldataloads: list[ethpector.data.datatypes.Calldataload]¶
- calls: list[ethpector.data.datatypes.Call]¶
- conditional_jumps: list[ethpector.data.datatypes.ConditionalJump]¶
- create2s: list[ethpector.data.datatypes.Push]¶
- creates: list[ethpector.data.datatypes.Push]¶
- functions: list[ethpector.data.datatypes.FunctionSummary]¶
- memory_reads: list[ethpector.data.datatypes.MemoryLoad]¶
- memory_writes: list[ethpector.data.datatypes.MemoryWrite]¶
- pushes: list[ethpector.data.datatypes.Push]¶
- returns: list[ethpector.data.datatypes.Return]¶
- reverts: list[ethpector.data.datatypes.Revert]¶
- selfdestructs: list[ethpector.data.datatypes.Selfdestruct]¶
- sender_constraint_functions: list[ethpector.data.datatypes.SenderConstraintFunction]¶
- storage_reads: list[ethpector.data.datatypes.StorageLoad]¶
- storage_writes: list[ethpector.data.datatypes.StorageWrite]¶
- unconditional_jumps: list[ethpector.data.datatypes.UnconditionalJump]¶
- class ethpector.data.datatypes.SymbolicMemorySlice(mem, start, length)[source]¶
Bases:
object
Representation of a slice of memory in sym-exec. Data can be symbolic.
- Parameters:
length (SymbolicVariable) – Length of the slice
mem (object) – The slice itself, can be none if length or start are symbolic
start (SymbolicVariable) – Start position of the memory slice
- class ethpector.data.datatypes.UnconditionalJump(state, to)[source]¶
Bases:
SymbolicAnnotation
- ethpector.data.datatypes.decode_memory(state: GlobalState, meminstart: SymbolicVariable, meminsz: SymbolicVariable) SymbolicMemorySlice [source]¶
Tries to decode a slice of memory extracted during symbolic execution.
- Parameters:
state (GlobalState) – State of we are in in sym-exec
meminstart (SymbolicVariable) – Representation of the start index
concrete) ((symbolic or) –
meminsz (SymbolicVariable) – Representation of the length of the slice
concrete) –
- Returns:
Slice of data.
- Return type:
- ethpector.data.datatypes.decompose_inst(state: GlobalState, enforce_instruction=None)[source]¶
Helper to extract the current state and instruction for a sym-exec state
- Parameters:
state (GlobalState) – Sym-exec state we are in
enforce_instruction (None, optional) – If set to Instruction name,
instruction. (throws if called in a state with a different) –
- Returns:
(op, address, instruction, stack, function, last_op)
- Return type:
- Raises:
ethpector.data.etherscan module¶
- class ethpector.data.etherscan.EtherscanProvider(etherscan_token)[source]¶
Bases:
DataProvider
Etherscan data-provider. Supports fetching source-code, bytecode, ABI files, balances etc. for addresses.
ethpector.data.ipfs module¶
- class ethpector.data.ipfs.IpfsProvider[source]¶
Bases:
DataProvider
CURRENTLY not implemented.
ethpector.data.node module¶
- class ethpector.data.node.NodeProvider(rpc_url)[source]¶
Bases:
DataProvider
Uses the Ethereum RPC interface to fetch code, balances, storage state etc. for a particular address
- call(address: str, payload: str)[source]¶
Calls implementation() on the contract for standardized proxies this should return the implementation
ethpector.data.provider module¶
- class ethpector.data.provider.AggregateProvider(config)[source]¶
Bases:
DataProvider
The aggregate provider provides a simple way to query all available data-sources for a piece of information. The return value is always a dict where keys are the unique name provided by provider_name.
ethpector.data.signatures module¶
- class ethpector.data.signatures.SignatureProvider(enable_online_lookup=True)[source]¶
Bases:
DataProvider
Queries function and event signatures from local and online sources. Function signatures are first resolved via mythrils offline db. If enable_online_lookup is set to true the 4bytes API is called if a function signature is not found.
Event signatures are directly queried from 4bytes and then stored in a local on disk cache.
- sigdb¶
Description
- Type:
TYPE
ethpector.data.sourcify module¶
- class ethpector.data.sourcify.SourcifyProvider(base_url, chain_id)[source]¶
Bases:
DataProvider
Provides source-code from the distributed source-code verification service sourcify.
ethpector.data.swarm module¶
- class ethpector.data.swarm.SwarmProvider[source]¶
Bases:
DataProvider
CURRENTLY not implemented.