AccountableHistoricalReader
Documentation for eth_defi.erc_4626.vault_protocol.accountable.vault.AccountableHistoricalReader Python class.
- class AccountableHistoricalReader
Bases:
eth_defi.erc_4626.vault.ERC4626HistoricalReaderRead Accountable vault core data with corrected NAV and available liquidity.
Accountable’s
totalAssets()only returns idle liquidity in the vault contract, excluding capital deployed by the strategy vialockAssets(). This means the standard ERC-4626totalAssets()severely underreports the true vault NAV.This reader:
Computes the true NAV as
share_price * total_supply(derived fromconvertToAssetswhich usessharePrice())Exposes the raw
totalAssets()value asavailable_liquiditysince it represents the idle capital available for immediate withdrawals
Attributes summary
addressfirst_blockone_raw_shareMethods summary
__init__(vault, stateful)Polling endpoints defined in ERC-4626 spec.
Get the onchain calls that are needed to read the share price.
dictify_multicall_results(block_number, ...)Convert batch of multicalls made for this vault to more digestible dict.
Yield (function_name, callable, contract_call) tuples for warmup testing.
process_core_erc_4626_result(call_by_name)Decode common ERC-4626 calls.
process_result(block_number, timestamp, ...)Process the result of mult
should_skip_call(function_name)Check if a specific function call should be skipped.
- construct_multicalls()
Get the onchain calls that are needed to read the share price.
- process_result(block_number, timestamp, call_results)
Process the result of mult
Calls are created in
construct_multicalls()This method combines result of this calls to a easy to manage historical record
VaultHistoricalRead
- Parameters
block_number (int) –
timestamp (datetime.datetime) –
call_results (list[eth_defi.event_reader.multicall_batcher.EncodedCallResult]) –
- Return type
- __init__(vault, stateful)
- Parameters
vault (eth_defi.erc_4626.vault.ERC4626Vault) –
stateful (bool) –
- construct_core_erc_4626_multicall()
Polling endpoints defined in ERC-4626 spec.
Does not include fee calls which do not have standard
- dictify_multicall_results(block_number, call_results, allow_failure=True)
Convert batch of multicalls made for this vault to more digestible dict.
Assert that all multicalls succeed
- Returns
Dictionary where each multicall is keyed by its
EncodedCall.extra_data["function"]- Parameters
block_number (int) –
call_results (list[eth_defi.event_reader.multicall_batcher.EncodedCallResult]) –
- Return type
dict[str, eth_defi.event_reader.multicall_batcher.EncodedCallResult]
- get_warmup_calls()
Yield (function_name, callable, contract_call) tuples for warmup testing.
Each callable should execute a single contract call. If it raises, the function is marked as broken.
The optional contract_call is used for gas estimation to detect expensive calls before executing them. If provided, calls using excessive gas (>1M gas) will be marked as broken without execution.
Override in subclasses to add protocol-specific calls.
- process_core_erc_4626_result(call_by_name)
Decode common ERC-4626 calls.
- Parameters
call_by_name (dict[str, eth_defi.event_reader.multicall_batcher.EncodedCallResult]) –
- Return type