start here
abstract
tl;dr
tokenized stocks exist, but the market around them doesn't. moo market opens 1,000 seats on that missing market. a seat is priced in COIN, earns option premium every epoch, remembers its track record, and can be rented out without leaving your wallet.
Tokenized equities have arrived onchain. Wrapped Coinbase stock (wCOIN) trades on Base against stablecoins, and issuance of tokenized stocks is accelerating across chains. What has not arrived is market structure. Tokenized equities today have liquidity pools but no memberships, no income primitives native to the asset, no persistent identities, and no way for the growing population of autonomous trading agents to build portable, provable reputations around these assets.
Moo Market introduces the seat: a fixed-supply onchain membership, denominated and priced in COIN, that earns yield from covered call premium written on pooled COIN, carries a transferable anonymous reputation via the B20 ring signature standard, and can be leased to human or autonomous operators without leaving its owner's wallet. There are exactly 1,000 seats. Each seat is a bull.
section 1
background
tl;dr
wrapped stocks solved trading. the other four jobs of an exchange, membership, income, identity and delegation, are still empty. seats are the oldest tool for exactly those four jobs.
1.1 tokenized equities are real now
The first generation of onchain stock exposure, synthetics collateralized by crypto, failed on oracle risk and capital inefficiency. The second generation is different: fully-backed 1:1 wrappers issued against custodied shares, redeemable, and increasingly issued or endorsed by the brokerages themselves. Coinbase stock is the emblematic asset. It trades onchain, on the chain Coinbase built, and its price is substantially a bet on the success of onchain markets themselves. The reflexivity is the point.
1.2 what is missing
An asset is not a market. Compare what COIN has onchain today with what any equity has on a traditional venue:
| function | traditional exchange | tokenized equities today |
|---|---|---|
| trading | matched orderbook | AMM pools |
| membership | seats, with rights and fees | none |
| income on the asset | dividends, options premium, lending | none for non-dividend stocks |
| identity | licensed brokers, track records | anonymous wallets, no memory |
| delegation | brokers act for clients | none, or full custody transfer |
The trading row is solved. The other four rows are open. Moo Market is a product for those four rows, starting with COIN because it is the deepest and most narratively coherent tokenized equity on Base.
1.3 why seats
Exchange seats are one of the oldest financial primitives. An NYSE seat was simultaneously an access right, an income stream, a bond of good behavior, and a tradable asset whose price tracked the health of the market itself. Seats were leased more often than sold. Seat prices were front-page indicators of market confidence.
The seat model maps cleanly onchain, and it maps especially well to a world where many market participants will be autonomous agents. Agents need identity that is provable but not doxxing, reputation that survives wallet rotation, and a way to rent access instead of raising capital to buy it. Seats provide all three.
section 2
system overview
tl;dr
four contracts around one asset. seats own everything, the milkhouse pays everything, seatlease rents everything, the B20 registry remembers everything. all of it in wCOIN.
Everything is denominated in wCOIN. There is no separate reward token, no points system, and no emission schedule. The unit of the market is the stock.
the $MOO boundary
section 3
seats
tl;dr
1,000 seats, forever. hold $MOO to mint, two per wallet. minting plants a seed of wCOIN into your own seat's bag, not into our pocket. every seat shows a self-set price, trades on the herd's own market, and that price later becomes a live buyout under a small harberger tax.
3.1 supply and form
1,000 seats, ERC-721, token IDs 1 through 1000, displayed as seat #0001 through seat #1000. The art is a herd of cow characters. Metadata is revealed post-mint via a baseURI update and then frozen.
Supply is fixed in the contract: no owner mint beyond a disclosed team allocation of 25 seats (2.5%) minted at deploy for partnerships, exhibitions, and protocol operations, and no ability to increase supply.
3.2 mint
Mint opens after the $MOO token launch. Eligibility requires holding at least minMooBalance of $MOO at mint time (owner-settable before mint opens, frozen after). Per-wallet cap of 2 seats.
a gate, not a toll
Minting also plants a seed: seedAmount of wCOIN, pulled from the minter and deposited into the new seat's own vault. The protocol keeps none of it: no mint fee, no treasury cut, no split. Everything a minter pays lands in the seat that minter just received.
why the seed is permanent
seedAmount is published before mint opens, frozen when it does, and may be zero. The 25 team seats are seeded identically from team funds.3.3 self price
Every seat carries a selfPrice denominated in wCOIN, set by its owner, visible to everyone. In phase 1 this is informational: an always-on, owner-signed statement of what the seat is worth, aggregated into a protocol-wide seat price index that serves the same signaling role NYSE seat prices once did.
In phase 2 the self price becomes binding under a Harberger-litea pricing system where you name your own price, pay a small tax on it, and must sell to anyone who pays it. the tax keeps the price honest. regime:
- the owner pays a continuous tax of
taxRateper year on the self price, paid in wCOIN, streamed to the Milkhouse pot - anyone may buy any seat at its self price at any time; 97.5% of the payment in wCOIN goes to the owner and 2.5% to the pot, ownership transfers atomically, activation state resets
- protections: a 7-day grace period after a takeover during which the seat cannot be taken again (an ordinary barn sale grants no grace, so a seat cannot farm immunity by trading with itself), a default self price of 1.5x the last takeover price if an owner never sets one, and a minimum self price floor set by governance
The tax rate is the key parameter. It launches low (1 to 2% annually) so the regime feels like a listing fee rather than a threat. It is adjustable downward by the multisig and upward only by seat-holder vote (the governance section).
Design intent: the tax converts idle speculation into pot revenue, the takeover right guarantees a liquid exit and entry at all times without an AMM vault holding inventory, and the self price index becomes the market's public heartbeat.
3.4 the seat vault
Every seat carries its own onchain account: a token-bound vault (ERC-6551 addressing, restricted implementation) that holds wCOIN and travels with the seat through every sale, takeover, and transfer. The owner's share of milk lands in the vault by default, so an unattended seat compounds its own bag. The mint seed sits there as a permanent earmark and phase 2's activation lock as a temporary one: free balance is always the total minus every earmark, and only free balance is ever withdrawable. The activation lock returns to the departing owner's wallet on any transfer; the seed never leaves the seat.
what you see is what you get
3.5 the auction barn
Seats trade on their own market from day one. The barn takes listings and escrowed offers, priced in wCOIN only, and settles atomically: 97.5% to the seller, 2.5% to the Milkhouse pot, seat and vault to the buyer. A barn sale writes the sale price into the seat's selfPrice, so the price index reflects real trades. When the Harberger regime activates, fixed listings retire and the barn remains for below-ask offers; the barn fee and the takeover fee are the same 2.5%, both feeding the pot.
The barn is live on the site: list a seat, take a listing back, or buy one, all in wCOIN. A buy names the price you agreed to, so a seller cannot relist higher in front of your transaction.
3.6 what a seat is not
read this one
section 4
the milkhouse
tl;dr
COIN pays no dividend, so the milkhouse manufactures one: it writes covered calls on pooled wCOIN every epoch and splits the premium across all 1,000 seats. that payout is the milk.
4.1 the problem: COIN pays no dividend
Coinbase stock pays no dividend. A pot of wCOIN sitting still produces nothing. But COIN is one of the most volatile large-cap equities in the world, and volatility is sellable. The Milkhouse manufactures a dividend from that volatility by writing covered callsselling someone the right to buy your asset at a set price later, for a fee paid now. the fee is the premium; the trade caps upside in exchange. on the pot.
4.2 mechanism
The Milkhouse is a vault holding wCOIN, funded by:
Each epoch (default 14 days), the Milkhouse writes European covered calls against a bounded fraction of the pot (writableFraction, default 50%, governance-adjustable within [25%, 75%]):
1 · strike selection
default 110% of the epoch-open TWAP of COIN/USDC from a manipulation-resistant oracle; phase 2 allows seat holders to vote strikes per epoch through ring-signed ballots
2 · sale
counterparties buy the calls by paying premium in wCOIN or USDC. phase 2 launches with fixed-price sales to whitelisted market makers, moving to sealed-bid auctions
3 · settlement
cash-settled in wCOIN against the oracle TWAP at expiry. if the call expires in the money, the pot pays the difference from the covered portion. the pot never sells more optionality than it holds, so it cannot be liquidated
Premium collected in an epoch, plus residuals, less the milking tip, defines epochMilk. Each seat can claim:
milk(seat) = epochMilk × weight(seat) / Σ weightsfeel the trade
the pot sells a call at 110 and pockets 3 premium. drag where COIN ends the epoch:
above the strike: the pot's upside is capped, and simply holding would have won this epoch. that is the cost of the premium.
illustrative numbers, not a projection. strikes and premium vary per epoch, and premium is never guaranteed.
4.3 weights and activation
Base weight is 1.00 per seat. Activation (phase 2) lets a holder boost weight by locking wCOIN in the seat's name for the epoch: locked amounts up to caps map weights from 1.00 to 1.50. Unlike burn-based tier systems, the lock is returned at epoch end; the boost compensates the seat for its lock's contribution to writable pot size. Activation resets on transfer or takeover.
4.4 milking hour and claiming
anyone can ring it in
Claims are pull-based per seat per epoch, callable by the seat owner or its current tenant according to the lease split. The owner's share lands in the seat's vault by default; the tenant's share pays the tenant directly. Unclaimed milk rolls into the next epoch's pot after a 6-epoch claim window rather than accumulating as liabilities.
4.5 honest accounting of the yield
Covered calls cap upside: in epochs where COIN rallies through the strike, the pot underperforms simply holding. The strategy harvests volatility risk premium, which is positive in expectation over long horizons for most equities but arrives unevenly.
no APY marketing
section 5
b20 identity
tl;dr
every seat is a member of a 1,000-strong ring. seats sign predictions and votes without revealing which wallet signed, and every signature builds a rep score that lives on the seat and sells with it.
5.1 the standard
B20 is a ring-signature-based reputation standard. Members of a fixed ring can sign messages proving that some member signed, without revealing which one, using linkable spontaneous anonymous group (LSAG) signaturesa signature scheme where any ring member can sign for the group, no one can tell who signed, but two signatures by the same hidden member are detectably linked.. Linkability means two signatures by the same hidden member in the same scope are detectably same-signer, which enables per-member reputation without identity disclosure.
5.2 seats as ring members
The 1,000 seats form the Moo Market ring. Each seat controls a signing key slot, held by the owner or by the tenant during a lease. Ring-signed actions include:
- epoch strike votes for the Milkhouse
- market calls: directional predictions on COIN posted to the registry, timestamped, and scored against realized prices
- attestations within the broader B20 ecosystem, where a Moo Market seat signature carries the weight of a priced, taxed, yield-bearing membership rather than a free wallet
5.3 rep
Each seat accrues a rep score from scored actions: accuracy of market calls, participation streaks, tenure. Rep is computed from linkable signature history, stored against the seat ID, and transfers with the seat. A takeover or sale acquires the track record. Rep is therefore a capital asset: a seat with a long profitable calling history should command a higher self price, and the tax regime makes that premium legible.
Rep can decrease. Wrong calls score negative. Inactivity decays rep toward a neutral baseline at 5% per epoch. Rep cannot be bought directly; it can only be earned by a signer or acquired by buying the seat that earned it.
5.4 bonded calls
A seat may escrow a flat, refundable $MOO call bond to badge its market calls as bonded (the $MOO section). The bond never changes rep arithmetic and returns in full regardless of call outcomes; it exists to make a track record costlier to fake, and is slashed only on mechanically provable abuse. Bond tiers are fixed protocol-wide so bond size never fingerprints a signer inside the ring.
5.5 graze fees
Any project may pay a flat published fee in wCOIN to the pot and receive an attested herd list: the seat IDs and current owners meeting a rep threshold of their choosing, signed by the registry at a specific block. The price is public and identical for everyone, with no curation and no allowlist of buyers. The data is derived entirely from public onchain state, so nothing private is collected or revealed and ring activity is never deanonymized.
Every other revenue line comes from our own churn or from selling volatility. This one grows with the wider ecosystem: the more projects on Base want distribution that is not sybils, the more the pot earns, and the more a seat is worth to someone who does not own one yet.
what it does not promise
5.6 privacy properties
Observers learn that a seat in the ring acted, and can track a persistent pseudonymous actor across actions in the same scope, but cannot map actions to a wallet and cannot link a seat's activity across scopes with different linkability tags. Signing keys rotate on transfer, mandatorily on takeover.
section 6
leasing
tl;dr
rent your seat out without it ever leaving your wallet. the tenant gets the signing slot and a share of the milk, you keep the seat, the milkhouse takes 5% of the rent.
6.1 mechanism
A seat owner lists the seat for lease: term length, rent in wCOIN paid upfront, and milk split (the fraction of epoch milk flowing to the tenant during the term). A tenant accepts by paying rent. For the term:
- the tenant holds the seat's B20 signing slot and accrues rep to the seat
- milk is split per the listed ratio, enforced by the Milkhouse at claim time
- the NFT never moves. sales and takeovers transfer the seat subject to the lease, rent unaffected
- at expiry the slot reverts to the owner; renewal requires a new agreement
- operating the slot requires the tenant to keep an operator pass: a $MOO average balance above
minGrazeBalancefor the term. a lapsed pass suspends the slot until restored; rent, the milk split, and the lease itself are unaffected
6.2 why this matters
Leasing is the on-ramp for operators who should not need the full capital cost of a seat to participate, and it is the natural interface for autonomous agents. An agent with a strategy but no capital rents a seat, performs under its ring identity, builds the seat's rep, and creates a track record that raises both future rents and the seat's self price. Owners become landlords of trading identities. The protocol becomes a labor market for market participation, with the stock as its unit of account.
section 7
the $MOO token
tl;dr
$MOO is the membership card of the whole ecosystem: it is checked at every door, never spent at any of them. mint, operate a leased seat, join every new stock pot. hold it and the doors open; sell it and the next door costs you again.
$MOO has one protocol pattern: it is the membership filter at every door. It began as the mint gate, and it extends, on the same technical and legal shape, to every future moment where the protocol admits a member, an operator, or a new market. It is checked, never spent. It is never the reward, never the unit of account, and never a vote.
7.1 the gate pattern
Every $MOO gate is the same primitive: a balance check. Nothing is transferred, locked, or burned by a gate; holding is the only way through it. The mint gate reads the balance at mint time; the later gates read a 30-day time-weighted average (TWAB)time-weighted average balance: your average holdings over the window, not your balance at one moment. last-minute buying does not count. so they reward sustained holding.
| gate | what it admits | phase |
|---|---|---|
| mint gate | minting a seat, two per wallet, balance at mint time | 1 |
| operator pass | operating a leased seat's signing slot, flat threshold, grandfathered per lease | 2 |
| stall pass | joining each new stock pot; the stamp is permanent and travels with the seat | 3 |
The stall pass is the one that touches every holder: each new stall (a TSLA pot, an NVDA pot) re-runs the check, so seats that sold their $MOO after mint must re-acquire it to join. The stall gate is a fixed fraction of the original mint threshold, lowerable only by seat vote. The founding COIN pot is grandfathered to all 1,000 seats, and stall-in stays open after launch under the same check.
the opening bell
7.2 the two exceptions to "never spent"
Two mechanisms move $MOO. They are named here precisely because nothing else does:
- call bonds (phase 2). a flat, refundable escrow that badges a seat's market calls as bonded. it returns in full regardless of outcomes and is burned only on mechanically provable abuse (flood posting, oracle griefing, ballot spam). an outcome-linked variant can only be enabled by seat vote, after independent legal review.
- stall nominations (phase 3). proposing a new stall burns a $MOO application fee, paid by the proposing community, never by the treasury. the burn buys agenda space only; seats hold the only binding vote, admission ballots count owner-held votes exclusively (plain owner-signed, outside the ring), and the fee is anchored to the real per-stall cost of oracle setup, audit, and operations.
7.3 non-roles
| non-role | what actually fills it |
|---|---|
| not the reward asset | milk is wCOIN |
| not the pricing asset | self prices, rents, taxes, and fees are wCOIN, and fees are payable in wCOIN only |
| earns nothing | no mechanism pays $MOO or grants milk weight for it; activation locks stay wCOIN |
| no governance rights | governance sits with seats |
7.4 the zero test
the design law
launch parameters
section 8
governance
tl;dr
a public multisig runs phase 1 behind timelocks. in phase 2 the seats vote, one seat one vote, over a short list of parameters. the important things can never be voted on at all.
Phase 1 is admin-operated through a public multisig with timelocked parameter changes. Phase 2 moves the listed parameters to seat-holder voting via ring-signed ballots, one seat one vote, with the tenant voting when a lease includes voting rights:
| parameter | rule |
|---|---|
taxRate | upward moves only by seat vote; downward by multisig |
writableFraction | within [25%, 75%] |
| strike policy | per epoch |
| epoch length | within [7, 28] days; claim window length |
| treasury spends | above 5% of the pot |
| vault withdrawal delay | within [12h, 72h] |
| milking tip and graze fee | tip within [0%, 1%], capped; graze fee published |
| barn fee | within [1%, 5%] |
| operator pass and stall gate | formula bounds; the stall gate fraction moves downward only |
| call bonds | tier schedule and the mechanical slashing list, additive modules only |
| stall nominations | fee anchoring, per listing |
never governable
section 9
contract architecture
tl;dr
nine contracts across three phases. the seat contract is immutable, everything peripheral is replaceable, and settlement fails closed whenever data sources disagree.
Solidity ^0.8.24, Foundry, Base mainnet (8453), staged on Base Sepolia (84532).
| contract | responsibility | phase |
|---|---|---|
MooSeats | ERC-721, mint gate, seed collection into the new seat's vault, self price storage; takeover and tax streaming in phase 2 | 1 → 2 |
Milkhouse | pot custody, permissionless epoch settlement with the milking tip, claims, lease-aware splits, vault routing | 1 (funded distributor) → 2 (options-fed) |
SeatVault | each seat's restricted token-bound account: deposits, timelocked withdrawals, permanent seed earmark, activation lock | 1 |
AuctionBarn | native seat market: listings, offers, 2.5% fee to the pot, self price sync | 1 |
CallVault | covered call issuance, sale, oracle settlement | 2 |
SeatLease | listings, rent, slot delegation, fee routing | 2 |
B20Registry | ring state, key slots, signature verification, rep, attested herd lists, founding markers | 1 (registry) → 2 (LSAG verify, scoring) |
StallGate | per-pot stall-in TWAB checks, stamps, nomination burns | 3 |
MooToken | ERC-20 with ERC20Votes-style balance checkpointing so gates can read 30-day averages | pre-mint |
Operator passes live inside SeatLease; call bonds live inside the B20 registry. All gates read balances only; none of them custody $MOO.
Security posture: pull payments everywhere, reentrancy guards, no upgradeable proxy on MooSeats (immutable core; peripheral contracts replaceable by governance), external audit before phase 2 contracts hold meaningful pot value, public bug bounty from mint day.
oracle policy
section 10
risk and regulatory posture
tl;dr
one volatile stock, young contracts, an oracle, a wrapper, shifting rules, and a token with no cash flow rights. every one of these can hurt. read them before you mint.
market risk
the pot holds a single volatile equity. covered calls cap upside and do not protect downside. milk can be small or zero in some epochs. seat prices can fall.
smart contract risk
despite audits and testing, contracts can fail. phase gating keeps pot value low until the options stack is audited. seat vaults add custody surface (mitigated by restricted accounts and withdrawal timelocks), and vault withdrawals take 24 hours by design.
oracle and settlement risk
TWAP manipulation and feed divergence are mitigated, not eliminated. settlement pauses fail closed.
wrapper risk
wCOIN is an issued wrapper with issuer, custody, and redemption dependencies outside this protocol's control. a depeg or halt in the wrapper propagates to the pot and every denomination in the system.
regulatory
seats are memberships in a rules-based distribution system, not shares. milk is option premium from pooled assets, not a dividend. the protocol does not custody user equities, does not intermediate stock trades, and does not solicit. tokenized equities are jurisdiction-restricted instruments, typically unavailable to US persons under issuer terms, and the interface will mirror the issuer's geoblocking. none of this is legal advice, the design may change to meet regulation, and users are responsible for their own compliance.
token risk
$MOO is a membership filter with no cash flow rights. it should be expected to be volatile and may lose all value without impairing seat mechanics.
section 11
roadmap
tl;dr
four phases: form the herd, open the pen, wake the market, add more stalls. we are in phase 0.
- herd formationphase 0we are here
brand, community, $MOO launch parameters published.
- the pen opensphase 1
$MOO launches. mint opens under the holding gate. seat vaults live: every seat is minted carrying its seed, and milk lands in the same bag. milking hour is permissionless from the first epoch. the auction barn opens with 2.5% of every sale feeding the pot. self prices live, synced by barn sales. milkhouse v1 distributes funded wCOIN by epoch. B20 registry live with seat key slots.
- the market wakesphase 2
callvault live: real covered call epochs with oracle settlement. harberger regime activates with grace protections; barn listings retire into standing takeover prices. seatlease live with operator passes gating tenancy. LSAG verification, scored market calls, and call bonds. governance to seats.
- more stallsphase 3
additional tokenized equities as parallel pots under the same 1,000 seats, admitted through stall nominations, opened on a bell, and joined through stall passes, seat-directed allocation between pots, and external B20 integrations making moo market rep portable collateral for agents across base.
section 12
closing
Every cycle rebuilds the same discovery: assets are easy, markets are hard. Tokenized equities have completed the asset step. The market step needs membership, income, identity, and delegation, in forms that both humans and agents can hold.
Moo Market's answer is deliberately small: one thousand seats, priced in the stock they serve, milked from its volatility, remembering everything they do.
stocks are onchain. the market isn't. moo.
this document describes intended protocol mechanics and is not an offer, solicitation, or financial advice. mechanics may change before and after launch. parameters published at deployment supersede this paper.
reference
glossary
tl;dr
every term the paper leans on, in one plain sentence each. when a dotted-underline word shows up in the text, hover or tap it for the same definition in place.
seat
one of the 1,000 memberships. an ERC-721 cow that earns milk, holds a price, and carries a name.
the herd
the seat holders, collectively.
wCOIN
backed's wrapped coinbase stock on base. the unit every price, rent, tax, and payout uses.
milk
the wCOIN payout each seat can claim every epoch. phase 1 distributes a funded pot; phase 2 fills it by selling covered calls. never from emissions.
epoch
one reward round, 14 days by default.
the pot
the milkhouse's wCOIN balance: the pool the covered calls are written on.
covered call
selling someone the right to buy your asset at a set price later, for a fee now. the fee is the premium; the trade caps your upside in exchange.
premium
the cash a call buyer pays upfront when the pot sells a covered call. the structural source of milk once phase 2 is live.
self price
the always-on price an owner sets on their own seat, visible to everyone.
harberger tax
a small yearly fee on your own self price. it keeps the price honest: set it high and you pay more, set it low and anyone can buy the seat.
takeover
buying any seat at its self price, no negotiation. phase 2.
TWAB
time-weighted average balance: your average holdings over a window, not your balance at one moment. the operator pass and stall pass check this so last-minute buying does not count.
gate
a $MOO balance check. it is read, never spent.
stall
a new parallel pot for another tokenized stock. joining one re-runs the gate.
stamp
the permanent per-pot mark a seat gets by stalling in. it travels with the seat when it sells.
the seed
the wCOIN a minter plants into their own seat at mint. permanent seat capital: never withdrawable, realized only by selling the seat.
milking hour
epoch settlement. permissionless once the epoch matures, and the first caller earns a small tip.
the bag
a seat's own vault: a token-bound account holding wCOIN that travels with the seat. milk lands here by default.
the barn
the herd's native seat market. priced in wCOIN, 2.5% of every sale feeds the pot.
rep
a seat's earned reputation from scored market calls. it transfers with the seat and cannot be bought.
ring
the b20 signature group formed by all 1,000 seats. it proves a member acted without revealing which one.
tenant
whoever rents a seat's signing slot for a term. the seat itself never leaves the owner's wallet.