wSEMI · the yield-bearing SEMI

Stake once.
Compound forever.
Never relock.

wSEMI is a wrapper over the SEMI staking position: deposit SEMI, receive shares whose price only goes up as the ratchet pays. SemiVault's keeper compounds it every epoch, free — wSEMI charges nothing, ever. Pods are branded clones anyone can launch and run — the operator sets the only fee (a cut of the yield, never principal) and keeps it.

Contracts written · 14/14 scenarios pass · re-audited 2 Sep 2026 · not deployed yet — addresses will appear on this page
the problem it fixes · live from the staker
SEMI staked right now
pending activation
emitted to stakers, lifetime
next epoch
ratchet primed (FBR vs mark)
claim txs in 20 days1,662 · by hand
SOURCE FROZENTESTS PASSRE-AUDIT 2 SEPDEPLOY PENDING
why a wrapper

Staking SEMI by hand has three taxes. wSEMI removes all three.

TAX 1 · THE RELOCK

Every stake resets your 6h clock

One unlockAt per wallet, reset by every stake() — including compounds. The wallets that compound most are the ones most often locked. In a pod the lock belongs to the pod, and the queue is funded before the pod ever re-stakes.

TAX 2 · THE CLAIM SPAM

1,662 claims for 23 payouts

Rewards do not compound by themselves: you claim, then stake again, and pay the relock. wSEMI harvests once per epoch for everyone, and the share price does the compounding.

TAX 3 · THE DEAD TIME

Pending stake earns nothing until the next tick

A pod stakes in one batch per epoch, so deposits are pooled and idle time is shared, not repeated per wallet. And you can trade or LP the share while the SEMI underneath keeps staking.

mvp · simulator on real ledger data

What wSEMI would have done since launch

Every ratchet payout (23 of them, 13 Aug → 2 Sep) replayed as a compounding share price: each epoch's yield is the SEMI minted divided by the SEMI staked at that moment, reinvested. Live numbers below come from the chain; the curve is a backtest, not a promise.

deposit
SEMI, deposited at launch (13 Aug) at 1.00 SEMI per wSEMI
SEMI your wSEMI would redeem for today
share price today (backtest)
same SEMI, claimed by hand and never restaked
compounding edge
last payout yield · live
fees on wSEMI
0 · no deposit, no keeper, no performance fee
wSEMI share price · replayed from the 23 real payouts
Staked base per epoch is the ledger's net stake-in; early epochs (14 Aug, small base) carry most of the uncertainty. From 15 Aug alone the replay is ×1.93.
how it works

Deposits are instant. Redemptions wait for the lock — never for another depositor.

01 · DEPOSIT

SEMI in, shares out, now

Shares minted at the current price. Assets sit in the pod's buffer; nothing is staked yet, so your deposit cannot delay anyone's redemption.

02 · COMPOUND

keeper, every epoch, free

compound(): claim rewards → service the queue while unlocked → stake the surplus. No keeper fee. Staking is last, so it re-locks only after redeemers are paid.

03 · PRICE

share price rises, shares don't

totalAssets = idle + active + pending + earned − owed. No rebasing, no claim button. Operator fee (0 on wSEMI, set by the pod's operator otherwise) only on new highs, paid as dilution. That is the only fee in the system.

04 · REQUEST

burn shares, lock in the price

Your assets are recorded in owedAssets at today's price. Everyone else's price is unchanged. If the buffer already covers it, it fills immediately.

05 · CLAIM

≤ 6h later, SEMI out

Once the pod's lock ends, service() unstakes exactly the deficit. Anyone can call it — the keeper does. Then claimRedeem pays you.

deposit ──► shares minted immediately (assets sit in the idle buffer)
compound() ► keeper, every epoch, no fee · claim → service queue → stake surplus
requestRedeem ─► shares burned now, assets recorded in owedAssets
service() ─► permissionless · claims rewards, then unstakes the deficit once unlocked
claimRedeem ──► pays out when the pod holds the assets
audit · re-run 2 sep 2026 against the verified staker source

What was checked, what was found, what changed.

The pod is grounded in the verified SemiStaker (0x1a79…927f): one unlock clock per address reset by every stake, unstake from active only, claim never relocks, pending promotes on the next tick. Every property below was tested in an EVM harness that transcribes that staker verbatim.

PropertyStatusDetail
Queue can never be stranded by a fresh 6h lockHOLDSdeploy()/compound() stake only balance − owedAssets. A relock is only possible when every open request is already payable from the buffer.
Relock griefingBOUNDEDTo relock the pod an attacker must first fund the entire queue with their own SEMI, which then sits locked. Cost is capital, not gas; benefit is a ≤6h delay for future requests only.
Share price on redeem requestHOLDSShares burned and owedAssets raised by the same value: price unchanged for everyone else (tested to 0.1%).
First-depositor inflation attackCLOSEDVirtual-share offset + 1,000 dead shares locked on the first deposit. Donation test: a 500× donation cannot rob a late depositor (>95% recovered).
Performance feeHOLDSHigh-water mark on share price, charged before every deposit/redeem so newcomers never pay for old gains; dilution only, no assets leave; protocol cut is a cut of the fee. wSEMI: 0.
Reentrancy / token hooksHOLDSReentrancyGuard on every state path; SEMI is a plain OZ ERC20 with no transfer hooks; SafeERC20 throughout.
Upstream admin riskNONEStaker and ratchet have no owner. Factory owner can only set the protocol cut (≤50% of an operator fee) — never touch a pod's assets.
Rewards idle until someone calls deploy()FIXED 2 SEPWas: harvested SEMI sat unstaked until a separate call. Now: compound() does claim → service → stake in one tx. No keeper fee: SemiVault runs it for wSEMI, pod operators run it for their pods (or lean on ours), and anyone can call it. Reverts when there is nothing to do.
Foreign tokens sent to a podFIXED 2 SEPWas: stuck forever. Now: operator can skim(token) anything that is not the asset. SEMI itself can never be skimmed — it is a donation to holders.
Redemption orderNOTEAny funded request can be claimed by anyone; a small later request can be paid before a large earlier one when the buffer covers only the small one. No loss — service() targets the whole deficit.
Yield is lumpy by designNOTEThe ratchet pays only when the epoch's minimum reserve sets a new high (23 of 78 epochs so far). Share price steps up at payouts and is flat between them. Wrapping does not change that; it only stops you paying for it.
SCENARIOS
14 / 14

deposit · no auto-stake · warm-up · yield · fee split · request · locked · service · queue protection · guards · wSEMI · inflation · compound · skim

SEMIPOD
10.6 kB

deployed bytecode · EIP-1167 clones · one implementation, audited once

FACTORY
2.6 kB

permissionless createPod · fee cap 20% of yield · protocol cut ≤50% of fee

DEPLOY
1 tx

factory + implementation + wSEMI in one transaction, ~3.2M gas. Rehearsed on a local chain.

who uses pods, and how

One base token, many products on top.

RETAIL STAKER

Just hold wSEMI

Deposit once. No claim button, no relock, no epoch watching, no fee of any kind. Your balance stays the same; what each share redeems for goes up. Sell or move the share any time — the SEMI underneath keeps staking.

KOL · COMMUNITY · TG GROUP

Launch a branded pod

createPod(you, 1000, "Alpha Pod", "aPOD"): your name, your ticker, up to 20% of the yield as your fee, taken only on new highs. Your holders get compounding; you get a revenue line that grows with the ratchet, and you run the pod. Fee can only ever be lowered.

LIQUIDITY PROVIDER

wSEMI / MU pool

LP where the SEMI side compounds while it sits in the pool. A yield-bearing base makes the pair drift up against SEMI, which is the natural home for the next floor-loan and note products.

DAO · TREASURY · FUND

Park SEMI, report one number

A single share price is the whole performance report. Async redemption with a ≤6h bound is auditable and predictable — nothing a treasury can mis-click.

BUILDER

Compose on the base

Floor loans against wSEMI collateral (backing rises, price floor holds), fixed-yield notes that sell the ratchet upside, dividend vaults that route into a pod. Everything downstream inherits the audit.

POD OPERATOR

Run it, and the fee is yours

Whoever launches a pod runs it: set a performance fee up to 20% of the yield, call compound() each epoch (or let SemiVault's keeper do it — it compounds every pod in the factory), and the fee is paid to you as shares. wSEMI has no operator fee and never will.

timeline

Where it stands

DONE
Contracts + tests

SemiPod, SemiPodFactory, harness transcribed from verified staker. 14 scenarios.

DONE · 2 SEP
Re-audit + compound()

Free auto-compound, skim, findings table above.

NEXT
Deploy factory + wSEMI

One tx from the operations wallet. Addresses and Blockscout links land here the same hour.

THEN
Station + staking tab

Pod bay goes live on /connect, wSEMI deposit inside staking.exe, keeper bot compounding every epoch.