Documentation

Avocado Fund

A decentralised USDC yield vault and identity-gated lending protocol built on Arbitrum. Lenders earn passive yield. Borrowers build on-chain reputation via AVO Score (0–100) through World ID verification and repayment history.

Arbitrum
ERC-4626 Vault
AVO Score
World ID
On-chain Reputation
USDC
Non-custodial

Overview

Avocado Fund is a two-sided DeFi primitive. On one side, lenders deposit USDC into an ERC-4626 vault and receive yield generated from borrower interest. On the other, borrowers verified by World ID build an on-chain AVO Score (0–100) through repayment history — earning credit tiers from $25 to $1,000. Fully on-chain and non-custodial.

Earn Passive Yield

Deposit USDC and earn competitive APY as borrowers pay interest. Withdraw any time within available liquidity.

On-Chain Reputation

World ID proves uniqueness. AVO Score (0–100) grows with on-time repayments. All tracked transparently on the blockchain.

ERC-4626 Compatible

The vault follows the ERC-4626 tokenised vault standard, making it composable with the broader DeFi ecosystem.

Non-Custodial

Smart contracts hold all funds. The protocol team cannot move user assets. All code is open source.

How It Works

The system has two smart contracts: AvocadoVault (ERC-4626 deposit/yield) and AvocadoLending (credit lines). They work together so that lender capital flows to borrowers and interest flows back.

Lenders

deposit USDC

AvocadoVault

ERC-4626

AvocadoLending

credit lines

Borrowers

AVO Score verified

Interest paid by borrowers → distributed back to lenders as yield

1

Lenders supply USDC

Any wallet can deposit USDC into the AvocadoVault. The vault mints avUSDC shares proportional to the deposit. These shares appreciate over time as borrower interest accrues.

2

Capital is deployed to lending

The vault allocates USDC to the AvocadoLending contract. Utilisation is tracked on-chain and displayed in real-time. A cap of $5,000,000 limits total exposure.

3

Borrowers verify with World ID

Borrowers open the Borrow page, verify their unique personhood via the World ID orb or device, and receive a credit limit tied to their on-chain identity.

4

Borrowers draw and repay USDC

Verified borrowers draw up to their credit limit. Interest accrues per second. Repayments reduce the principal and release the credit line for future use.

5

Lenders withdraw any time

Lenders burn their avUSDC shares to redeem USDC + accrued interest. Withdrawals are limited by available (non-deployed) liquidity.

The Vault (AvocadoVault)

The vault is a standard ERC-4626 tokenised vault. Depositors receive avUSDC shares that represent their proportional claim on all assets inside the vault — including interest earned.

AssetUSDC (6 decimals)
Share tokenavUSDC (ERC-20)
Vault cap$5,000,000 USDC
Performance fee10% of interest generated
ChainArbitrum (chainId 42161)
StandardERC-4626

Share price starts at 1.000000 and increases as interest accrues. Depositing 100 USDC when share price is 1.05 gives you ~95.24 avUSDC. Redeeming those shares later at 1.10 returns 104.76 USDC.

Key vault functions

deposit(assets, receiver)Deposit USDC, receive avUSDC shares
withdraw(assets, receiver, owner)Burn shares, receive USDC
redeem(shares, receiver, owner)Burn exact shares, receive USDC
convertToAssets(shares)Preview USDC value of shares
totalAssets()Total USDC owned by vault
sharePrice()Current price per avUSDC share × 1e6

Lending & Borrowing

The AvocadoLending contract manages credit lines for World ID-verified borrowers. Each verified human gets exactly one credit line — enforced at the contract level via nullifier hashes.

Up to $1,000 USDC

Credit limit

per verified human

Variable APR

Interest rate

based on utilisation

None required

Collateral

World ID is the collateral

Interest rate model

The borrow rate adjusts dynamically based on vault utilisation (deployed / total assets). Low utilisation → lower rates to attract borrowers. High utilisation → higher rates to incentivise repayment and attract new lenders.

UtilisationBorrow APRLender APY (est.)
0–25%4%~3%
25–50%8%~5%
50–75%14%~9%
75–90%22%~16%
90%+40%~30%

Rates are indicative and set by the governance parameters in the smart contract. Always verify current rates on-chain before borrowing.

World ID Verification

World ID is a privacy-preserving proof of personhood system. Users prove they are a unique human without revealing any personal information — no name, no email, no biometric data is stored or transmitted to Avocado Fund.

1

Orb or device verification

Get verified at a World ID Orb (biometric, highest assurance) or via the World App (device-level verification). This is a one-time process.

2

Generate a ZK proof

When you visit the Borrow page, your World App generates a zero-knowledge proof that you are a unique human. This proof is verified on-chain.

3

Nullifier hash

A unique nullifier hash is stored on-chain for your identity. This prevents the same person from opening multiple credit lines — without linking to real-world identity.

4

Credit line activated

Once verified, your credit line is instantly activated. No waiting, no approval process.

Your World ID proof is verified entirely on-chain by the AvocadoLending contract. Avocado Fund never sees your World ID credentials — only the proof that you are unique.

Yield & APY

All yield is real — it comes from borrower interest, not token inflation or subsidies. APY is variable and reflects real-time utilisation of the vault.

APY calculation

grossInterest = borrowedAssets × borrowAPR × (seconds / 31536000)

netInterest = grossInterest × (1 − performanceFeeBps / 10000)

lenderAPY = netInterest / totalAssets × 100

Interest accrues per second. The share price increases continuously as borrowers repay. There is no staking or claiming — your avUSDC shares automatically appreciate.

APY is variable. If utilisation drops (more repayments, fewer new borrows) the displayed APY will decrease. Historical APY charts are available on the Analytics page.

AVO Token

AVO is the native reward token of Avocado Fund. It is earned by staking avUSDC vault shares, distributed via airdrops, and used as the incentive layer for all earn programs.

Token nameAvocado Token (AVO)
StandardERC-20 (18 decimals)
Max supply1,000,000,000 AVO
MintingVaultRewards contract only
GovernanceNo governance rights
TransferableYes, standard ERC-20

AVO is not a governance token and carries no rights beyond being a reward. All yield is sourced from real borrower interest — AVO emissions are an additional incentive on top of base yield.

Staking Rewards

The VaultRewards contract distributes AVO tokens to users who stake their avUSDC vault shares. The emission rate is dynamic — it decreases as TVL grows, keeping the reward APY stable regardless of pool size.

Dynamic emission formula

effectiveRate = baseEmission × scaleFactor / (totalStaked + scaleFactor)

baseEmission ≈ 15.85 AVO/second (~500M AVO/year at zero TVL)

scaleFactor = 1,000,000 avUSDC (when TVL hits $1M, emission halves)

As TVL grows, the per-unit emission decreases automatically. This prevents dilution and maintains a healthy reward rate for early and late depositors alike.

1

Deposit avUSDC into the vault first

You must have avUSDC shares from depositing USDC into the AvocadoVault.

2

Approve avUSDC for the rewards contract

Approve the VaultRewards contract to transfer your avUSDC shares.

3

Stake avUSDC

Call deposit() on VaultRewards. Your avUSDC is locked and AVO accrues per second.

4

Claim AVO rewards

Call claim() at any time to receive accumulated AVO to your wallet.

5

Unstake to withdraw

Call withdraw() to get avUSDC back. Pending AVO is auto-claimed on unstake.

For Lenders

Supply USDC to earn passive yield. No lock-up period, no liquidation risk. Your position is represented by avUSDC shares.

1

Connect your wallet

Connect an Arbitrum-compatible wallet (MetaMask, Coinbase Wallet, Rainbow, etc.) using the Connect Wallet button in the top navigation.

2

Get USDC on Arbitrum

Bridge USDC to Arbitrum using the official Arbitrum Bridge or Coinbase. The vault accepts native USDC on Arbitrum.

3

Approve and deposit

Enter an amount on the Vault page → Supply tab. First-time depositors will need to approve the vault contract to spend USDC. The approval and deposit can happen in one flow.

4

Monitor your position

Your avUSDC balance and USDC value are shown in real-time on the Vault page. Analytics shows historical APY and vault health.

5

Withdraw any time

Switch to the Withdraw tab, enter an amount (up to your maxWithdraw), and confirm. You receive USDC + accrued interest immediately.

Withdrawals are limited by available liquidity (non-deployed assets). If utilisation is very high, some of your position may be temporarily illiquid until borrowers repay. The maxWithdraw value shown in the app reflects this in real time.

For Borrowers

Borrow USDC without collateral using your World ID proof of personhood. Designed for real humans with real use cases — not bots or sybil attacks.

1

Get World ID verified

Download the World App and complete device or Orb verification. Orb verification unlocks higher credit limits.

2

Connect your wallet

Connect the wallet you want to receive USDC into. This wallet will be linked to your World ID nullifier — use a dedicated wallet for borrowing.

3

Verify on the Borrow page

Go to Borrow → Verify Identity tab. The World ID widget will prompt your World App to generate a proof. Approve it — this sends a ZK proof to the contract.

4

Draw your credit line

Once verified, the Borrow tab activates. Enter an amount up to your credit limit and confirm. USDC is sent to your wallet immediately.

5

Repay to restore credit

Use the Repay tab to repay part or all of your balance. Full repayment restores your full credit limit for future use. Interest accrues per second until repaid.

Failing to repay may result in your wallet being flagged on-chain and your credit line suspended. Smart contract enforcement is automatic and irreversible.

Security

Non-custodial

All USDC is held by the smart contracts. The protocol deployer has no ability to withdraw user funds.

Open source contracts

All contract code is publicly available on GitHub. Verify every function yourself before interacting.

Vault cap

Deposits are capped at $5M to limit protocol exposure during early operation. The cap may increase post-audit.

Reentrancy protection

All state-mutating functions use OpenZeppelin's ReentrancyGuard to prevent reentrancy attacks.

World ID sybil resistance

Nullifier hashes prevent the same human from opening multiple credit lines, even with multiple wallets.

Performance fee

A 10% performance fee on interest is the only revenue mechanism. There are no hidden fees or dilution.

Smart contracts are open source and undergoing a formal audit with Omniscia (submitted March 2026). Report will be published publicly upon completion. Only deposit amounts you are comfortable with. The vault cap limits total protocol exposure.

Frequently Asked Questions

Is Avocado Fund audited?

Smart contracts have been internally reviewed and are fully open source on GitHub. A formal external audit is in progress with Omniscia (submitted March 2026). The report will be published publicly upon completion. Only deposit what you can afford to risk.

What chain is this on?

Avocado Fund is deployed on Arbitrum — an Ethereum L2 rollup. Gas fees are very low (typically under $0.01). You need ETH on Arbitrum for gas and USDC on Arbitrum to supply.

Can I lose money as a lender?

Yes — in theory. If borrowers default and the total bad debt exceeds available reserves, lender funds could be at risk. The vault cap, credit limits, and identity gating are all designed to minimise this risk. Lending to uncollateralised borrowers always carries some credit risk.

Why does my maxWithdraw show less than my balance?

Your maxWithdraw is capped by available (non-deployed) liquidity. If the vault is highly utilised, some of your balance is lent out. As borrowers repay, your withdrawable amount increases. Check the utilisation rate on the Analytics page.

How does World ID verification work technically?

World ID generates a Groth16 zero-knowledge proof that you are a unique human. The AvocadoLending contract calls the World ID verifier contract on Arbitrum to validate the proof on-chain. A nullifier hash (derived from your identity) is stored to prevent reuse — with no link to any personal data.

Can I have multiple credit lines with different wallets?

No. The nullifier hash derived from your World ID is stored on-chain and linked to one credit address. Attempting to verify with the same World ID on a different wallet will fail at the contract level.

What happens if I don't repay my loan?

Interest continues to accrue, increasing your debt. If your outstanding debt exceeds your credit limit, the contract may suspend your ability to draw further. On-chain bad debt affects the overall vault and can reduce lender yield.

What is the performance fee and where does it go?

10% of all interest earned is taken as a performance fee, sent to the protocol treasury address at the time interest is collected. The remaining 90% accrues to lenders via share price appreciation.

Is there a token?

Yes — AVO is the native reward token (ERC-20, 1B max supply). It is earned by staking avUSDC vault shares and distributed via airdrops. AVO is not a governance token and carries no voting rights. avUSDC is a separate yield-bearing receipt token representing your vault deposit. All base yield is sourced from real borrower interest — AVO emissions are an additional incentive on top.

How do I get support?

Open an issue on GitHub or reach out via the community channels linked in the footer. For security disclosures, please use responsible disclosure by emailing the security contact in the repository.

🥑

Ready to start?

Supply USDC to earn yield, or verify with World ID to access a credit line.