Redeeming Shares in an Enzyme Vault

Selling your shares in a vault

There are two distinct functions for redeeming shares in an Enzyme vault; one is used if you want to redeem all of your shares, and another is used if you want to redeem a specific amount.

import { ComptrollerLib, StandardToken } from '@enzymefinance/protocol';
import { providers, BigNumber, Wallet, constants, utils } from 'ethers';

const provider = providers.StaticJsonRpcProvider(ethNodeAddress, ethNetwork); 
const signer = new Wallet(investorsEthPrivateKey, provider);

// the vault's address, available on the vault's dashboard in the Enzyme app
const vaultAddress = '0x8syweo...';

// instantiate the vault token contract
const vaultToken = new StandardToken(vaultAddress, provider);

// check the investor's current balance
const sharesBalance = await vaultToken.balanceOf(signer.address);

// this is an arbitrary number
const sharesToRedeem = utils.parseUnits('1', 18);

// the vault's comptroller address, available on the vault's dashboard in the Enzyme app
const comptrollerAddress = '0x8syweo...'

const comptrollerContract = new ComptrollerLib(comptrollerAddress, signer);

const redeemTx = sharesBalance.gt(sharesToRedeem) 
    ? comptrollerContract.redeemSharesDetailed.args(
        sharesToRedeem,
        [], // additional assets 
        [], // assets to skip. These two parameters are adjustable but most commonly left empty
      ) 
    : comptrollerContract.redeemShares();


const redeemTxReceipt = await redeemTx.send();
console.log('Pending transaction:', redeemTxReceipt.transactionHash);
console.log('Transaction included in block number:', redeemTxReceipt.blockNumber);

Last updated