The main issue causing "missing revert data" errors was calling deposit functions on the wrong contract.
- Deposits must go through the ComptrollerProxy, not the vault directly
- Token approvals must be made to the ComptrollerProxy, not the vault
- Use
buyShares()function on the ComptrollerProxy
// ❌ Wrong - calling vault directly
await vaultContract.buyShares(amount, minShares);
await tokenContract.approve(vaultAddress, amount);// ✅ Correct - using ComptrollerProxy
const comptrollerAddress = await vaultContract.getAccessor();
await tokenContract.approve(comptrollerAddress, amount);
await comptrollerContract.buyShares(amount, minShares);When you encounter the "missing revert data in call exception" error with Enzyme vault deposits, it typically means the transaction is failing due to vault policies or restrictions, but the contract isn't providing a specific error message.
First, use the built-in debug functionality:
- Open your browser's developer console (F12)
- In the deposit form, click the "Debug Vault" button (visible in development mode)
- Review the detailed output for specific issues
Problem: The vault has policies that restrict who can deposit Solutions:
- Contact the vault owner to be added to the investor whitelist
- Check if there are minimum deposit requirements
- Verify if the vault is public or private
Problem: The vault doesn't have permission to spend your tokens Solutions:
- Click "Approve" before depositing
- Ensure the approval transaction completes successfully
- Check that the approved amount is sufficient
Problem: Different Enzyme vault versions use different function names Solutions:
- The code now automatically tries both
buySharesanddeposit - Check console logs to see which function is being used
Problem: Wrong network or RPC issues Solutions:
- Ensure you're connected to Arbitrum network
- Try switching RPC providers
- Check if the vault address is correct for Arbitrum
// In browser console
const vaultContract = new ethers.Contract(vaultAddress, VAULT_PROXY_ABI, provider);
const owner = await vaultContract.getOwner();
console.log('Vault owner:', owner);// Compare with your wallet address
console.log('Your address:', account);
console.log('Are you the owner?', owner.toLowerCase() === account.toLowerCase());- Investor Whitelist: Only specific addresses can deposit
- Minimum Investment: Deposit amount too small
- Maximum Investment: Deposit amount too large
- Buy Shares Caller Whitelist: Only specific callers allowed
- Asset Whitelist: Only specific tokens allowed
- Go to app.enzyme.finance
- Search for your vault address
- Check the vault's policies and settings
- See if deposits are enabled
- Ensure you're using the correct denomination asset
- Check token decimals match expectations
- Verify sufficient balance and allowance
The error logs show transaction data like:
buyShares:0xbeebc5da...deposit:0xe2bbb158...
This confirms the functions are being called correctly.
If gas estimation fails, it usually means:
- The transaction would revert
- Vault policies block the deposit
- Insufficient permissions
- Contact the vault manager
- Request to be added to the whitelist
- Verify minimum deposit requirements
- Check if there are any deposit restrictions
- Ensure you meet minimum requirements
- Try a different deposit amount
- Clear browser cache
- Try a different wallet/browser
- Check network connectivity
- Verify contract addresses
Contact the vault owner or Enzyme support if:
- Debug tool shows policy restrictions
- You believe you should have access
- Technical issues persist after troubleshooting
- Vault appears misconfigured
- Always test with small amounts first
- Verify vault policies before depositing
- Ensure you understand the vault's requirements
- Keep transaction receipts for reference
When using the debug tool, look for:
- ✅ Green checkmarks: Everything OK
- ❌ Red X marks: Issues found
- 🔒 Lock icons: Policy restrictions
⚠️ Warning signs: Potential issues
The debug tool will provide specific recommendations based on the issues found.