Contracts & addresses
Source is verified on Basescan. Contracts are built with Foundry, OpenZeppelin v5 and Solidity 0.8.28, and none are upgradeable. The test network below is Base Sepolia (chain ID 84532).
Base mainnet (chain ID 8453) #
| Contract | Address | Notes |
|---|---|---|
| UBAI | 0xa40BFC4b5fd203851BE027e18CB1fA498E6f4C29↗ | 1B genesis to the Treasury Safe; owner = timelock |
| Timelock | 0xaF2A066671226D2BbcD1663BCAb7E6C8A59Fbd30↗ | OpenZeppelin TimelockController, 72-hour delay, open execution |
| Governance Safe | 0x826dF8640EBca3c52479677A2C4cbA5dCfB1F5AE↗ | Timelock proposer and canceller |
| Guardian Safe | 0xa993DDc55763a89dfC594F96D62969F43971F6F2↗ | Timelock canceller |
| Treasury Safe | 0x005202AB9C7d003A160f64043A25ac5D97E30c87↗ | Holds UBAI's undistributed supply |
| Bounty distributor | 0x803F520c41057548590B44C85BbE66753e6B27b2↗ | Hot wallet that pays Earn bounties in UBAI |
HANS, staking, voting and merge offers will be added here at launch.
Test network: core contracts #
| Contract | Address | Notes |
|---|---|---|
| HANS | 0x3DA6cdd2fa0966439C40e18ad8cb91FFA399FF7B↗ | ERC-20 + Permit + Burnable; owner = timelock |
| UBAI | 0x291E557D813DdAA9A5F1e14e061860C129D5089e↗ | Same contract as HANS; owner = timelock |
| Timelock | 0xb79827304058Ddc7425ae39425A538BDa6Ee93F2↗ | OpenZeppelin TimelockController, 600-second delay on the test network (72 hours on mainnet); proposers: the Governance Safe and the mint adapter |
| Staking (v3) | 0x55Db3F217DCBC7Ee18015069f6dbB8C06c9FAe1f↗ | HANSStakingV3; deploys directly at mainnet |
| sHANS (v3) | 0xfCa08867206b2729E0B3518f2C82167eCDdDF274↗ | Minted and burned only by staking |
| Voting | 0x2AC196f4f6E20489d803a1505193D65FCafA682D↗ | HANSVoting: merger proposals and their votes (Voting) |
| Ballot market | 0x4FFe0BC961644E5712e9BaB5C68a0F2556e69ABC↗ | HANSBallotMarket: buy and sell votes during a vote week; no fees, no admin |
| Mint adapter | 0x8b13F8f6aae296702277d2c276a607c3E003f562↗ | HANSMintQueue: schedules the HANS mint a passed vote approved |
| Merge offers | 0x50aE9bcbcbE77A1e3B76B452940be0cf0Dc765D6↗ | Fixed-rate swaps; inputs retired |
| Leftover stream | 0x392808E735663C14C527ED284aD503368379f93b↗ | Pays offer leftovers to stakers over 12 weeks |
| UBAIDisperse | 0xB3c629A3ff908aCf2ce980E28bfb8A702dE4A7B0↗ | Stateless multi-recipient payout |
Multisigs (Base Sepolia) #
| Safe | Address | Role |
|---|---|---|
| Governance Safe | 0xbc768e681a06a91208247e7ee9f434fce3bd71a9↗ | Timelock proposer; proposes merger votes |
| Treasury Safe | 0x74aed8787ba283fa283f875dfe76632e00e9e7b7↗ | Receives mints; creates merge offers |
Operational wallets (Base Sepolia) #
Hot wallets with no privileged role on any contract.
| Wallet | Address | Purpose |
|---|---|---|
| Bounty distributor | 0x803F520c41057548590B44C85BbE66753e6B27b2↗ | Pays Earn bounties in UBAI |
| Keeper | 0xFb62417D693ee3f1202E92D500747e33f8C8EB7a↗ | Calls public finalizeOffer, weekly poke() and the voting jobs: open a week's votes, return expired offers, schedule and execute passed mints |
Retired v1 (Base Sepolia) #
| Contract | Address |
|---|---|
| Staking (v1) | 0x841d33a0FB1f38090ca0b3718dbF659a96c61Ab4↗ |
| sHANS (v1) | 0xB14405823527065E13f20d73F442afe1Ca9990e5↗ |
| Merge offers (v1) | 0xB354eF1133645dAC81eE3B83ef26a64bc82489e1↗ |
Retired v2 (Base Sepolia) #
The previous test deployment, left dormant when staking v3 replaced it. Nothing was migrated.
| Contract | Address |
|---|---|
| Staking (v2) | 0x281Bf5E4B3Be48D118b32A949cD850a60fA09452↗ |
| sHANS (v2) | 0xBF9B59F3Ea8B13Cbe2dD04BC62979c311C9bE049↗ |
| Leftover stream (v2) | 0xE808995D5049B89A2aA6D03664028944FDB48585↗ |
| Merge offers (v2) | 0xa5383c9299b0039051Db327A4E9484c4c0f4f57a↗ |