enzyme.vault
Documentation for eth_defi.enzyme.vault Python module.
High level interface to read Enzyme vaults.
See Vault.
Classes
Enzyme vault wrapper. |
- class Vault
Bases:
objectEnzyme vault wrapper.
Vaults are Enzyme Protocol “funds” where you have investors and assets
Investors have ownership of vault assets with a share token
Each vault has its denomiation asset, e.g. USDC that you use for the buy in
You buy-in to a vault using buyShares
Redemption is “in-kind” and you swap your share tokens to the tokens of underlying open positions and other assets
A separate vault owner (fund owner) can make the vault to perform trades
Vault in Enzyme are presented by two smart contracts
Vault contract
Comptroller contract
See Enzyme documentation for general information about vaults.
Example:
vault = Vault(vault_contract, comptroller_contract, deployment) print(f"Vault name: {vault.get_name()}") print(f"Denominated in: {vault.denomination_token}") raw_gross_asset_value = vault.get_gross_asset_value() print(f"Gross asset value: {vault.denomination_token.convert_to_decimals(raw_gross_asset_value):.2f} {vault.denomination_token.symbol}")
- __init__(vault, comptroller, deployment, generic_adapter=None, payment_forwarder=None, guard_contract=None, terms_of_service_contract=None, deployed_at_block=None, asset_manager=None, nominated_owner=None, deployer_hot_wallet=None)
- Parameters
vault (web3.contract.contract.Contract) –
comptroller (web3.contract.contract.Contract) –
deployment (eth_defi.enzyme.deployment.EnzymeDeployment) –
generic_adapter (Optional[web3.contract.contract.Contract]) –
payment_forwarder (Optional[web3.contract.contract.Contract]) –
guard_contract (Optional[web3.contract.contract.Contract]) –
terms_of_service_contract (Optional[web3.contract.contract.Contract]) –
deployer_hot_wallet (Optional[eth_defi.hotwallet.HotWallet]) –
- Return type
None
- property address: eth_typing.evm.HexAddress
The address of the vault contract.
- property denomination_token: eth_defi.token.TokenDetails
Get the denominator token for withdrawal/deposit.
Read the token on-chain details.
Cache the results for the future calls
- Returns
Usually ERC-20 details for USDC
- static fetch(web3, vault_address, generic_adapter_address=None, payment_forwarder=None, deployed_at_block=None, asset_manager=None, extra_addresses=None)
Fetch Enzyme vault and deployment information based only on the vault address.
Because vault does not have a way to cross-reference its contracts, we are now manually passing around a bunch of contracts and addresses.
- Parameters
extra_addresses (Optional[dict[str, str]]) – Enzyme contract addresses we have deployed and we must pass along.
web3 (web3.main.Web3) –
vault_address (Union[str, eth_typing.evm.HexAddress]) –
generic_adapter_address (Optional[Union[str, eth_typing.evm.HexAddress]]) –
payment_forwarder (Optional[Union[str, eth_typing.evm.HexAddress]]) –
asset_manager (Optional[eth_typing.evm.HexAddress]) –
- Returns
Enzyme vault instance with all the information populated in
- Return type
- fetch_denomination_token_usd_exchange_rate()
Get the exchange rate between token/USD.
Read the exchange rate using the configured Enzyme’s VaultInterpreter and its Chainlink aggregators.
- Returns
USD exchange rate
- Return type
- fetch_deployment_event(reader, start_block=1)
Get when the vault was deployed.
Warning
Because Ethereum nodes do not have indexes to get events per contract, this scan is going to take forever.
- Parameters
start_block – The first block to scan
reader (eth_defi.event_reader.reader.Web3EventReader) – Event reader method used
- Returns
Event log details
- Raises
AssertionError – If blockchain does not have an event for the deplyoed vault
- Return type
- get_denomination_asset()
Get the reserve ERC-20 asset for this vault.
- Return type
- get_deployment_info()
Get vault contract addresses to be saved as a deployment info.
Useful for shell scripting.
- Returns
Bunch of env mappings
- Return type
- get_gross_asset_value()
Calculate the gross asset value (GAV) of the fund.
Call the Solidity function that does this on the smart contract side.
See ComptrollerLib.sol.
- Returns
The gross assets in the denominated token.
- Return type
- get_owner()
Who is the vault owner.
Vault owner has special priviledges like calling the adapters.
See IVaultCore.sol.
- Return type
How mayn shares a user has.
- Returns
Raw token amount
- Parameters
user (eth_typing.evm.HexAddress) –
- Return type
Calculate the one share unit gross asset value (GAV) on the smart contract side.
Call the Solidity function that does this on the smart contract side.
See ComptrollerLib.sol.
- Returns
TODO - no idea
- Return type
Get the shares ERC-20 token for this vault.
Enzyme vault acts as ERC-20 contract as well.
- Return type
- get_tracked_assets()
Get the list of assets this vault tracks.
- Returns
List of ERC-20 addresses
- Return type
- is_supported_asset(address)
Does the vault support a particular asset.
If the asset is not supported, policy manager
At the moment, assets are whitelisted on Enzyme protocol level.
- Parameters
address (eth_typing.evm.HexAddress) –
- Return type
Get the shares token for withdrawal/deposit.
Read the token on-chain details.
Cache the results for the future calls
- Returns
ERC-20 details for a token with the fund name/symbol and 18 decimals.
- property web3: web3.main.Web3
Web3 connection.
Used for reading JSON-RPC calls