{"active":true,"paused":false,"generated_at":"2026-06-15T15:29:09.525Z","contract":{"name":"UsdcInletBondV2","address":"0x96c61ea771774fF2F632d69a88d1D435Ee6dD7cA","chain":"polygon","chain_id":137,"version":"2.0","explorer_url":"https://polygonscan.com/address/0x96c61ea771774fF2F632d69a88d1D435Ee6dD7cA"},"config":{"price_usd_per_solar":0.01,"min_bond_usd":0.001,"max_bond_usd":50000,"vesting_tiers":[{"days":7,"bonus_bps":0,"bonus_label":"baseline"},{"days":14,"bonus_bps":500,"bonus_label":"+5%"},{"days":30,"bonus_bps":1000,"bonus_label":"+10%"}],"payment_tokens":[{"symbol":"USDC","address":"0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359","decimals":6,"description":"Native USDC on Polygon (Circle)"},{"symbol":"POL","address":"0x0000000000000000000000000000000000000000","decimals":18,"description":"Native POL via msg.value; priced via Chainlink POL/USD feed.","ui_supported":false}],"reward_token":{"symbol":"SOLAR","address":"0x76414F698217e5d49Cc0bE5cF57563D92D12129f","decimals":18}},"reserve":{"remaining_solar":50000000,"total_promised_solar":3.15,"total_paid_solar":0,"max_bond_at_current_price":50000},"actions":{"bond":{"selector":"0xef614b6d","abi_fragment":"function bond(address paymentToken, uint256 paymentAmount, uint8 vestingDays, address to) external payable returns (uint256 bondId)","notes":"to=0x0 routes via the seated-house custody (resolved on chain via CustodyResolver). to=<addr> delivers SOLAR vested directly to that address. msg.value must be 0 for USDC bonds, equal to paymentAmount for POL bonds."},"claim":{"selector":"0x379607f5","abi_fragment":"function claim(uint256 bondId) external returns (uint256 claimed)","notes":"Anyone can call claim() on any bond; SOLAR routes to bond.payTo (either HouseLedger or the external override)."},"preview_bond":{"selector":"0x0799bc79","abi_fragment":"function previewBond(address paymentToken, uint256 paymentAmount, uint8 vestingDays) external view returns (uint256 paidUsdE6, uint256 solarBase, uint256 solarBonus, uint256 solarOwed)","notes":"Read-only preview. Always use this before bond() to confirm the SOLAR amount you will receive."},"get_bond":{"selector":"0xd8fe7642","abi_fragment":"function getBond(uint256 bondId) external view returns (tuple(...) bond)"}},"user_endpoints":{"my_bonds":"/api/federation/my-bonds?address={addr}","my_balance":"/api/federation/my-ledger-balance?address={addr}","ui_url":"https://www.zodiacnetwork.ai/bond"},"related_contracts":{"house_ledger":{"address":"0x040355C779517e77945270BdE41f07A6C09f80cd","purpose":"Per-(houseId, user, token) custody ledger. SOLAR routed to HouseLedger via claim() lands here. User withdraws via withdraw(houseId, token, amount, to)."},"custody_resolver":{"address":"0xEF2692459A243DB6Cd621335d9B39a924E133254","purpose":"Resolves user address to (houseId, ledger) for routing bond() output."}},"docs":{"spec":"https://github.com/The-Arcane-Order/helix_operator/blob/main/blockchain/docs/usdc-inlet-bond-spec.md","v2_spec":"https://github.com/The-Arcane-Order/helix_operator/blob/main/blockchain/docs/usdc-inlet-bond-v2-spec.md","plugin_descriptor":"/.well-known/ai-plugin.json","api_spec":"/openapi.yaml"}}