Emerald Vault
Emerald Vault is a suite of ERC4626 tokenized yield vaults deployed on Ethereum mainnet. Each vault accepts a single underlying asset, generates off-chain yield through an external yield manager, and keeps share prices accurate through on-chain NAV updates.
Supported Assets
| Vault | Asset | Symbol |
|---|---|---|
| Emerald USD | USDC | eUSD |
| Emerald BTC | WBTC | eBTC |
| Emerald ETH | WETH | eETH |
| Emerald Gold | PAXG | eGOLD |
Integration Surfaces
Partners can integrate through three surfaces:
- REST API — query vault state, user positions, NAV history, referral stats, and manage webhooks. The API is served from the Emerald backend and documented via an interactive Swagger UI.
- Smart Contracts — deposit, withdraw, and read vault state directly on-chain. Vaults implement the ERC4626 standard with a custom withdrawal queue.
- On-chain referral attribution — partners pass their numeric
partnerIdto the vault's referral overloads (deposit(assets, receiver, partnerId),depositETH(receiver, partnerId),requestWithdrawal(shares, partnerId)), which emitReferralDeposit/ReferralWithdrawalevents the indexer attributes. (The standaloneDepositRoutercontract is deprecated — call the vault directly.)
Architecture at a Glance
┌──────────────┐
│ Off-chain │
│ yield │
│ manager │
└──────┬───────┘
│ NAV updates
▼
User ──► deposit() ──► EmeraldVault ──► sweep() ──► Omnibus Wallet
│ │
│ ├── requestWithdrawal()
│ ├── claimWithdrawal()
│ └── cancelWithdrawal()
│
Partner ──► EmeraldVault.deposit(assets, receiver, partnerId)
(emits ReferralDeposit event → indexer attributes to partner)
- Users deposit underlying tokens and receive vault shares.
- An admin sweeps deposited tokens to the omnibus wallet for off-chain yield.
- Yield is generated off-chain; the admin calls updateNAV to reflect the new managed assets on-chain.
- When a user wants to exit, they request a withdrawal, wait the 3-day delay, then claim.
Quick Links
- Getting Started — API key, authentication, rate limits
- REST API Reference — all endpoints at a glance
- Smart Contracts — ABI, addresses, constants
- Code Examples (viem) — full TypeScript snippets
- Code Examples (ethers) — ethers.js v6 snippets