Smart Contracts
These are Djinn's Base mainnet contract addresses. They are UUPS upgradeable proxies governed by a TimelockController, so the proxy addresses below stay stable while implementation logic upgrades through the timelock.
Live on Base mainnet. These proxy addresses are permanent; settlement is denominated in Circle USDC.
Governance
TimelockController: 0xDdB899dEE76a3241f500201f215FBf5eF6A16d2F
All contract upgrades and configuration changes go through an on-chain timelock. A governance multisig is the sole proposer; anyone can execute after the delay. Contracts have Pausable, UUPS upgradeToAndCall, and ReentrancyGuard.
USDC
Circle USDC: 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913
Settlement uses Circle's official USDC on Base.
SignalCommitment
Stores encrypted signal blobs, commitment hashes, and signal metadata. Entry point for genius signal creation.
Address (Base)
MainnetKey functions
commitSignal(bytes encryptedBlob, bytes32 commitHash, string sport, ...)cancelSignal(uint256 signalId)getSignal(uint256 signalId) viewEscrow
Holds idiot USDC deposits. Handles purchases, fee distribution, and buyer withdrawals.
Address (Base)
MainnetKey functions
deposit(uint256 amount)withdraw(uint256 amount)purchase(uint256 signalId, uint256 notional, uint256 odds)claimFees(address genius, address idiot)claimFeesBatch(address genius, address[] idiots)setOutcome(uint256 purchaseId, uint8 outcome)Collateral
Holds genius USDC collateral backing their SLA commitments. Slashed on negative settlement.
Address (Base)
MainnetKey functions
deposit(uint256 amount)withdraw(uint256 amount)deposits(address) viewlocked(address) viewAccount
Tracks genius-idiot pair purchases in an append-only queue for settlement grouping.
Address (Base)
MainnetKey functions
recordOutcome(address genius, address idiot, ...)getQueueState(address genius, address idiot) viewgetPairPurchaseIds(address genius, address idiot) viewgetAuditBatchCount(address genius, address idiot) viewgetCurrentCycle(address genius, address idiot) viewAudit
Executes settlement: computes damages, slashes collateral, distributes refunds and credits.
Address (Base)
MainnetKey functions
settleAuditSet(address genius, address idiot, int256 qualityScore, ...)finalizeAuditSet(address genius, address idiot)OutcomeVoting
Validator consensus mechanism. Collects quality score votes and triggers settlement at 2/3+ agreement.
Address (Base)
MainnetKey functions
submitVote(address genius, address idiot, int256 qualityScore, uint256 totalNotional)addValidator(address validator)removeValidator(address validator)CreditLedger
Tracks non-transferable Djinn Credits (Tranche B damages). Credits discount future purchases.
Address (Base)
MainnetKey functions
balanceOf(address) viewaward(address recipient, uint256 amount)consume(address buyer, uint256 amount)KeyRecovery
Allows buyers to recover signal decryption keys if they lose their local data.
Address (Base)
MainnetKey functions
storeRecoveryBlob(uint256 signalId, bytes blob)getRecoveryBlob(uint256 signalId) viewIntegration
For programmatic interaction, use the REST API rather than calling contracts directly. The API handles multi-step orchestration (MPC, validator coordination, share distribution) that would be complex to replicate. Direct contract calls are suitable for read-only queries and custom indexing.
Full ABIs are available in the contracts/out directory of the repository.