The mechanics, plainly
How $Siren works
Plain English plus the actual math. Nothing here is hidden; the goal is that you can verify how value moves before you play.
$Siren is a game, not an investment. No promised yield. You can lose money. Earlier players who exit before others can profit; later players carry more risk — that's the game, not a bug. The founder holds 10% of the genesis supply (vesting over 10 months, public wallet) and takes 20% of arbitrage-bot profit; the other 80% goes to the shared treasury. The treasury is owned by a 48h timelock whose only proposer is an independent-signer multisig (the founder plus the protocol's co-owner), so no single party can move funds and every action is public and delayed 48 hours.
The game framing
$Siren is an open-ended, transparent (3,3) game on Base. It is explicitly a game — there is no promised yield and you can lose money. Players add approved assets to a shared on-chain treasury in exchange for discounted $Siren (a bond), stake $Siren to receive rebases, and watch backing-per-token (BPT). Value enters the system through bonds, the arbitrage bot’s external profit, and asset appreciation. Rebase minting dilutes.
Index, rebase & gSiren (balance vs. share)
Staking uses Olympus-style index accounting to avoid the rounding drift of balance-rewriting rebases. When you stake, you receive agnostic gSiren shares. Your $Siren balance is always:
stakedBalance = gBalance × index / 1e18
Every 8-hour epoch (1,095 per year) the staking contract grows index by the current per-epoch rate r and mints the matching new $Siren into the staking contract to back the higher balances:
index ← index × (1 + r)
Your share (gSiren) does not change on a rebase — your balance does. Because new supply is minted to all stakers proportionally, a rebase is not income; at full staking the APY simply equals supply inflation. Anyone can call rebase() permissionlessly to process due epochs.
BPT — the real number
Backing-per-token is the honest measure of what each $Siren is collateralized by:
BPT = (non-$Siren treasury value in USD) / $Siren totalSupply
The treasury holds USDC, WETH, approved user-coins and approved LP — valued at odyssey.fun-native pool prices (with sanity / staleness bounds), USDC at $1, and ETH from a Base price feed. $Siren itself is never counted as backing. Market price can trade above or below BPT; BPT is the floor the protocol can actually point to.
Bonds & the convex debt-based price
A bond deposits an approved asset into the treasury and mints you discounted $Siren that vests linearly over 7 days as raw, unstaked $Siren — bonds are not auto-staked. When it vests you claim the raw $Siren to your wallet and stake it yourself for free, or you can stake the whole bond early (before it finishes vesting) for a small fee (default 0.1%) paid to the treasury. The friction is intentional: bonding doesn’t automatically inflate the staked supply. Three classes, with zero-debt discounts:
- USDC / ETH — 3.5%
- Single user-coin — 3.5%
- Approved LP — 7%
The effective price is convex in the protocol’s outstanding bond debt, then floored at backing so a bond can never mint below backing (the RFV floor — bonding is always accretive):
bondPrice = max( marketPrice × (1 − maxDiscount) + BCV × (debtRatio)^p , BPT )
where debt is a single global accumulator shared by every market — the outstanding unvested payouts across all markets, decaying linearly to zero over the 7-day term — so you can’t route to a “fresh” market for a better deal. debtRatio = debt / totalSupply, BCV is the bond control variable (sensitivity), and p is the convexity exponent (default 2). At zero recent buying you get the full discount (when the market price is above backing); a burst of bonding spikes debtRatio, the penalty term grows super-linearly, the discount shrinks and can flip to a premium (bondPrice ≥ marketPrice), which throttles bonding. As debt decays, the discount returns. The protocol also enforces a global hard capacity across all markets: a cap on $Siren minted per rolling 7-day window (default 25% of supply), plus a per-transaction cap (default 5% of supply).
The reward-tier schedule
The per-epoch rate r follows a declining schedule keyed to T = cumulative USD value contributed (running sum of bonded-in value at deposit time + bot profit; the founder launch seed is excluded). T is monotonic — it only rises — so r only ever steps down. The per-epoch rate is computed from a target nominal APY:
r = (1 + APY)^(1/1095) − 1
| Tier | T range | Target APY | Per-epoch r (8h) |
|---|---|---|---|
| 1 | < $5k | 10,000% | 0.4224% |
| 2 | $5k – $50k | 1,000% | 0.2192% |
| 3 | $50k – $250k | 300% | 0.1267% |
| 4 | $250k – $1M | 100% | 0.0633% |
| 5 | $1M – $3M | 40% | 0.0307% |
| 6 | $3M – $8M | 15% | 0.0128% |
| 7 | $8M – $15M | 6% | 0.0053% |
| 8 | $15M – $25M | 3% | 0.0027% |
| 9 | >= $25M (floor) | 2% | 0.0018% |
Displayed APY is nominal / dilutive — it is the supply-inflation schedule, not yield. At full staking, APY ≈ supply inflation.
Simulate it yourself
The numbers above are easier to feel than to read. These two tools run the actual staking math — the same epoch-by-epoch index compounding the contract does — so you can poke at the variables and watch how the tiers shape growth. Nothing here is a forecast: you choose the assumptions (chiefly how fast T grows), and the rate follows the published schedule.
The tier ladder
slide T to see the rate step downThe reward rate is global and keyed only to T (total contributed). As the protocol grows, T rises and the APY steps down the staircase — the same rate for everyone staked.
Marker = you’re here ($1,159 → 10,000%). Both axes are log-scaled.
Simulate your stake
epoch-accurate, mirrors the contractCompounds your $SIREN balance 8 hours at a time, exactly as rebase() does — at each epoch the rate is whatever tier T sits in. The sliders start from where the game is now (current supply, T, and average daily contributions); drag them to explore.
Projected token count at the published schedule — rebases are nominal / dilutive, so this is not USD value, yield, or a prediction. Protocol growth is your assumption; the real rate tracks live on-chain T.
Both run on the published tier table; the live contract reads its rate from on-chain T, which is what actually governs your rebases. Projections are token count (nominal / dilutive), not USD value or yield.
Protocol-owned liquidity (POL)
The treasury permanently owns the genesis $Siren/USDC pool liquidity and keeps all LP that arrives via LP bonds. Liquidity is owned by the protocol, not rented — it cannot be pulled out from under the market. For protocol-owned $Siren/USDC LP, only the non-$Siren (USDC) side counts toward backing; the $Siren side is excluded, consistent with “$Siren is never backing.”
The arbitrage bot & the on-chain 80/20 splitter
An existing off-chain Python bot trades spreads in the user-coin pools. Its only on-chain surface is the RevenueSplitter: the bot pays profit (USDC and/or user coins) into it, and anyone can poke distribute, which routes 80% to the treasury and 20% to the founder wallet, emitting a public event per distribution. The split ratio is fixed at construction and immutable — it cannot be changed to skim more. This is why the fee is on-chain: the 20% is verifiable, not trust-based. The bot’s external profit is genuinely non-zero-sum value entering the game, so it grows T.
Founder allocation & vesting
The founder holds 50 $Siren (10% of the 500 genesis supply) in a public Vesting contract — the only founder token source. 5 $Siren unlock at launch, then 5 per month for 9 months (fully vested by month 9, a 10-month window). A tranche may be staked only after it unlocks; locked tranches cannot stake (and are diluted by rebases — intended). Once unlocked and staked, the founder earns rebases on the same terms as any staker: no special rate, no rebase mint to the founder, no bond preference, no treasury claim.
Trust model — an independent-signer multisig + a 48h timelock
The treasury and all critical parameters are owned by a 48-hour Timelock, and from launch its only proposer/canceller is an independent-signer multisig (the founder plus the protocol’s co-owner). So every privileged action — a treasury withdrawal, an LP move, a parameter change — needs multiple independent signers to propose it and a 48-hour public, on-chain delay before it can execute. No single party, the founder included, can move funds or change the rules on their own or without warning. The token also has exactly three mint paths — genesis (one-time), the Bond Depository, and the staking rebase — each wired to an immutable address that can never be changed; there is no owner mint, no emergency mint, and no upgrade path that can add a mint.
Still be honest about the ceiling: this is multi-party control plus a public time-delay, not a magic “cannot rug.” A colluding quorum of the multisig signers could still queue an action — but only out in the open, and only after the 48-hour delay, which is your window to exit. The protocol-owned LP is therefore multisig-plus-timelock-withdrawable, not hard-locked, and we don’t claim otherwise. (The multisig control is established at the launch handover; until that runs, treat nothing as live.)
Who profits, who carries risk, where value comes from
Be blunt about this:
- Bonds add value — they move real assets into the treasury in exchange for discounted $Siren.
- The bot adds value — its external arbitrage profit is genuinely non-zero-sum money entering the game (80% to the treasury).
- Asset appreciation adds value — if treasury holdings rise, backing rises.
- Rebases dilute — they mint new supply to stakers; they do not create value.
- The price-over-BPT premium redistributes — when market price sits above BPT, earlier players who exit are paid by later players who enter. That transfer is the game, not a bug.
- Only the bot’s external slice and real appreciation are non-zero-sum. Everything else is a transfer between players. None of it is yield.
Earlier players who exit before others can profit; later players carry more risk. If you play, understand that you might be the later player.
Risk disclosure
No siren song here. The most important paragraph on the page is the one we want you to read twice.
$Siren is a game, not an investment. Nominal rewards are dilutive, not yield. You can lose value. Every rule is on-chain and visible.
$Siren is a game, not an investment. No promised yield. You can lose money. Earlier players who exit before others can profit; later players carry more risk — that's the game, not a bug. The founder holds 10% of the genesis supply (vesting over 10 months, public wallet) and takes 20% of arbitrage-bot profit; the other 80% goes to the shared treasury. The treasury is owned by a 48h timelock whose only proposer is an independent-signer multisig (the founder plus the protocol's co-owner), so no single party can move funds and every action is public and delayed 48 hours.