⚙️ GEARVAULT V2 // ONCHAIN
BASE MAINNET // 8453
★ GEAR VAULT CONTROLLER ★ CIRCUIT BREAKER // ONLINE
0 GEAR
ACTIVE

⬤ GEAR VAULT CONTROL

BASE // 0x41ca...b3ab

STANDBY
VAULT BALANCE
0 GEAR
DAILY REMAINING
10,000 GEAR
BREAKER STATUS
ACTIVE
ONCHAIN VAULT STATE SYNC: LIVE
Vault Address 0x41ca...b3ab
GEAR Token (6 Dec) 0x5880...4bD1
Ledger Admin (Cold) 0xD838...EAca
Initial Operator (Hot) 0x785c...563E
Max Dispense Per Call 50 GEAR
Global Daily Cap 10,000 GEAR / Day
Dispensed Today (UTC) 0 GEAR
Per-Wallet Daily Cap 0 (OFF)
OPERATOR MANAGEMENT HOT WALLETS

Hot wallets authorized to call dispense() for Caps Garage & games.

CAPS & SAFETY LIMITS LEDGER ADMIN
CIRCUIT BREAKER & FUNDS COLD STORAGE ONLY
TWO-STEP OWNERSHIP HANDOVER TYPO-PROOF
Active Owner 0xD838...EAca
Pending Owner None
DEVELOPER & X402 SNIPPETS 1-CLICK INTEGRATION

Code recipes for your Vercel functions, x402 endpoints, or game backends to dispense GEAR.

VERCEL / X402 (Node.js + Viem)
import { createWalletClient, http, parseAbi } from 'viem'; import { privateKeyToAccount } from 'viem/accounts'; import { base } from 'viem/chains'; const account = privateKeyToAccount(process.env.OPERATOR_PRIVATE_KEY); const client = createWalletClient({ account, chain: base, transport: http(process.env.BASE_RPC_URL) }); const VAULT_ADDRESS = '0x41ca72e18f7f96f8f2b7be524ac8346e06bcb3ab'; const abi = parseAbi([ 'function dispense(address recipient, uint256 amount) external' ]); export async function payPlayer(playerAddress, gearAmount) { // 1 GEAR = 1_000_000 base units (6 decimals) const units = BigInt(Math.round(gearAmount * 1_000_000)); const txHash = await client.writeContract({ address: VAULT_ADDRESS, abi, functionName: 'dispense', args: [playerAddress, units] }); return txHash; }
GEAR VAULT ABI (JSON)
COPIED TO CLIPBOARD