erc_4626.vault_protocol.ember.offchain_metadata
Documentation for eth_defi.erc_4626.vault_protocol.ember.offchain_metadata Python module.
Ember vault offchain metadata.
Ember stores vault descriptions, fees, and manager info in their web app, not on-chain
The vault listing endpoint
/api/v2/vaults?chain=ethereumreturns all EVM vaults with metadata including descriptions, fee parameters, APY, tags, and manager infoWe fetch and cache this data locally to avoid repeated API calls
Two-level caching: disk (2-day TTL) + in-process dictionary
API base: https://vaults.api.sui-prod.bluefin.io
Numeric encoding convention:
E9suffix: value multiplied by 10^9E18suffix: value multiplied by 10^18weeklyPerformanceFeeBpsE9: bps value in E9 format
Functions
|
Fetch vault metadata from Ember's offchain API. |
|
Fetch and cache all Ember offchain vault metadata. |
Classes
A reward token distributed by an Ember vault. |
|
Metadata about an Ember vault from offchain source. |
- class EmberRewardToken
Bases:
TypedDictA reward token distributed by an Ember vault.
- __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.
- class EmberVaultMetadata
Bases:
TypedDictMetadata about an Ember vault from offchain source.
Fetched from the Bluefin vaults API at
vaults.api.sui-prod.bluefin.io. Official API spec at SwaggerHub.Listing endpoint:
GET /api/v2/vaults?chain=ethereum
- __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_ember_vault_metadata(web3, vault_address)
Fetch vault metadata from Ember’s offchain 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 Ember’s database
- Return type
Optional[eth_defi.erc_4626.vault_protocol.ember.offchain_metadata.EmberVaultMetadata]
- fetch_ember_vaults(cache_path=PosixPath('/home/runner/.tradingstrategy/cache/ember'), api_base_url='https://vaults.api.sui-prod.bluefin.io/api/v2', chain='ethereum', now_=None, max_cache_duration=datetime.timedelta(days=2))
Fetch and cache all Ember offchain vault metadata.
Fetches vaults for the given chain from a single API call
Single JSON cache file for all Ember EVM vaults (~9 total)
Multiprocess safe via file lock
- Parameters
cache_path (pathlib.Path) – Directory for cache files (default
~/.tradingstrategy/cache/ember/)api_base_url (str) – Ember API base URL
chain (str) – Chain name as used by the Ember API (e.g.
"ethereum")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
EmberVaultMetadata- Return type
dict[str, eth_defi.erc_4626.vault_protocol.ember.offchain_metadata.EmberVaultMetadata]