enzyme.vault

Documentation for eth_defi.enzyme.vault Python module.

High level interface to read Enzyme vaults.

See Vault.

Classes

Vault

Enzyme vault wrapper.

class Vault

Bases: object

Enzyme 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

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
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
Returns

Enzyme vault instance with all the information populated in

Return type

eth_defi.enzyme.vault.Vault

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

decimal.Decimal

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
Returns

Event log details

Raises

AssertionError – If blockchain does not have an event for the deplyoed vault

Return type

dict

get_decimals()

Get the ERC-20 decimals of the shares.

See SharesTokenBase.sol.

Return type

int

get_denomination_asset()

Get the reserve ERC-20 asset for this vault.

Return type

eth_typing.evm.HexAddress

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

dict

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

int

get_name()

Get the name of the share token.

See SharesTokenBase.sol.

Return type

str

get_owner()

Who is the vault owner.

Vault owner has special priviledges like calling the adapters.

See IVaultCore.sol.

Return type

eth_typing.evm.HexAddress

get_share_count_for_user(user)

How mayn shares a user has.

Returns

Raw token amount

Parameters

user (eth_typing.evm.HexAddress) –

Return type

int

get_share_gross_asset_value()

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

int

get_shares_asset()

Get the shares ERC-20 token for this vault.

Enzyme vault acts as ERC-20 contract as well.

Return type

eth_typing.evm.HexAddress

get_symbol()

Get the symbol of share tokens.

See SharesTokenBase.sol.

Return type

str

get_total_supply()

Get the number of share tokens.

See SharesTokenBase.sol.

Return type

int

get_tracked_assets()

Get the list of assets this vault tracks.

Returns

List of ERC-20 addresses

Return type

Collection[eth_typing.evm.HexAddress]

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

bool

property shares_token: eth_defi.token.TokenDetails

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