HANS Docs
Getting started

Contracts & addresses

All contracts are deployed on Base Sepolia (chain ID 84532) with source verified on Basescan. Built with Foundry on OpenZeppelin v5.7.0, Solidity 0.8.28. None of the contracts are upgradeable.

Core contracts #

Contract Address Notes
HANS token 0x3DA6cdd2fa0966439C40e18ad8cb91FFA399FF7B ERC-20 + Permit + Burnable; owner = timelock
UBAI token 0x291E557D813DdAA9A5F1e14e061860C129D5089e Same contract as HANS with UBAI identity; owner = timelock
Timelock 0xb79827304058Ddc7425ae39425A538BDa6Ee93F2 OpenZeppelin TimelockController, 600s delay on testnet (72h on mainnet)
Staking 0x841d33a0FB1f38090ca0b3718dbF659a96c61Ab4 Ownerless; locks 1–104 weeks; 5% early-exit penalty
sHANS 0xB14405823527065E13f20d73F442afe1Ca9990e5 Stake receipt; minted/burned only by the staking contract
Merge offers 0xB354eF1133645dAC81eE3B83ef26a64bc82489e1 Fixed-rate swaps; leftovers → staking distributions
UBAIDisperse 0xB3c629A3ff908aCf2ce980E28bfb8A702dE4A7B0 Stateless multi-recipient payout used for referral bonuses

Multisigs #

Safe Address Role
Governance Safe 0xbc768e681a06a91208247e7ee9f434fce3bd71a9 Proposes mints on the timelock
Treasury Safe 0x74aed8787ba283fa283f875dfe76632e00e9e7b7 Receives all mints and swapped-in assets; creates merge offers

Operational wallets #

These hold small floats or gas only and have no special powers on any contract.

Wallet Address Purpose
Bounty distributor 0x803F520c41057548590B44C85BbE66753e6B27b2 Pays UBAI bounty rewards from a capped float funded by the treasury
Finalize keeper 0xFb62417D693ee3f1202E92D500747e33f8C8EB7a Calls the permissionless finalizeOffer on expired merge offers once a day

Interfaces #

Interface URL
Landing joinhans.io
Roadmap whitepaper.joinhans.io
Phase 1 whitepaper whitepaper.joinhans.io/phase-1
Merge with HANS joinhans.io/merge
Staking joinhans.io/stake
Swap (merge offers) joinhans.io/swap
Earn (bounties) earn.joinhans.io
Docs docs.joinhans.io