Skip to main content

Puffer UniFi Vaults

Puffer vaults are a way to earn optimized yield across top DeFi protocols, along with points from select partners by depositing your assets into our strategy vaults.

How It Works​

  1. Deposit your assets into a Puffer vault.
  2. Earn yield on your assets from the vaults.
  3. Withdraw your assets from the vaults.

Vault Contracts​

Each Puffer vault consists of a set of the following contracts:

  • BoringVault
    The main vault ERC20 token contract which represents the vault's share of the deposited assets.
  • AccountantWithRateProviders
    Accountant contract with rate providers for the vault.
  • TellerWithMultiAssetSupport
    The contract that handles deposits to the vault.
  • AtomicQueue
    The contract that handles withdrawals from the vault in the form withdrawal queues.

Puffer Vaults​

Interacting with the Vaults​

Getting the balance of unifiETH (UniFi ETH Vault) for a wallet address.

const balance = await pufferClient.nucleusBoringVault
.withToken(UnifiToken.unifiETH)
.balanceOf(walletAddress);

const balanceAmount = Number(balance) / 1e18;

Getting the rate compared to another ERC20 token.

const pufETHAddress = '0xd9a442856c234a39a81a089c06451ebaa4306a72';
const rate = await pufferClient.nucleusAccountant
.withToken(UnifiToken.unifiETH)
.getRateInQuoteSafe(pufETHAddress);

const rateValue = Number(rate) / 1e18;

For more information on how to use the vault contracts, please refer to the API docs for the contract handlers: