Security & audits
Every contract went through adversarial review before deployment, with proof-of-concept tests written against the actual code. The test suite stands at 90 tests across the token, timelock integration, staking, merge offers, UBAI, and the disperser — including fuzzed invariants.
Audit history #
| Component | Rounds | Outcome |
|---|---|---|
| HANS token + timelock | 1 | Two low findings fixed (treasury validation, mainnet delay floor). Two accepted properties documented below. |
| Staking | 2 | Low findings fixed; whale penalty-recapture analysed and accepted; unannounced-funding rule adopted. |
| Merge offers | 3 | Round three: zero findings above informational. Hardening applied (old-token code check, mainnet treasury assert). |
| Earn API | continuous | A daily production audit reviews every push; findings are verified against the code and fixed the same day (recent: payout reconciliation, exact staking math, EIP-4361 sign-in). |
Accepted properties (on purpose) #
- Guardian veto deadlock. A hostile guardian can stall new mints indefinitely but can never mint. Stalling is the safe failure.
- Renounce = permanent supply lock. If governance ever renounces token ownership, minting stops forever. Available by design.
- Whale early-exit recapture. A very large staker who exits early recaptures part of their own penalty through the redistribution. Analysed; economically minor; accepted.
- No clawback on merge offers. Even a mistaken offer cannot be cancelled by the treasury. This is the point.
Operating rules #
- Distributions are funded unannounced. Because anyone can add distributions and they accrue by weight at that moment, announcing a funding time would create a snapshot to race for. Funding and offer finalization happen at unannounced times, and distributions are described as duration-weighted accruals, never announced snapshots.
- Hot wallets hold floats, not treasuries. The bounty distributor and the finalize keeper hold only what they need. Neither has any privileged role on any contract.
- Nothing is fire-and-forget. Backend payouts are signed with a known hash before broadcast and fully awaited, so an interrupted payout is reconciled against the chain rather than guessed.
What is deliberately absent #
No admin keys on staking or merge offers. No upgradeable contracts anywhere. No pause switches. No token blacklists. The only privileged action in the entire system is minting — and it requires a multisig, a public delay, and survives a guardian veto window.