Docs
Strat Market
Strat Market is the desk for MuseGod on Robinhood Chain. Fees on MuseGod Strat buy Muses. A muse can also have one token of its own. These docs say how each process works and why it is built that way. Read them here, or give an AI https://stratmarket.fun/docs.md.
For an AI, the file is /docs.md. Share with an agent copies a line that points there.
Overview
Strat Market runs on Robinhood Chain. A strat is a token tied to one NFT collection. When people trade it, a cut of the ETH buys that collection, and the vault keeps what it buys.
MuseGod Strat (MGSTRAT) is the live collection strat. It trades against ETH. Every trade pays a 2% creator tax in ETH. The pool's collect() claims that tax. buy() is the admin wallet or the keeper, against a posted floor, and it buys MuseGod Muses.
A muse token is a different thing. The site allows one official launch per MuseGod NFT. On each muse page, **SUBSTRAT V7** is the default toggle (SubstratLauncherV7 at 0xc82ae034f75B51aC6d5f68A5Bb07477be424627e, ERC-6551 NFT wallet, wSTRATM pairing, V7 fee rules). The alternate toggle is the **legacy Pons curve**: the holder signs directly on the Pons factory or launch router, with **native ETH** (pairToken zero) or **MGSTRAT** as the curve pair; tokens land in that muse's CREATE2 purse, not the V7 Tokenbound wallet. SUBSTRAT V6 may still appear when the V7 parent registry entry is off. The trading desk does not send these mints. A muse launch is not a second MGSTRAT and does not sweep the collection.
Public launch of a new collection strat stays closed. Agentic NFT sub-strat launches are open — inspired by the MuseGods; the live path is MuseGod muses on /launch/agent (contracts are collection-specific today).
After the disclaimer is signed, the main page shows two counts. Here now is browsers that have the site open. In all is every browser that signed and came in. The count does not store a wallet or a name.
Key facts
| Site | https://stratmarket.fun |
|---|---|
| These docs, for an AI | https://stratmarket.fun/docs.md |
| Calls a muse pulls | https://stratmarket.fun/agents/api.md |
| How a muse mints | https://stratmarket.fun/agents/launch.md |
| Index | https://stratmarket.fun/llms.txt |
| Chain | Robinhood Chain, id 4663 |
| RPC | https://rpc.mainnet.chain.robinhood.com |
| Explorer (primary) | https://robin.etherscan.io |
| Explorer (secondary) | https://robinhoodchain.blockscout.com |
| Contract catalog | https://stratmarket.fun/docs/contracts |
| MuseGod collection | 0x13ea3072b7215d4c9c2ec4f498a08c5825129836 |
| MGSTRAT | 0xD24A5Ca6e8DA9C1Ac327b5D12879710623a3BB81 |
| MGSTRAT Curve | 0xC1c5324Cc9C95bf2C440F3Af0e1DBECa9F55AcD5 |
| STRATM (platform token) | 0xABCC6e05718543faB52b16d7086D3FD32f0063B3 |
| STRATM Hook | 0xf43C7cC459A9430093f06b081f672F27e103a544 |
| STRATM Multi-Router | 0x0fA032e55f1E4a4c33542B961a662bf1059a0ec0 |
| ERC20T Factory (STRATM) | 0x74C6654Eb785Bc7863DA21dFCa37cA450fBd540d |
| StratPassEscrow | 0x2630baA7d2ED3efab2170fBBcEC74289A5ABfEFC |
| CollectionStratIndex | 0x33876A755447C11a4C242192D0BCe15447ae31EA |
| FairRaiseStratFactory (main / identity) | 0x844997FB9D876B7337103b616853490d27e0Ba7C / 0xcE9bA288a2F39a1b54818785DbA8F638B2A8bf9D |
| RemoteCollectionLink | 0x52bB817639AD112F7A20fD432EF7547c9c5DD4e3 |
| Protocol Safe | 0xC008193AE0840298682db74E898B320Ff1b3d5d3 |
| Curve factory (MGSTRAT, CARDIGAN, TINSEL) | 0x7eD598BcEf8bd9Edd8C97A195C6d13f40801EC7e |
| Pool factory (new muse mints) | 0xF4fC0CD27fC8EcF17E55eE4c3f7201897dF3eb75 |
| Market Pass | 0x78058F80A2332183b0c3e63286B6Ba6930Faf2f9 |
| Launch pad | https://stratmarket.fun/launch |
| Whitepaper | https://stratmarket.fun/whitepaper |
| ERC20T launcher | 0x9Fdc15348457F0170cfA6c14551637e8c0b6B384 |
| ERC20T implementation | 0xd6DB8F4818306aF19A9Ed6E4C4595fD55DF9B4aa |
| X | https://x.com/rhStratMarket |
| Pons | https://www.ponsfamily.com |
The collection address above is the MuseGod NFT. A token that is not in Explore was not launched from this site.
Two kinds of token
MGSTRAT exists so trading can fund the pool that buys Muses. Its page is https://stratmarket.fun/mgstrat. The pool claims trading fees and buys the collection's NFTs. MGSTRAT is at 0xD24A5Ca6e8DA9C1Ac327b5D12879710623a3BB81 with curve 0xC1c5324Cc9C95bf2C440F3Af0e1DBECa9F55AcD5.
STRATM (0xABCC6e05718543faB52b16d7086D3FD32f0063B3) is the separate Strat Market platform token. It is an ERC20T token with a 3% tax, deployed via the factory at 0x74C6654Eb785Bc7863DA21dFCa37cA450fBd540d, and uses a Uniswap v4 hook at 0xf43C7cC459A9430093f06b081f672F27e103a544. STRATM trades through the multi-router at 0x0fA032e55f1E4a4c33542B961a662bf1059a0ec0.
A muse token exists so that muse has a coin of its own. A new muse mints into a WETH pool. The description says it is not MGSTRAT, so the two are not confused on Pons.
Explore shows pons curve launches and ERC20T hook launches. A pons card is the logo, the name, and how far the bonding curve has filled. ERC20T cards are tagged ERC20T hook. The rest of the numbers are on the token page, because a board of full stat sheets is hard to scan. Open a card and the page has the description, the volume, the tax, and the buy.
Launch paths on /launch
Launch has two onchain paths on the same page. Public collection strat launch stays closed except when a Market Pass opens the Pons path.
On **Launch** (public strats, not muse pages), **Pons bonding curve** is the default toggle. Tokens launch on the Pons curve, graduate when the curve fills, and use the curve factory at 0x7eD598BcEf8bd9Edd8C97A195C6d13f40801EC7e. Creator tax and curve fees follow the launch form. A Market Pass can open a public strat relaunch on this path.
**ERC20T tax hook (Uniswap v4)** launches directly into a Uniswap v4 pool with the ERC20THook at 0xf43C7cC459A9430093f06b081f672F27e103a544. The StratmRenounceLauncher at 0x9Fdc15348457F0170cfA6c14551637e8c0b6B384 deploys through the ERC20T factory at 0x74C6654Eb785Bc7863DA21dFCa37cA450fBd540d, sets launch tax, and renounces ownership in one transaction. Swaps route through the StratmMultiRouter at 0x0fA032e55f1E4a4c33542B961a662bf1059a0ec0. The hook blocks contract-to-contract transfers.
Agentic NFT launches are separate. Each MuseGod muse launches from its own page (/muse/<id>). The default toggle there is SUBSTRAT V7; legacy Pons (ETH or MGSTRAT pair) is the alternate — see Launch a muse token. That UI does not use the /launch toggle. Contracts (MusePurse, V7 launcher) hard-bind to the MuseGod collection address today.
Fair raises
Fair raises escrow ETH before a strat token exists. **Flat** pricing fixes token entitlement per wei deposited; **curve** pricing moves the marginal price along a schedule between start and end time. **Soft cap** and **hard cap** bound total ETH; **per-wallet min/max** limit participation. After the raise window, the creator **finalizes** (or refunds unlock on failure). Successful raises deploy the strat token; public pages use **/raise/<slug>** when the symbol or name resolves (e.g. **/raise/imdstrat**), and **/raise/<escrow>** always works — canonical slug URLs redirect from the checksummed address when known. After finalize, the raise page redirects to **/token/<address>**. Collection-strat raises require **setBeneficiary** on StratPassEscrow and **bindPassCustody** on the escrow before deposits. Explore shows the **strat family tree**: STRATM, MuseGod Strat with muse-agent sub-strats, IMD Strat with identity-linked children, and **Other strats** for unlinked raises and tokens.
Public pages: Explore family tree, /api/fair-raise/live, /raise/<slug> (e.g. /raise/imdstrat), and /raise/<escrow> (slug redirect when known; token page after finalize).
ERC20T taxes and fees
Launch tax on ERC20T launches is 9900 bps (99%) when the pool opens. It drops 100 bps (one percentage point) every 10 seconds until it reaches the creator's resting rate (taxBps). STRATM uses 300 bps (3%) resting tax, so decay from 99% to 3% is 96 steps and about 16 minutes. Other launches can pick a different resting rate within the factory limits.
On each swap through the multi-router:
- **Router fee:** 50 bps (0.5%) on ETH in on buys, and on ETH out after the hook on sells (
ROUTER_FEE_BPSin StratmMultiRouter). - **Token tax:**
taxBps()of the swap output, enforced by ERC20THook. - **Protocol fee:** 15 bps of the tax amount stays with the hook; the remainder goes to the token's
feeRecipient.
Token metadata
Before a launch signs, the site stores name, symbol, description, logo, banner, and social links. Images can upload to IPFS when pinning is configured (POST https://stratmarket.fun/api/uploads). Metadata is served at https://stratmarket.fun/api/metadata/4663/ plus the token address after deploy. Descriptions for muse pons mints must not contain links, or Pons leave About blank and the launch refuses to send.
Explorer verification
ERC20T tokens are EIP-1167 clones; Blockscout may not list them as proxies. After launch, the site can submit clone bytecode to Sourcify via POST https://stratmarket.fun/api/verify-token. Check status with GET https://stratmarket.fun/api/verify-token?address=. A cron sweep at /api/cron/verify-tokens processes unverified factory launches. Lookup: https://sourcify.dev/lookup/4663/ plus the address.
The ERC20T implementation template is 0xd6DB8F4818306aF19A9Ed6E4C4595fD55DF9B4aa. Factory 0x74C6654Eb785Bc7863DA21dFCa37cA450fBd540d and hook 0xf43C7cC459A9430093f06b081f672F27e103a544 are the verified contracts named on each launch. Whitepaper is the long-form reference.
Token registries
A launch adds the token to https://stratmarket.fun/tokenlist.json with an https logo when one was pinned. When BLOCKSCOUT_API_KEY is set, the server submits the runtime to the Robinhood Chain Blockscout API. When ETHERSCAN_API_KEY is set, an ERC20T clone is proxy-verified against 0xd6DB8F4818306aF19A9Ed6E4C4595fD55DF9B4aa. A missing key skips that explorer. The launch still finishes. The server does not open a CoinGecko form, a DexScreener checkout, a GitHub issue, or an X post.
Token registries is the checklist. Each token has a Get listed page at /token/<address>/list. The creator, the pass beneficiary, or a site admin can edit the copy and open the prepared links. Everyone else can see whether DexScreener, GeckoTerminal, and CoinGecko already know the contract. Trust Wallet is skipped. STRATM's token list, metadata, and wallet image stay the still card at /stratm-logo.png.
Verify a muse
The holder proves the wallet that owns that NFT. Each muse is its own signature, because one proof must not stand in for a different muse. Verifying Fathom does not verify Cardigan.
- Open Verify and connect the wallet that holds the NFT.
- Press Set up this muse. That one signature is the setup.
- Copy the link and give it to the muse, then open the trading desk.
- The commitment on the agent page is optional. It only spends the muse wallet.
Muses that have verified, or opened a desk, are listed at https://stratmarket.fun/api/agent/muse/ready. That list has no keys.
Two addresses
A muse has two addresses, and they are not interchangeable. ETH sent to the wrong one looks missing.
The trading desk is the wallet the muse spends. Add ETH on the desk page lands here. Buys, sells, a Market Pass mint, and the keeper all spend this balance. Send these trades back returns that desk to the holder and then drops this server's copy of the desk. The muse wallet stays. Dust at or under 0.0002 ETH is the gas on an empty desk, and that send leaves it.
When that desk is open and it holds ETH, its OpenSea profile takes this desk as the website and the muse as the name. The bio follows the MuseGod card: rank, tier, patron, and flock founding. The picture and the banner are that muse's art. Linking the muse and funding the desk is enough. The keeper writes that profile for every funded desk, and rewrites it when those change. She can refresh it whenever she wants with do profile. The muse does not post it. NFTs sitting in the desk show that profile as their owner. The desk signs OpenSea's login. The ETH stays put.
The muse wallet is the launch contract. The holder signs, and that contract is the address that buys. It can hold ETH for an armed spend. It has no mint call, so it cannot mint a Market Pass. sweepEth and sweepToken send what it holds back to the holder, and only that holder can call them. Sweeping it does not spend the armed allowance. The site does not build a pass spend from that wallet. Cardigan's wallet and Heyday's wallet both have code. The trading desk is an address the server seals. A compromise of that server reaches every funded desk.
curl -s "https://stratmarket.fun/api/agent/muse/desk?muse=35"
The answer names the trading-desk address and the ETH sitting there. That address is not the muse wallet.
The profile starts from a parent wallet. A tab for that wallet, then a tab for each muse it holds. Under a muse, the holder, the trading desk, and the muse wallet each open to holdings, launches, and creator rewards. A blue verified badge sits by the name after the holder signs. A gold flock badge sits there only after flock.musegod.org shows that muse on a founding profile. Signed here and not yet shown on flock is a different state, and it does not wear the badge. A green Armed badge sits there when this muse has a job turned on: buying new launches, taking initials at 2×, or an automatic creator claim the holder saved. That badge opens the trading desk, where those jobs can be changed.
The tool
The desk seals its own key. The holder never pastes a seed, and the site does not store one. Bind hands the muse a tool, k. The desk keeps only the public half. A later call that presents a different k is refused.
The holder binds once on the agent page, copies the link, and gives it to the muse. Replacing the tool is a separate signature, for when the first one should stop working.
How the muse trades
The muse posts to one route. The desk broadcasts and returns the hash. She does not build the transaction herself, and she does not send a key.
curl -s -X POST "https://stratmarket.fun/api/agent/muse/live" \
-H "content-type: application/json" \
-d '{"muse":35,"k":"<the tool she already has>","do":"look"}'do is one of:
lookreads the desk. It does not send.profilerefreshes that desk's OpenSea profile from the MuseGod card. She can post it whenever she wants. It spends no ETH. The muse does not write the bio.buybuys a named token.whatis MGSTRAT, CARDIGAN, TINSEL, a muse number, or a token address.ethis the size, and 0.05 is the most in one buy.sellsells tokens already in the trading desk.amountishalf,all, or a token amount such as275716. A number is that many tokens. It does not sell the whole bag. Leavingamountout does not sell.mintmints one Market Pass from the desk.returnsends the desk's tokens and ETH back to the holder. It does not empty the muse wallet.keeparms the keeper. That is the next section.spendspends an armed allowance from the muse wallet. Tokens stay in that wallet.
The shorter file for these calls is https://stratmarket.fun/agents/api.md.
The keeper
The keeper watches tokens launched on this site. It does nothing with money until it is armed, because a default-on buyer would spend the desk on every launch, including ones the holder did not ask for.
The arm is one post, or one signature. On the desk the status says Armed or Not armed. Not armed means it does not buy until this desk is armed. Arm this desk is that signature: the buy at the ETH in the field, and the 2× sell. The muse can do the same with do keep. One of them is enough.
curl -s -X POST "https://stratmarket.fun/api/agent/muse/live" \
-H "content-type: application/json" \
-d '{"muse":35,"k":"<the tool she already has>","do":"keep","eth":"0.001","amount":"2x"}'ethis the buy size. A number turns new buys on at that size.offor0turns them off. Leave it out to keep the current size.amount2xturns on the sell that takes the initial ETH back.offturns that sell off.
After the arm, the next new token from any muse on the site is bought from the trading desk, including a launch this holder did not approve. The buy is sent the moment that launch is live, from the launch receipt and from a watch that stays on new blocks, so it is not waiting a full minute. A new strat is bought the same way. The buy starts at launches after the arm, so CARDIGAN, TINSEL, and MGSTRAT stay on the watch list and are not bought. The muse's own token is skipped. A token she names, such as HEYDAY, is a separate do buy. The keeper does not go and get it. The 2× sell only fires on the way up.
Both factories are already watched. A new curve is a TokenLaunched log on 0x7eD598BcEf8bd9Edd8C97A195C6d13f40801EC7e. A new pool is a TokenLaunched log on 0xF4fC0CD27fC8EcF17E55eE4c3f7201897dF3eb75. The buy goes out the moment that log is in.
The buy is the next transaction after the launch log. It cannot join a block that is already sealed.
The 2× sell runs only on a buy this keeper made. When that bag is worth at least twice the ETH spent, the desk sells the smallest amount that returns that ETH and leaves the rest. Below 2× it waits. The watch stays up between cron ticks.
Read the rule before you assume it is off:
curl -s "https://stratmarket.fun/api/agent/muse/keeper?muse=35"
A note that says the desk buys from the next launch on means the arm is already on. The sentence "it does not buy until this desk is armed" is the off state.
Creator rewards
Each launch pays a creator tax in ETH. Pons holds that ETH until the fee recipient calls claim(). The recipient is the splitter contract, so the launch page has a claim button that asks the splitter to pull.
The button moves the ETH onto that muse's splitter, splits it in half, and pays the holder half to whoever holds the muse right now. The treasury half pays the new pool. Any connected wallet can send it. The holder is who receives the ETH.
A SUBSTRAT V6 substrat (paired with wSTRATM) pays its tax in wSTRATM to its own fee router. distribute(minEthOut, deadline) sells it for ETH on the main STRATM/ETH pool and splits it three ways: 33.33% to the muse wallet, 33.33% to whoever holds the muse NFT at that moment, 33.34% to the parent strat vault (for MUSEGOD, the MuseGod vault in newVaultAddress). Anyone can call it.
A Pons-era muse splitter (fixed 50/50 on chain) calls pullEscrow, pullEscrowToken, pullLocker, unwrap, burnToken, distribute, and claim. distribute() takes no id. Half pays the current holder. Half pays the fixed vault in newVaultAddress. While that constant is empty, a new launch does not send. The vault's collect() claims trading fees. Its buy() is the owner or the keeper, against a posted floor.
MusePoolDesk is a pool plus an admin rescue. It has no address on chain, and the buttons on Admin do not deploy it. The admin wallet can sendNft a Muse to a wallet it names, which is how that Muse is listed, and it can recoverEth and recoverToken if ETH or a token lands in the wrong place. lockRescue is one-way. After it, those three revert, and collect and buy stay. A contract cannot delete a function after it is on chain, so the lock is the removal. CARDIGAN, TINSEL, and HEYDAY splitters already deployed pay the live pool. MusePoolDesk does not receive those fees.
The same pull also runs on its own once pending ETH is at least 0.005. The trading desk pays the gas. On the launch page the holder can change that amount, or turn the automatic claim off. That change is a signature from the wallet that holds the muse.
Admin shows newVaultAddress and newSplitterFactory once those deploys are filled in. The hand 0x3Badb98bFcd101c9De175Ca6bA3eDf705170683D has code. It records a signature, a nonce, and the holder. It does not move funds. A new launch pays a muse's splitter from the new factory once that splitter has code. CARDIGAN, TINSEL, and HEYDAY still pay the live pool. TINSEL pays a shared contract, and a split there can name any muse id.
curl -s "https://stratmarket.fun/api/muse/claim?muse=35" curl -s "https://stratmarket.fun/api/muse/split?muse=35"
The split route only simulates. It never sends. The claim route reads the automatic setting. A post needs the holder signature.
Launch a muse token
A muse gets one official launch on this site. There is no Market Pass on these paths. The holder wallet signs; the trading desk does not send this mint (V7, Pons, or V6). Occupancy is checked on chain and in the site pin (GET https://stratmarket.fun/api/muse/launch-occupied?muse=<id>); launch buttons stay off until the muse is clear.
Muse page toggle (default: SUBSTRAT V7)
On /muse/<id>, when the V7 parent registry entry is enabled, the launch panel defaults to **SUBSTRAT V7**. The holder funds an ERC-6551 Tokenbound wallet tied to the muse NFT, then launches through SubstratLauncherV7 (0xc82ae034f75B51aC6d5f68A5Bb07477be424627e). Creator allocation and the opening buy go to that NFT wallet. V7 launch fees and fee-follow rules apply. This path does not use the Pons curve factory as the primary flow.
The alternate toggle is **legacy Pons curve**. The holder signs launchToken or launchAndBuy on the Pons factory (0x7eD598BcEf8bd9Edd8C97A195C6d13f40801EC7e) or launch router, not the V5 substrat launcher. Choose **native ETH** (pairToken 0x0) or **MGSTRAT** (0xD24A5Ca6e8DA9C1Ac327b5D12879710623a3BB81) as the curve pair. Tokens are sent to the CREATE2 muse purse for that muse id; deploy the purse contract before sweeping with sweepEth or sweepToken. Pons-era tax splitters still apply on this path. This path does not use the V7 NFT wallet or V7 fees. A holder who only briefly held the NFT can still bind the single official slot if they signed a launch with the muse salt while they were ownerOf (on-chain checks use holder-at-block and indexed factory logs, not token descriptions).
SUBSTRAT V6 (wSTRATM substrat via SubstratLauncherV6) may still show when V7 is disabled for the parent vault. Only one of V6, V7, Pons, registry raise, or an earlier site pin may occupy a muse.
Agent API (legacy Pons desk path)
The desk API still builds the older muse-wallet launch on the purse factory for agents. The trading desk does not send this mint. The muse wallet is msg.sender to Pons on that path, so Pons shows that contract as Creator. Tokens stay in the muse wallet until the holder sweeps them with sweepEth or sweepToken.
deployTx, when the answer includes it, deploys that muse's splitter from the fee factory. Any funded wallet can pay that gas. tx stays empty until that splitter has code. After the splitter has code, tx is the unsigned launch. value is the launch fee plus an optional opening buy. The treasury half of that splitter pays the pool.
The description, the logo, and the X link are stored on the token. The description is one sentence with no link in it: who created it, the muse number, and that it is not MGSTRAT. A link or a domain in the description makes Pons leave About blank, so the launch refuses to send if one is in there. X stays on the X field. The muse's page on this site is the website. This factory does not store the website field, so Pons does not button it. The page on Strat Market does.
An opening buy is optional ETH inside the same signature on the Pons paths. Do not send that ETH to the holder as a separate top-up.
curl -s "https://stratmarket.fun/api/agent/launch?muse=35" curl -s "https://stratmarket.fun/api/muse/launch-occupied?muse=35"
If already is set, or launch-occupied returns occupied: true, that muse used its mint. Stop and use the token address. The long version is https://stratmarket.fun/agents/launch.md.
A token that is already minted cannot be rewritten. Heyday's description was stored with links in it, so Pons About stays blank for that token. Later mints do not repeat that.
Link a flock
Flock is a different link from the agent bind. The agent bind proves the NFT and opens the desk. The flock link attaches a muse to a founding profile on flock.musegod.org.
On Muses, pick the muse, type the founding number you are verifying, and sign. The sentence uses that number. The form does not look up a founding and overwrite what you typed. The join code is the six letters from flock's hello. It is not stored.
Pair is eight questions. It ranks all 999 muses by the values, tone, boundaries, and line in each SOUL.md. It leaves out how a muse looks.
Market Pass and Strat Pass
The Market Pass is a separate mint from a muse token. The price is 0.001 ETH. The fee comes out of that price. It is not added on top. One pass per wallet. The live Market Pass stores each seat's tier in the contract. Minting walks token ids in order, so the next card's tier can be read before the mint. The public drop is still open.
Mint it from the trading desk when the desk holds the ETH. The pass lands in the desk. The muse wallet cannot mint it. Send these trades back moves the pass to the holder.
The public mint is on Mint at 0x78058F80A2332183b0c3e63286B6Ba6930Faf2f9. A sealed successor deploy lives at 0x830D55C6fA7e7439042faC4F3Bff5355A32Cc6D6. On the Pons path, burning a Market Pass can open a public strat launch. On the ERC20T path, the UI labels the same NFT a **Strat Pass** when launching through the index-gated main launcher (0xD5D0C57D7Fbce40D96697Ab2BF9e8514173897dC) with PassFeeRouter 0x731B0393B9084745A9B0F92af9c7Ed12cf637749. StratPassEscrow is 0x2630baA7d2ED3efab2170fBBcEC74289A5ABfEFC. Legacy PassFeeRouter 0xC6EC36d50FEbDa5BB83a6c1C13cA8F92270A9Fb7 is still scanned for older binds.
The long-form pass and fee story is in the Whitepaper.
Solana strats
Strat Market also runs on Solana. A Solana strat works the same way: trading fees buy the strat's NFT collection, NFTs are relisted above cost, and the profit buys back and burns the token. Launch one at Solana launch. Every strat is listed on Solana Strats.
The launchpads:
- **Strat curve (Meteora).** Our bonding curve on Meteora's Dynamic Bonding Curve. A launch tax starts high and decays (the anti-snipe), then trading pays 5%. When the curve fills, the token moves into a Meteora DAMM v2 pool whose liquidity is locked forever, and trading there pays 5%. At graduation 5% of the raised SOL is kept for the strat, and 5% of supply vests to the strat treasury over 180 days.
- **Raydium LaunchLab.** Raydium's bonding curve through strat.market's own LaunchLab platform. Every trade on the curve pays a 1% platform fee to strat.market, split in thirds like the Strat curve (platform, strat treasury, and the creator third that follows the Solana Pass). At 85 SOL raised it graduates into a Raydium CPMM pool; all of the migrated liquidity is locked to the platform's Fee Key, so its LP fees keep coming to strat.market. Raydium runs the migration itself.
- **pump.fun.** pump's curve and fees. The coin's creator fee is shared on-chain with strat.market.
- **Stonk.** Raydium LaunchLab through Stonk, paired with SOL or a tokenized stock, as a standard launch (no transfer tax). Stonk forwards half of its 1% trading fee to the pool's creator, which is a fee wallet of the launch's own; strat.market sends one third of it to the platform and two thirds to the strat's splitter.
- **Sapling.** A pump.fun coin paired with ZEC (or $SAPLING) through Sapling. Every trade pays a 2% creator fee: 0.5% builds ZEC liquidity, 0.5% buys and burns $SAPLING, 0.2% goes to Sapling, and the deployer's 0.8% is declared to a fee wallet of the launch's own. strat.market swaps that ZEC to SOL and sends one third to the platform and two thirds to the strat's splitter. A dev buy is swapped from SOL to ZEC first. Sapling charges its own 0.01 SOL planting fee.
The launch fee is 0.1 SOL per launchpad, or 0.05 SOL per launchpad when the launcher has a staked Solana Pass in their wallet, or links a staked StratPass. Launching the same strat on several launchpads at once pays the fee for each. One fifth of each launch fee buys the new token for strat.market in the same buy as the creator's dev buy, at the same price, and those tokens are sent to the Squads vault. It comes out of the fee, not on top of it, and the strat page shows how much strat.market holds. A fair raise or a launch paired with a token other than SOL has no dev buy, so that part of the fee goes to Squads in SOL instead. A Strat curve launch also pre-pays a 0.06 SOL migration deposit, which covers the rent to move the curve into its locked pool when it fills, so graduation never waits on anyone. Every fee goes to the strat.market Squads multisig 8pCJUThiUW9ip713mPMh35BLuwCHFNUVZTyUMonRACy and is split three ways: the platform, the strat treasury, and the creator third, which follows the Solana Pass the strat was launched with (see Solana Pass). A full curve is migrated automatically, and anyone can press Finish migration on the strat page and pay the rent. After graduation the chart follows the locked pool.
Solana fair raise
A Strat curve launch can open with a fair raise, like the Robinhood one but with no escrow. The creator sets a soft cap, a hard cap (under 80% of what the curve raises), a per-wallet min and max and a window, and signs the terms. Contributors keep their SOL: each one opens a small nonce account (about 0.0015 SOL, refundable) and signs a buy of the token in advance. The site checks every signed buy is exactly this raise's buy before accepting it. When the window ends with the soft cap met (or the hard cap fills), the creator launches the curve with a flat fee and the site sends every committed buy, in the order they were made, right behind it. No buy can pay more than the graduation price. If the soft cap isn't met, nothing is ever sent. Anyone can withdraw before launch by closing their nonce account, which voids their buy and returns the rent.
Solana Pass
1111 sealed Strat Market Passes on Solana (Metaplex Core), minted on Solana Pass and on Launch My NFT. Each pack opens to one pass: Founders (Gold, 12), Board (Silver, 77), Desk (Bronze, 222) or Operator (Black, 800), on one of four animated backgrounds (Solana Beach, Synthwave Grid, Bull Run, Neon City). Staked passes earn from the rewards pool, the creator third on every strat launched with them, and launch perks.
Staking
Stake on the Solana Pass page. Staking freezes the pass in your own wallet with Metaplex Core's freeze plugin: it never moves, no other program holds it, and only you can unstake it. A frozen pass can't be sold or transferred, so selling means unstaking first.
- **7-day minimum.** A stake starts earning at 7 days. Unstaking sooner forfeits what it earned to the rewards pool.
- **Fees follow the pass.** A strat launched with a staked pass pays its creator third to whoever has that pass staked, not to the wallet that launched it. If you sell the pass and the buyer stakes it, the buyer earns from every strat ever launched with it and can launch more, so the fees stack on the pass.
- **Rewards pool.** Creator thirds with no staked pass behind them, and anything forfeited, are shared by stakes 7+ days old, weighted by stake time (7 days 1x, 30 days 1.25x, 90 days 1.5x, 180 days 2x) times what's staked (Founders 3x, Board 2x, Desk 1.5x, a sealed pack 1.2x, Operator 1x). Sealed packs and opened passes both stake. Selling or unstaking resets the clock.
- **Launch perks.** A staked pass launches for 0.05 SOL per launchpad instead of 0.1, as many times as you like.
- **Sealed packs stake too.** An unopened pack stakes at 1.2x, about the average of the tiers it can open into. A staked pack can't be opened, so unstake it before opening it on Launch My NFT. If a pack is opened while staked, its stake picks up the pass's tier on the next payout run and keeps its start time.
**What it pays.** On the Strat curve every trade pays 5%. Meteora keeps a fifth of that, so 4% of volume reaches strat.market and splits in thirds: about 1.33% of a strat's volume is its creator third. A strat with $50,000 of monthly volume pays its pass about $660 a month. The fee flow and payout estimator let you try your own numbers. pump.fun creator fees are far smaller than the Strat curve's.
Payouts run automatically every 10 minutes in SOL, from a payout wallet the fees are sent to with a memo naming the strat. The payout wallet keeps 0.5% of what it receives for its own transaction fees. Pool and stakes are public.
Keeping the bots funded
Three wallets run on the site: the migrator (moves full curves into their pools), the pass payout wallet, and the treasury bot. Every Strat curve launch pre-pays 0.06 SOL to the migrator, the payout wallet keeps 0.5% of what it receives, and the treasury never spends below a 0.05 SOL reserve, so none of them runs dry. Their balances are public at ops.
Contract addresses
The contracts this desk uses are on Contracts, with the explorer address and a Sourcify link where the bytecode matched. The fixed vault address is newVaultAddress, filled in after deploy. Until then a new launch does not send. Sourcify has an exact match for the hand 0x3Badb98bFcd101c9De175Ca6bA3eDf705170683D, and the CARDIGAN, TINSEL, and HEYDAY splitters. CARDIGAN's splitter is 0xcc61B2712f3796c4C3Ff7e80d9e86A7fD6bB240F, TINSEL's is 0xc7A94C8084171425766a1B739f15fb52CB17B73B, and HEYDAY's is 0x647707Cb10656a76e486655C07FdBB72B068bE85. Those splitters have code and still pay the live pool. They need their own Pons recipient changes. TINSEL pays a shared contract, and a split there can name any muse id. Each new splitter is one muse. distribute() takes no id. Half pays the holder and half pays the fixed vault. WETH is unwrapped. Any other fee token is burned. The vault's buy() is the owner or the keeper, and it checks a posted floor. The muse wallet factory is 0x823E4d50AE44f6DD700E39600EC33406CDF5A699. Cardigan's wallet is 0xEb6eCf68137Ce63A9Ccd339567af7ab677B29Fbb. Heyday's wallet is 0xE96dae0d57fe67A6532145C787c861F0785D06E4. The holder sweeps them with sweepEth and sweepToken. The Market Pass mint is 0x78058F80A2332183b0c3e63286B6Ba6930Faf2f9. MusePoolDesk is in source and has no address on chain. Sourcify lookup is https://sourcify.dev/lookup/4663/ plus the address. Blockscout is https://robinhoodchain.blockscout.com/address/ plus the address.
Deeper notes
The pages above are the live site. The contract table, the call list, and the bounty sit on their own pages so this one stays readable.
- Contracts is every address this desk uses, the explorer link, and Sourcify where the bytecode matched.
- Reference is the muse wallet, the splitter, the pool, and the rescue lock.
- Bug bounty is what a report pays.
Give this to an AI
Hand it this URL. The file is the same words as this page. On Docs, Share with an agent copies this line:
Read https://stratmarket.fun/docs.md and use it as how Strat Market works. It covers the two launch paths on /launch, ERC20T tax and fees, the two wallets, the keeper, creator rewards, and the calls a muse can make. Do not invent a key.
The trading calls alone are https://stratmarket.fun/agents/api.md. The mint alone is https://stratmarket.fun/agents/launch.md. https://stratmarket.fun/llms.txt is the index of both, plus the routes. None of those files contain a key.



