MulticallWrapper

Documentation for eth_defi.event_reader.multicall_batcher.MulticallWrapper Python class.

class MulticallWrapper

Bases: abc.ABC

Wrap a call going through the Multicall contract.

Attributes summary

call

Bound web3.py function with args in the place

debug

Set for extensive info logging

contract_address

Methods summary

__init__(call, debug)

get_address_and_data()

get_human_args()

Get Solidity args as human readable string for debugging.

get_human_id()

get_key()

Get key that will identify this call in the result dictionary

handle(succeed, raw_return_value)

Parse the call result.

multicall_callback(succeed, raw_return_value)

Convert the raw Solidity function call result to a denominated token amount.

call: web3.contract.contract.ContractFunction

Bound web3.py function with args in the place

debug: bool

Set for extensive info logging

abstract get_key()

Get key that will identify this call in the result dictionary

Return type

Hashable

abstract handle(succeed, raw_return_value)

Parse the call result.

Parameters
  • succeed (bool) – Did we revert or not

  • raw_return_value (bytes) – Undecoded bytes from the Solidity function call

Returns

The value placed in the return dict

Return type

Any

get_human_args()

Get Solidity args as human readable string for debugging.

Return type

str

multicall_callback(succeed, raw_return_value)

Convert the raw Solidity function call result to a denominated token amount.

  • Multicall library callback

Returns

The token amount in the reserve currency we get on the market sell.

None if this path was not supported (Solidity reverted).

Parameters
  • succeed (bool) –

  • raw_return_value (Any) –

Return type

Any

__init__(call, debug)
Parameters
  • call (web3.contract.contract.ContractFunction) –

  • debug (bool) –

Return type

None