Arcade Protocol Migration Guide
This guide helps users interact directly with Arcade protocol smart contracts on Ethereum mainnet after the UI is sunset. It covers all critical operations for reclaiming assets, repaying loans, claiming collateral, and withdrawing NFTs from vaults.
1. Introduction & Prerequisites
What You'll Need
- A Web3 Wallet: MetaMask, Rabby, or similar browser wallet
- ETH for Gas: Ensure you have ETH in your wallet to pay transaction fees
- Etherscan Access: All interactions will be done via Etherscan
How to Use Etherscan's Write Contract Feature
- Navigate to the contract address on Etherscan
- Click the "Contract" tab
- Click "Write Contract" (or "Write as Proxy" if available)
- Click "Connect to Web3" and connect your wallet
- Find the function you want to call
- Enter the required parameters
- Click "Write" and confirm the transaction in your wallet
How to Use Etherscan's Read Contract Feature
- Navigate to the contract address on Etherscan
- Click the "Contract" tab
- Click "Read Contract" (or "Read as Proxy" if available)
- Find the function you want to query
- Enter any required parameters
- Click "Query" to see the result
2. Contract Reference
Core Protocol Contracts
| Contract | Address | Etherscan |
|---|---|---|
| LoanCore V3 | 0x89bc08BA00f135d608bc335f6B33D7a9ABCC98aF | View |
| LoanCore V2 | 0x81b2F8Fc75Bab64A6b144aa6d2fAa127B4Fa7fD9 | View |
| RepaymentController V3 | 0x74241e1A9c021643289476426B9B70229Ab40D53 | View |
| RepaymentController V2 | 0xb39dAB85FA05C381767FF992cCDE4c94619993d4 | View |
Vault Factory Contracts
| Contract | Address | Etherscan |
|---|---|---|
| VaultFactory V3 | 0x269363665Dbb1582b143099a3cb467E98a476D55 | View |
| VaultFactory V2 | 0x6e9B4c2f6Bd57b7b924d29b5dcfCa1273Ecc94A2 | View |
| VaultFactory ApeStaking | 0x666faa632E5f7bA20a7FCe36596A6736f87133Be | View |
Promissory Note Contracts
| Contract | Address | Etherscan |
|---|---|---|
| LenderNote V3 | 0x92ED78b41537C902Ad287608d8535bb6780A7618 | View |
| LenderNote V2 | 0x349A026A43FFA8e2Ab4c4e59FCAa93F87Bd8DdeE | View |
| BorrowerNote V2 | 0x337104A4f06260Ff327d6734C555A0f5d8F863aa | View |
Supported Loan Tokens
| Token | Address | Decimals |
|---|---|---|
| USDC | 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 | 6 |
| WETH | 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2 | 18 |
| DAI | 0x6b175474e89094c44da98b954eedeac495271d0f | 18 |
| USDT | 0xdac17f958d2ee523a2206206994597c13d831ec7 | 6 |
3. Finding Your Assets On-Chain
Finding Your Vault Address
Your vaults are NFTs owned by your wallet. To find them:
Method 1: Check VaultFactory Events
- Go to the VaultFactory contract on Etherscan (V2 or V3)
- Click "Events" tab
- Filter for
VaultCreatedevents - Look for events where the
toaddress matches your wallet
Method 2: Query VaultFactory Directly
- Go to VaultFactory on Etherscan > Read Contract
- Use
tokenOfOwnerByIndex:owner: Your wallet addressindex: Start with0, increment to find all vaults
- Use
instanceAtwith the token ID to get the vault address
Finding Your Loan IDs
For Borrowers (V2 Loans)
- Go to BorrowerNote V2 on Etherscan
- Read Contract >
tokenOfOwnerByIndex:owner: Your wallet addressindex:0(or higher if you have multiple)
- The returned value is your loan ID
For Lenders (V2 and V3 Loans)
- Go to the appropriate LenderNote contract
- Read Contract >
tokenOfOwnerByIndex:owner: Your wallet addressindex:0(or higher)
- The returned value is your loan ID
Checking Loan Status
- Go to the appropriate LoanCore contract (V2 or V3)
- Read Contract >
getLoan:loanId: Your loan ID
- Check the
statefield in the response:0= DUMMY (placeholder)1= Active2= Repaid3= Defaulted
4. Loan Operations (Borrowers)
Check Amount Owed (V2 Loans)
- Go to RepaymentController V2
- Read Contract >
amountToCloseLoan:loanId: Your loan ID
- Returns the total amount (principal + interest) required to repay
Repay a Loan
Repaying a loan requires two steps: approving the token spend, then calling repay.
Step 1: Approve Token Spend
- Go to the loan token contract (e.g., USDC, WETH) on Etherscan
- Write Contract >
approve:spender: RepaymentController address- V3:
0x74241e1A9c021643289476426B9B70229Ab40D53 - V2:
0xb39dAB85FA05C381767FF992cCDE4c94619993d4
- V3:
amount: Total amount owed (in smallest units)
Important: For amounts, multiply by 10^decimals. Examples:
- 100 USDC =
100000000(100 × 10^6) - 1 WETH =
1000000000000000000(1 × 10^18)
Step 2: Repay the Loan
For V3 Loans:
- Go to RepaymentController V3
- Write Contract >
repay:loanId: Your loan ID
- Click Write and confirm
For V2 Loans:
- Go to RepaymentController V2
- Write Contract >
repayorcloseLoan:loanId: Your loan ID
- Click Write and confirm
After repayment, your collateral vault will be returned to you.
5. Loan Operations (Lenders)
Check if a Loan Has Defaulted
- Go to LoanCore V3 or V2 on Etherscan
- Read Contract >
getLoan:loanId: Your loan ID
- Check:
state: Should be1(Active)startDate+terms.durationSecs: Calculate the due date- Current time must be past due date + 10-minute grace period
Grace Period: V3 loans have a 10-minute grace period after the due date before default can be claimed.
Claim Collateral on Default
Only the lender can claim collateral after a loan defaults.
For V3 Loans:
- Go to RepaymentController V3
- Write Contract >
claim:loanId: Your loan ID
- Click Write and confirm
The collateral vault NFT will be transferred to your wallet.
For V2 Loans:
- Go to RepaymentController V2
- Write Contract >
claim:loanId: Your loan IDcurrentInstallmentPeriod:0(for non-installment loans)
- Click Write and confirm
6. Vault Withdrawals
After you own a vault (either as the original creator or after claiming defaulted collateral), you can withdraw the assets inside.
Step 1: Enable Withdrawals (Required)
Important: You must enable withdrawals before you can withdraw any assets. This is a one-time operation per vault.
- Find your vault address
- Go to your vault address on Etherscan
- Write Contract >
enableWithdraw - Click Write and confirm
After enabling, the vault cannot be used as collateral again.
Step 2: Withdraw Assets
Withdraw ERC721 NFTs
- Go to your vault address on Etherscan
- Write Contract >
withdrawERC721:token: NFT contract addresstokenId: Token ID of the NFTto: Your wallet address
- Click Write and confirm
Withdraw ERC20 Tokens
- Go to your vault address on Etherscan
- Write Contract >
withdrawERC20:token: ERC20 token contract addressto: Your wallet address
- Click Write and confirm
Withdraw ETH
- Go to your vault address on Etherscan
- Write Contract >
withdrawETH:to: Your wallet address
- Click Write and confirm
Special Asset Withdrawals
CryptoPunks
Punks use a non-standard interface:
- Go to your vault address on Etherscan
- Write Contract >
withdrawPunk:punks:0xb47e3cd837ddf8e4c57f05d70ab865de6e193bbbpunkIndex: Your punk's index numberto: Your wallet address
- Click Write and confirm
7. APE Staking Operations
If your vault contains BAYC, MAYC, or BAKC NFTs with staked APE, you can claim rewards and withdraw staked APE through the vault's call function.
Contact support for assistance with APE staking withdrawals as they require encoded function calls.
8. Canceling Offers
If you have outstanding loan offers you want to cancel:
- Find your offer's nonce (from your transaction history or stored offer data)
- Go to the appropriate LoanCore contract
- Write Contract >
cancelNonce:nonce: The nonce of the offer to cancel (uint160)
- Click Write and confirm
This invalidates the offer signature, preventing it from being used.
9. Troubleshooting
Common Errors
| Error | Cause | Solution |
|---|---|---|
RC_InvalidState | Loan is not in the expected state | Check loan state with getLoan |
RC_OnlyLender | Caller is not the lender | Use the wallet that owns the LenderNote |
LC_NotExpired | Trying to claim before loan expires | Wait until after due date + grace period |
AV_WithdrawsDisabled | Withdrawals not enabled | Call enableWithdraw first |
AV_MissingAuthorization | Not the vault owner | Verify you own the vault NFT |
Insufficient allowance | Token not approved | Approve token spend first |
Verification Checklist
Before executing any transaction:
- Verify you're on Ethereum Mainnet (Chain ID: 1)
- Double-check all contract addresses match this guide
- Verify the function parameters are correct
- For token amounts, ensure you've used the correct decimals
- Test with read functions before write operations
- Have sufficient ETH for gas fees
Last updated: January 2025