erc_4626.warmup

Documentation for eth_defi.erc_4626.warmup Python module.

Warmup system to detect broken vault contract calls.

Before running historical price scans, we test each vault’s supported calls to detect which ones revert or are too expensive. Results are stored in VaultReaderState and persisted to disk.

See README-reader-states.md for documentation.

Module Attributes

DEFAULT_MAX_GAS

Maximum gas allowed for warmup calls before marking as broken Calls using more gas than this are considered too expensive for multicall batching TelosC Surge uses 36M gas for maxDeposit() - entire Plasma block limit

Functions

warmup_vault_reader(reader, block_number[, ...])

Test a single vault reader's supported calls.

warmup_vault_readers(web3, readers[, ...])

Run warmup checks on all vault readers.

DEFAULT_MAX_GAS = 1000000

Maximum gas allowed for warmup calls before marking as broken Calls using more gas than this are considered too expensive for multicall batching TelosC Surge uses 36M gas for maxDeposit() - entire Plasma block limit

warmup_vault_reader(reader, block_number, max_gas=1000000)

Test a single vault reader’s supported calls.

The reader provides the calls to test via get_warmup_calls(). Each call is tested individually and the result stored in reader_state.

Uses gas estimation to detect expensive calls before executing them. Calls using more gas than max_gas are marked as broken without execution.

Parameters
  • reader (eth_defi.erc_4626.vault.ERC4626HistoricalReader) – The vault reader to test

  • block_number (int) – Block number to use for testing

  • max_gas (int) – Maximum allowed gas for a call. Calls exceeding this are marked broken. Defaults to DEFAULT_MAX_GAS (1M gas).

Returns

Dict of function_name -> (check_block, reverts) for newly checked calls

Return type

dict[str, tuple[int, bool]]

warmup_vault_readers(web3, readers, block_number=None)

Run warmup checks on all vault readers.

Parameters
Returns

Dict of vault_address -> {function_name -> (check_block, reverts)}

Return type

dict[str, dict[str, tuple[int, bool]]]