⚙️
GEARVAULT V2 // ONCHAIN
BASE MAINNET // 8453
DAILY REMAINING
10,000 GEAR
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.
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;
}