LoadingEthereum and Base

Uroboros: the Sanctum network for EVM wallets

A Sanctum makes a stolen hot key slow. Big withdrawals wait six hours, and anyone you trust can freeze the Sanctum for a day.

LimitsOnly your offline cold key can lift a freeze early. Sanctums run on Ethereum and Base. The $UROBOROS token is on Base only. Until someone freezes it, a thief with your hot key can take 10% of each asset a day, and anything they queue goes through after six hours. If your cold key is stolen too, Uroboros can't help.

SANCTUM NETWORK — simulation, not chain dataLoading

UroborosA ring of linked nodes drawn as a snake biting its tail. Sanctum fees buy back and burn the token, pay stakers and top up the bounty. More Sanctums bring more fees. Fees in ETH 40% buyback and burn 50% to stakers

Product fees in ETH: 50% to stakers, 40% bought back and burned, 10% to the bounty Sanctum.

Self-custodyEthereum and Base5% / h, 10% / 24 h per asset; more waits 6 hGuardians can freeze, never withdraw

How a Sanctum protects funds

01What a stolen key runs into

Delay.

Small withdrawals go out at once. Anything big waits in a queue for six hours, and that is your window to notice and stop it.

5% an hour and 10% per rolling 24 h, per asset. Above 10%, or above what the caps have left, a transfer queues for 6 h.

Detect.

You pick up to five guardians. They can be your other wallets or people you trust, and any one of them can act if they see a theft starting.

0–5 guardians, set by the cold key. Paid watchers who opt in to your Sanctum are on the roadmap and not live yet.

Freeze.

One guardian can freeze the Sanctum for 24 hours with a single transaction. Only your offline key can end the freeze early. The same key replaces the stolen one and cancels anything the thief queued.

panic(): 24 h freeze that voids every queued transfer. After a cold unfreeze, guardians are muted for 24 h.

A Sanctum is a wallet contract with rules about time. Your everyday key still signs. The contract decides how fast money leaves and who can stop it. The $UROBOROS token doesn't secure anything. Product fees buy it back and burn it, hence the name.

02Products

What's deployed and what isn't

Three pieces launch together. The other two ship later as separate releases, and they are marked as not deployed until then.

1Loading

Sanctum and guardians

A wallet contract with hourly and daily caps, a six-hour queue and a 24-hour freeze. Your cold key picks 0–5 guardians and a recovery threshold. If you lose the cold key, enough guardians can name a new one. That takes 7 days, and the old key can cancel it in the meantime. The cold key can also switch recovery off.

Sanctums created
–
Coverage
$5 a month, in ETH or USDC
Fee on a released queued transfer
0.25%

Not paying never locks you out of your own Sanctum. Coverage only matters to watchers, and there are none until the watcher market ships. Everything else works without it.

Open the Sanctum app

2Loading

Raid the Sanctum

A Sanctum holding real ETH, with its hot key published as a contract anyone can call. You call withdraw from your own wallet, the same way a thief with a stolen key would. The caps allow 1% an hour and 2% a day, and the queue is off. The cold key is a locker contract that can freeze the game and pick guardians, nothing more. Guardian recovery is off for good, so nobody can withdraw the prize, change the rules or replace the locker.

Prize now
–
Most that can leave per day
–

If the balance ever leaves faster than the caps allow, the mechanism failed and the raider keeps it.

See the leak meter

3Loading

Drainer firewall

A blacklist of drainer contracts, fed by honeypot wallets. If you don't want a Sanctum, a light EIP-7702 delegate makes approvals to a flagged spender revert and lets anyone revoke an existing one. Not deployed.

4Loading

Watcher market

Watchers post a $50 bond in ETH and watch Sanctums whose owners opt in. When an owner confirms a freeze, the watcher is paid from that Sanctum's coverage. A rejected freeze costs half the bond. Not deployed.

03Fees

Where the fees go

Every swap pays 3% in ETH to the FeeRouter contract. The fee is never taken in UROBOROS. Coverage payments and the 0.25% queued-transfer fee go to the same contract.

Where each fee goes
DestinationSharePaid fromPays out to
TeamIn ETHthe 3% trading fee–
StakersIn ETH, through the Staking contractproduct fees–
Buy back and burn UROBOROSBought on the same pool, then burnedproduct feesburned
Bounty Sanctum prizeproduct fees–

Read from the FeeRouter

ETH received, all time
–
ETH spent on buybacks
–
UROBOROS burned
–
Team address change pending
–

Product fees are coverage payments, the 0.25% queued-transfer fee and fees bridged from Sanctums on Ethereum. The team gets nothing from them. The 50/40/10 split is fixed in the contract and has no setter. The staking and bounty addresses can each be set once, and then they are locked. Until an address is set, its share stays in the FeeRouter. The team address is the only one that can change. For the first 30 days after trading opens a change applies at once; after that it waits 48 hours.

USDC coverage payments and fees paid in tokens other than ETH are not split on chain. The owner moves them by hand, and every move is a public TokenSwept event.

Not deployed yet. These numbers fill in once the contracts are on Base.

04Supply

$UROBOROS supply

Hard cap of 100,000,000. 70,000,000 are minted at deploy. The other 30,000,000 are staking emissions, minted to stakers over time and halving every 30 days. Loading

Token allocation and unlocks
BucketAmountShareHeld byUnlock
Liquidity50,000,00050%Uniswap v4 full-range position, paired with 2 ETH, held by LPLocker7 days from deploy, extend-onlyEvery extension is an on-chain event. Ten-year ceiling per extension.
Team10,000,00010%TeamVestingBeneficiary fixed in the contract3-month cliff, then linear over 12 monthsNo team tokens are liquid at launch, and the team did not pre-buy.
Treasury10,000,00010%4 lockers of 2,500,00090, 180, 270 and 365 days from deploy, extend-onlyPays for watcher rewards, bounties, listings and an audit. Every spend is announced.
Staking emissions30,000,00030%Not minted at deploy. Staking mints them through MinterProxy15,000,000 in the first 30 days, then half as much in each 30 days afterPaid per second to stakers, weighted by lock. Nothing is minted while nobody stakes.
Total100,000,000100%70,000,000 minted at deploy

Trading

There is one Uniswap v4 pool on Base, ETH against UROBOROS. Its hook takes 3% in ETH on every buy and sell. The hook has no exemption list, so the team pays it too. When trading opens the fee starts at 60% and falls to 3% over 60 seconds, and everything above 3% goes to buyback and burn. For the first 30 minutes a single buy is capped at 1,000,000 UROBOROS, and one sending wallet can't accumulate more than that.

Aggregators and the Uniswap app may not route to a pool with a fee-taking hook for weeks. If the swap link finds no route, use the manual route below. A buy that would hit its price limit part-way reverts instead of filling partly, so set slippage as a minimum output.

The pool does not exist yet. Links appear here after the seed transaction.

Manual route

  1. Router: Uniswap UniversalRouter on Base, 0x6ff5693b99212da76ad316178a184ab56d299b43, command V4_SWAP.
  2. Pool key: currency0 0x0000…0000 (ETH), currency1 UROBOROS, fee 0, tickSpacing 60, hooks hook.
  3. Exact input only. Exact-output swaps revert, and so does a buy whose price limit stops it before the full amount fills.
  4. A round trip pays the 3% fee twice, so expect about 6% plus price impact.

05Admin key

Who holds the admin key, and until when

For the first 30 days the admin is the deployer's own wallet. Then every admin role moves to a 2-of-3 Safe behind a 48-hour timelock. The date is set at deploy, so everyone can see if it slips.

–days
–hours
–minutes
–seconds

The countdown starts when the contracts are deployed. The handoff date is deploy time plus 30 days.

Period
WhoWhat
Day 0–30
Dev wallet disclosed at deployThe team address, setting the staking and bounty addresses once, buyback keepers; blacklist; the bounty locker (freeze, unfreeze, guardians only); a new minter target (48 h delay; Staking is set at deploy)
Day 30 on
Safe 2-of-3 behind a 48 h timelockThe same, plus the liquidity and treasury lockers. Only adding a blacklist flag and freezing the bounty Sanctum stay instant.
Never
NobodySupply cap, the 3% fee and the launch curve, the vesting schedule and beneficiary, the extend-only lock rule, the FeeRouter split, a locked fee destination, the bounty's rules and prize, and any rule of a Sanctum you own.

Read from chain

Handoff date
set at deploy
FeeRouter owner now
–
Owner type
–
Nominated new owner
–

Each handoff takes two steps: the dev wallet nominates the Safe, then the Safe accepts (FeeRouter, MinterProxy, Blacklist and the bounty locker by ownership, the liquidity and treasury lockers by beneficiary). A mistyped address can't accept, so a typo hands nothing over. The team vesting beneficiary is fixed in the contract and is never handed over. After the handoff this page shows the new owner. If the date passes and the owner is still a plain wallet, the page says so.

07Limits

What this does not do

The limits, in the same words as the spec. Read these before you put money in a Sanctum or buy the token.

01
A 7702 delegate cannot stop a stolen key from re-delegating; funds are safe because they sit in the Sanctum, not because of the delegate.
02
A freeze is 24h of time, not insurance. Nothing reimburses losses in v1; the backstop pool is roadmap and will show its coverage limit live when it exists.
03
Watchers are paid per confirmed freeze; the cold key decides what counts. A Sanctum with no guardians, no watchers and a lost cold key is only as safe as its caps.
04
No external audit at launch. The bounty Sanctum is the live test; a competitive review is scheduled when fees cover it, with no date committed.

Also disclosed

These come from the internal audits. Each is a trade-off we shipped knowingly, and the reasoning is in the whitepaper and the audit files.

Decisions the audit argued against.
The 60-second launch curve, the 3% fee, the 2 ETH seed, the 7-day liquidity lock (the audit recommended 365 days) and 30 days of a single admin wallet (the audit recommended a Safe from day one) were all kept.
Your cold key is the master key.
Whoever holds it can unfreeze, change every rule and withdraw everything in a single transaction. Guardians cannot stop a stolen cold key. Keep it offline.
The hourly cap is a fixed window.
Up to 9.75% can leave within a few seconds across a window boundary. The binding guarantee is 10% per rolling 24 hours.
Guardians can keep proposing.
After each cancelled recovery, guardians acting together can propose again; if that happens, remove them with your cold key. After a recovery the old hot key is still set, and the new cold key must replace it.
The bounty's cold key is a locker contract.
Its owner, the admin, can only freeze it, unfreeze it and choose guardians, and can renew a freeze indefinitely. Nobody can withdraw the prize or change the rules, so the prize leaves only through raids. Guardian recovery is switched off on it for good, so the locker stays its cold key forever.
Raids are first come, first served.
Expect bots to compete for each hour's room. Up to 1.99% can leave in two transactions seconds apart.
Launch limits count per sending wallet.
The 30-minute wallet cap follows the transaction's origin, so one person with many wallets gets many caps, and users behind one relayer share one.
Buybacks pay the 3% fee too.
The hook has no exemption list, so 3% of every buyback goes to the team like any other trade.
Buybacks need a keeper for 30 days.
Only the admin or an approved keeper can trigger one in the first month, unless nobody has for 7 days. Each call spends at most 1% of the pool's ETH, at least 10 minutes apart.
The free week is bookkeeping.
It gives no protection on chain, and coverage has no on-chain effect until the watcher market launches. With default caps the same $100 can start a new free week roughly every 6 hours.
Staking is the only minter.
It is set as the MinterProxy target at deploy. A new target is announced on chain 48 hours before it takes effect, and it can be any contract, so read it when it is proposed.

08Questions

Questions

The whitepaper covers each of these in more detail.

No external audit. Three internal rounds are published: AUDIT-1, AUDIT-2 and AUDIT-3. The bounty Sanctum is the live test, where anyone can try to take more than the caps allow from real ETH.

No. A Sanctum has no admin key. Your hot key, your cold key and the guardians your cold key chose can freeze it; only your cold key can unfreeze it, change its rules or replace a key.

Nothing changes for your keys, and you are never locked out for not paying. Coverage only tells paid watchers whether to look after your Sanctum, and the watcher market isn't live yet.

If you set guardians, enough of them (your threshold) can propose a new cold key. It takes effect after 7 days, and the old cold key can cancel it at any time before then. Without guardians nobody can recover it, the team included.

The token contract itself has none; scanners will read 0/0. The pool's hook takes 3% of the ETH side of every buy and sell, forever, with no setter. In the first 60 seconds of trading it starts at 60% and falls to 3%, and the excess goes only to buyback and burn.

Yes, for 7 days from deploy, in a locker that can only extend. That is short, and the audit advised against it. The plan is to extend it in launch week. The supply table above reads the current unlock date from the locker. After that date the hook still lets only the locker remove liquidity.

Routers allowlist pools with fee-taking hooks by hand, which can take weeks. Until then use the Uniswap pool page or the manual route in the token section.

Yes, if you stake it. Stakers earn UROBOROS emissions, which halve every 30 days, and 50% of product fees in ETH. Locks: flexible 1x (unstake after a 24-hour cooldown), 3 days 1.25x, 7 days 1.5x, 14 days 2x, 30 days 3x. It has no voting. 40% of product fees buys it back and burns it. Nothing in the Sanctum depends on its price.

09Contracts

Contracts on Base

Every address is read from the deployment file at load time. Nothing here is typed by hand.

Not deployed yet

The contracts are not on Base yet. Their addresses show up here and in the top bar as soon as the deployment file lists them.

10Open

Take the money out of reach of your hot key.

Create a Sanctum, choose your cold key and the guardians who can freeze it, then deposit. Small amounts still leave at once.

Open a Sanctum

UROBOROS token

not deployed