Buying Shares in an Enzyme Vault
Investing in a vault
import { ComptrollerLib, StandardToken } from '@enzymefinance/protocol';
import { providers, BigNumber, Wallet, constants, utils } from 'ethers';
// the address of the vault's denomination asset
const denominationAsset = '0x23fs...';
// create a local signer connected to your chosen Ethereum node
const provider = providers.StaticJsonRpcProvider(ethNodeAddress, ethNetwork);
const signer = new Wallet(investorsEthPrivateKey, provider);
// instantiate the denomination asset's Token contract
const tokenContract = new StandardToken(denominationAsset, signer);
// generate an amount of the denomination asset to invest (1 is arbitrary)
const investmentAmount = utils.parseUnits('1', 18);
// construct the approve transaction
const approveTx = tokenContract.approve.args(comptrollerProxy, investmentAmount);
// send it. passing false returns the promise of a receipt that will provide the transaction hash
const approvedTxReceipt = await approveTx.send();
console.log('Pending transaction:', approvedTxReceipt.transactionHash);
console.log('Transaction included in block number:', approvedTxReceipt.blockNumber);
// the vault's comptroller address, available on the app dashboard (app.enzyme.finance/{vaultAddress})
const vaultComptrollerAddress = '0x0sdofso...';
// instantiate the vault's comptroller contract
const comptrollerContract = new ComptrollerLib(vaultComptrollerAddress, signer);
const investTx = comptrollerContract.buyShares.args(
[signer.address],
[investmentAmount],
[constants.Zero],
);
const investTxReceipt = investTx.send();
console.log('Pending transaction:', investTxReceipt.transactionHash);
console.log('Transaction included in block number:', investTxReceipt.blockNumber);
Last updated
Was this helpful?