erc_4626.vault_protocol.accountable.offchain_metadata
Documentation for eth_defi.erc_4626.vault_protocol.accountable.offchain_metadata Python module.
Accountable Capital vault offchain metadata.
Accountable stores vault descriptions in their web app, not on-chain
We reverse-engineered the React SPA at
yield.accountable.capitaland discovered API endpoints that serve vault metadata including strategy descriptionsThe listing endpoint
/api/loanreturns paginated vault data with basic infoThe detail endpoint
/api/loan/{id}returns full metadata includingvault_strategyandcompany_infodescriptionsWe fetch and cache this data locally to avoid repeated API calls
Two-level caching: disk (2-day TTL) + in-process dictionary
Single cache file for all chains (Accountable has ~7 vaults total)
Functions
|
Fetch vault metadata from Accountable's offchain yield app API. |
|
Fetch and cache all Accountable offchain vault metadata. |
Classes
Metadata about an Accountable vault from offchain source. |
- class AccountableVaultMetadata
Bases:
TypedDictMetadata about an Accountable vault from offchain source.
Fetched from the Accountable yield app API at
yield.accountable.capital. Discovered by reverse-engineering the React SPA JavaScript bundles.Listing endpoint:
GET /api/loanDetail endpoint:
GET /api/loan/{id}
The detail endpoint returns
vault_strategyandcompany_infofields that provide strategy and company descriptions.- __init__(*args, **kwargs)
- __new__(**kwargs)
- clear()
Remove all items from the dict.
- copy()
Return a shallow copy of the dict.
- fromkeys(value=None, /)
Create a new dictionary with keys from iterable and values set to value.
- get(key, default=None, /)
Return the value for key if key is in the dictionary, else default.
- items()
Return a set-like object providing a view on the dict’s items.
- keys()
Return a set-like object providing a view on the dict’s keys.
- pop(k[, d]) v, remove specified key and return the corresponding value.
If the key is not found, return the default if given; otherwise, raise a KeyError.
- popitem()
Remove and return a (key, value) pair as a 2-tuple.
Pairs are returned in LIFO (last-in, first-out) order. Raises KeyError if the dict is empty.
- setdefault(key, default=None, /)
Insert key with a value of default if key is not in the dictionary.
Return the value for key if key is in the dictionary, else default.
- update([E, ]**F) None. Update D from mapping/iterable E and F.
If E is present and has a .keys() method, then does: for k in E.keys(): D[k] = E[k] If E is present and lacks a .keys() method, then does: for k, v in E: D[k] = v In either case, this is followed by: for k in F: D[k] = F[k]
- values()
Return an object providing a view on the dict’s values.
- fetch_accountable_vault_metadata(web3, vault_address)
Fetch vault metadata from Accountable’s offchain yield app API.
Do both in-process and disk cache to avoid repeated fetches
- Parameters
web3 (web3.main.Web3) – Web3 instance (used to checksum address)
vault_address (eth_typing.evm.HexAddress) – Vault contract address
- Returns
Metadata dict or None if the vault is not in Accountable’s app database
- Return type
Optional[eth_defi.erc_4626.vault_protocol.accountable.offchain_metadata.AccountableVaultMetadata]
- fetch_accountable_vaults(cache_path=PosixPath('/home/runner/.tradingstrategy/cache/accountable'), api_base_url='https://yield.accountable.capital/api', now_=None, max_cache_duration=datetime.timedelta(days=2))
Fetch and cache all Accountable offchain vault metadata.
Fetches all vaults from the listing endpoint across all chains
Fetches detail for each vault to get strategy descriptions
Single JSON cache file for all Accountable vaults (~7 total)
Multiprocess safe via file lock
- Parameters
cache_path (pathlib.Path) – Directory for cache files (default
~/.tradingstrategy/cache/accountable/)api_base_url (str) – Accountable API base URL
now – Override current time (for testing)
max_cache_duration (datetime.timedelta) – How long before refreshing cache (default 2 days)
now_ (Optional[datetime.datetime]) –
- Returns
Dict mapping checksummed vault address to
AccountableVaultMetadata- Return type
dict[str, eth_defi.erc_4626.vault_protocol.accountable.offchain_metadata.AccountableVaultMetadata]