SINJOH
Robinhood

Developer documentation

Build with Sinjoh

Use the TypeScript SDK, live API, or MCP tools to integrate Sinjoh into apps, automations, and agents. Review the protocol model, then choose the surface that fits what you're building.

Overview

Every buy and sell of your token earns fees, and the creator's share normally piles up in one wallet. That works out fine for the creator and does nothing for anyone else. The money leaves the moment it is withdrawn, and holders just have to trust whatever the founder says they will do with it.

Sinjoh swaps that wallet for a fee router: a small program with exactly one job, the one you gave it. It can pay you, buy your token back, burn it, send other assets out to your holders, and add liquidity that can never be pulled out. Whatever mix you pick gets written in before the token exists, and nobody can change it after that.

After launch it all runs on its own. Sinjoh keeps it moving so you never have to think about it, but every step is open to anyone. If we disappeared tomorrow, your holders could keep it running themselves.

The short version

Trades create fees. Fees flow to your router. The router does what you told it to, every time. Anyone can press the button, and nobody can change the rules.

What Sinjoh isA routing layer for creator fees, set once at launch
What it never doesHold your funds, change your rules, or touch your pool
Who can run itAnyone. Automation is a convenience, not a trust assumption

Launching a token

Launching through Sinjoh is a real Pons launch. Your token gets the same fixed supply, the same locked WETH pool, the same launch protections, and trades on the same DEX as any other Pons token. The difference is one field: the fee wallet Pons pays creator fees to is your Sinjoh router instead of your own address.

The launch screen walks you through it in order, one signature per step, and every step is resumable if it is interrupted:

  1. Predict. The exact token, pool, and router addresses are computed before anything is deployed, and the final launch call is simulated against the pinned, reviewed contracts.
  2. Deploy the router. Your fee router is created at its predicted address with your full route written into it.
  3. Launch through Pons. The token and its pool go live in one transaction, with the router installed as the fee wallet from genesis, so creator fees never touch a private wallet.
  4. Bind. The router is bound to the launched token, and any optional first buy you made inside the launch is returned to your wallet.

The binding is verified end to end: the launch transaction must have been sent by the reviewed router, created the predicted token, and matched the route you authorized. Otherwise the token page is not published. Nothing about this flow can be rerouted mid-launch.

Launch protection

Pons protects the first blocks after launch: on the launch block only your initial buy can execute, and for the rest of the short window each wallet is capped at 5% of supply. Selling is never restricted, and all limits end when the window closes.

Pons v2, the default launchpad

New launches use Pons v2. A v2 launch follows the same router-first shape: predict, deploy the fee router and its Sinjoh adapter, then launch, bind, and make your first buy in one transaction, with different market mechanics:

  1. Paired asset. Your token trades on a bonding curve against the pair asset you choose: native ETH or an approved asset such as USDG or a tokenized equity. Approval, graduation thresholds, and curve economics are read live from the Pons v2 factory, and fees are always earned in the pair asset.
  2. Creator tax. On top of the curve's 1% base fee you can charge a creator tax, paid entirely to your fee route. The cap is set by Pons and shown live on the launch screen.
  3. Launch window. Buys in the first seconds after launch pay a snipe tax that starts near 99% and decays to zero. Your launch and its first buy are exempt automatically; other wallets you list are exempted before trading opens.
  4. Graduation. When the curve reaches its threshold, the market graduates into a Uniswap v4 pool that Pons controls.

The terms you are quoted are pinned into the launch itself: if Pons changes any economic parameter between the quote and your signature, the launch reverts instead of executing on repriced terms. Creator fees accrue to a Sinjoh adapter, the only address that can claim them from the v2 escrow, and anyone can trigger the claim that forwards them into your immutable fee route, the same guarantee the v1 flow gets from its router.

Pools, Uniswap's launchpad

Pools (pools.trade) is Uniswap's launchpad on Robinhood Chain, offered as a third venue with two launch modes. There is no bonding curve and no graduation on either: an instant launch puts the entire fixed 1B supply into a live Uniswap v4 pool in the launch transaction, so trading starts immediately at a fixed opening price; an LBPlaunch runs a continuous clearing auction and then migrates the raise into a v4 pool. Neither mode charges a launch fee, and there is no snipe tax, so an instant launch's first buy cannot be front-run inside the launch transaction, and auction bids all pay the same clearing price, so there is nothing to snipe.

  1. Instant fee model. Creator fees are built in: 40% of the native side of the pool's 0.25% LP fee pays into your fee route, while trading fees partly auto-compound into liquidity on the token side. (Pools also has a no-fee variant; Sinjoh does not offer it. A launch that never produces a fee has no use for a fee route.)
  2. Auction mode. You choose the supply, the raise currency (ETH or an ERC-20), the auction window in blocks, and a raise threshold. An auction that ends below its threshold refunds every bidder in full, so nothing is stranded. Team splits and atomic merkle airdrop legs are funded in the launch transaction itself.
  3. LBP revenue. Three streams reach your fee route: your configured share of the raise, LP fees on the migrated pool's positions, and unsold auction tokens. The last normalized in capped chunks by design, so a large sweep drains over hours rather than moving against a thin pool at once.

Every Pools market is spot-priced from its Uniswap v4 pool, because v4 keeps no on-chain oracle, and the same predict → deploy → launch → verify pipeline applies: the adapter, router, and route you authorized are re-verified end to end before the token page is published.

letscash.fun, native ETH pairs

letscash.fun is an additional fixed-supply Uniswap v4 launch option. Sinjoh lists only enabled ETH-pair configurations on the current reviewed hook; upstream self-burn configurations and non-native quote assets are deliberately excluded. Burns remain available as a destination inside your Sinjoh route.

  1. Predict first. The adapter and router addresses are fixed before the token exists, so the upstream launch can name the adapter as creator from genesis.
  2. Launch, then activate. The first wallet transaction launches upstream. Sinjoh checkpoints its hash, verifies the receipt's token and pool, then asks for a second transaction to bind the immutable route. Either step can be resumed after a refresh.
  3. Trade and measure. The token page uses the official letscash.fun SDK for quotes and swaps, and reads the same v4 pool for price history, market cap, volume, and holder data.
Fee routing is intentionally irreversible

Activation transfers the creator fee stream to the immutable adapter. The adapter can claim and forward fees but cannot transfer that stream again. This is what prevents a later wallet or UI action from bypassing the route you authorized.

Project governance

Project V2 adds an immutable control plane to a Pons v2 launch using ETH or any factory-approved paired asset. Routing is always included. The creator can add either token voting with a timelock or a three-signer multisig, plus Project Treasury, Staking, signed Airdrop, and Raffle modules. Only the controls for modules that actually exist appear on the token's public workspace after launch.

The app assembles one reviewed launch profile, simulates the exact atomic Pons and Project transaction, and verifies the resulting Registry record before publishing it. Funding Bands remains a separate token-workspace action for eligible Pons v2 markets; it is not silently added to a Project launch.

Project routes can execute ordered direct sends, swaps, buyback-and-burn, and Treasury, Airdrop, Raffle, liquidity, or project-sink funding. Treasury is a valid recipient for every routed asset, not only WETH. Every adapter and price guard is checked against the active promotion's Merkle root before the Launcher accepts the configuration.

Developer release

@sinjoh/sdk@2.2.5 exports the canonical Project launch types, preset builders, Registry reads, transaction assembly, simulation, and verification helpers. The matching @sinjoh/abis@2.2.5 and @sinjoh/deployments@2.2.5 packages pin the same production release.

Project V2 launcher0x6b5e99…9100
Project V2 registry0xF2F0C3…3Bf4
Pons Project adapter factory0xa16389…dF0d

How fees flow

Trading fees first accrue in the selected launchpad's custody: liquidity fees can include WETH and your token, while letscash.fun's hook accrues the creator share in native ETH. From there, the Sinjoh pipeline runs the same way every time:

  1. Collect. The launchpad adapter claims the creator share and forwards it into the router. Anyone can trigger collection at any time.
  2. Normalize. The router swaps token fees to WETH so everything is measured in one asset, then takes the fixed 1% Sinjoh protocol fee.
  3. Split. The remaining WETH is divided by the percentages you configured. A bucket can stay in WETH, buy your token back on the open market, or swap once into another asset with a funded WETH pool.
  4. Deliver. Each bucket pays its recipients: wallets are paid directly, airdrop budgets move to the distributor, liquidity budgets move to the liquidity manager, and burns go to the burn address.

Every step is a separate, simulated, publicly callable transaction, and every amount is verifiable from chain data alone. Destinations come in two shapes: wallets (you, or any address you name) and sinks (the airdrop distributor and the liquidity manager). Sink destinations are frozen forever. The creator wallet can be repointed later only if you enabled that at launch. That is the single mutable value in the whole system.

Building a route

A route has two layers, and both are set once at launch. The first decides what your fees are converted into. The second decides who is paid out of each conversion. Every layer must add up to exactly 100%, and the builder will not let you authorize a route that could not execute on chain.

1 · What fees become

WETHKept as WETH for wallets, airdrops, or liquidity
Buy back your tokenFees purchase your own token on the open market
Another tokenAny ERC-20 on Robinhood Chain with a funded WETH pool
RWAA tokenized stock such as $NVDA or $TSLA

WETH and a buyback of your own token can each appear once. Other tokens and RWAs can be added repeatedly, up to eight conversions in total. The RWA picker only offers assets that actually have a funded WETH pool on the Pons DEX right now, and the launch flow re-verifies every pool before your wallet ever signs.

Tokens are chosen by address

The builder takes a contract address and nothing else, then reads the name and symbol back off that contract to show you what you picked. Symbols are not accepted as input, because two tokens can share one and the wrong one is how people end up routing fees into an imposter. Addresses are resolved against Robinhood Chain only, so a token that exists on another network is reported as unsupported rather than silently accepted.

2 · Who gets paid

Each conversion pays out to up to ten recipients. Which destinations are available depends on what the fees were converted into.

CreatorThe wallet that launched the token
AirdropsPushed to holders, proportional to what they hold
Project TreasuryThe governed Treasury module, for any routed asset
LiquidityMinted as permanent, protocol-owned LP in your pool
BurnSent to 0x000000000000000000000000000000000000dEaD · token outputs only
Another addressAny wallet you name, in any conversion
Composition is free-form

Burning WETH is not offered, and an RWA reserve cannot be burned. Everything else composes freely: keep part of the fees in WETH for Treasury, buy back and burn the project token, and convert another part into $NVDA for Airdrops or Treasury, all from one route and all enforced onchain.

Airdrops

An airdrop allocation turns a slice of your trading fees into recurring payouts for your holders, in WETH, in another token, or in a tokenized stock. Holders do not claim anything: payments are pushed to their wallets, proportional to what they hold.

Each round follows the same verifiable cycle:

  1. Rebuild. Holder balances are reconstructed from archive history and independently verified against the snapshot block.
  2. Attest. A deterministic Merkle-sum artifact is committed by an isolated attestor while the snapshot is still inside its confirmation window.
  3. Push. Payments go out in batches. This step is permissionless, so anyone can finish a round the keeper started.

Entitlements are cumulative: each round's record builds on the last, so a missed round is never lost. It is paid the next time the pipeline runs. Pools, protocol contracts, and the creator are excluded from snapshots, so the budget goes to actual holders rather than back into infrastructure.

Why snapshots are trustworthy

Balances are rebuilt from onchain history and committed as a deterministic record while the snapshot block is still fresh. Anyone can rebuild the same record from public data and check it matches what was committed, so there is nothing to take on faith.

Permanent liquidity

A liquidity allocation makes your pool deeper forever. WETH routed to liquidity is swapped roughly 50/50 into your token and WETH, then minted as a position in your token's own pool. The principal is protocol-owned and permanent: there is no withdrawal, no transfer, and no rescue path. Not for you, not for Sinjoh, for anyone.

The position earns trading fees like any other, and those fees are recycled: they compound back into the position's own budget and become more permanent liquidity on the next mint. Once a route sends fees to liquidity, depth only ever increases.

Price protection

Every liquidity mint is checked against a 15-minute time-weighted average of your pool's own price, with strict bounds on deviation and slippage. If the price has been pushed away from its recent average, the mint waits instead of buying into a manipulated market. Funds stay pending, so nothing is lost by waiting.

Holder raffles

A launch can add a Holder Raffle: an immutable per-launch contract that pays prizes to holders from a pool funded by the token's own fee routing. Holders are entered automatically just by holding. No signup, no tickets to buy, and no claiming. The keeper snapshots balances, draws winners with publicly verifiable randomness, and pays them straight to their wallets.

Tickets scale with holdings: one ticket per configured amount of the token. The recommended basis counts each wallet's lowest balance across the snapshot window, so buying right before a draw earns nothing. Each draw pays a fixed share of whatever the pool holds: a percentage, never a fixed obligation, so the raffle can never run dry. Launchpad infrastructure (the venue's own market and custody contracts, and the Sinjoh contracts) is excluded from winning at deployment, permanently.

A raffle can pay WETH, swap each winner's prize into one specific stock chosen at launch, or run as a Mystery Stock raffle that picks from 25 tokenized stocks ($AAPL, $AMC, $BB, $BE, $COIN, $COST, $CRCL, $DJT, $GME, $HIMS, $INDA, $LLY, $META, $MSTR, $MU, $NVDA, $QQQ, $RBLX, $RDDT, $SGOV, $SNDK, $SPCX, $SPY, $TSLA, $TSM) per-winner with the same verifiable randomness. A specific stock choice is immutable and every winner receives that asset. Every stock route runs through a reviewed swap adapter under a five-minute price guard; winners never set slippage, and a route that cannot execute keeps the prize as a retryable credit with a WETH fallback for the winner. Only routes that passed an on-chain preflight are offered.

Nothing can be changed

Every raffle parameter (tickets, cadence, prize share, taxes, exclusions, stock routes) is frozen at deployment. There is no owner, no pause, and no rescue path. Failure states never lose value: undeliverable prizes become retryable credits, and expired or timed-out rounds return their reserve to the pool.

Developer integration

The public protocol API is available at api.sinjoh.com/v1 ↗. It needs no key for the anonymous 60-requests-per-minute tier and exposes deployments, launches with optional Project V2 identity, markets, raffles, airdrops, liquidity, Funding Bands, revenue, randomness, normalized events, and wallet activity. The API contract is published as OpenAPI 3.1 version 1.3.1.

Install @sinjoh/sdk@2.2.5 for typed reads, launch builders, complete Project V2 routed-action encoding, transaction preparation, and verification helpers. Use @sinjoh/abis@2.2.5 and @sinjoh/deployments@2.2.5 when you need the exact generated contract and deployment surfaces. All are published under Apache License 2.0 from the canonical SDK repository ↗.

@sinjoh/agent@2.2.5 provides the MCP server. Its Project tools preview and validate a launch, read complete Registry records, and prepare and simulate the exact atomic Pons Project transaction with its reviewed route proofs. The server holds no wallet keys and never signs or submits transactions.

Checking rewards for a wallet

  • Paid raffle prizes. Filter the API winner history or the indexed PrizePaid and StockPrizePaid events by holder. This is payment history, not a pending-win check.
  • Deferred raffle delivery. Read owed(wallet) and stockOwed(wallet, asset)on each launch's raffle clone. A positive value means a valid winning payout was settled but its transfer failed; anyone can retry delivery.
  • Pending raffle wins. There is no single on-chain claimable(wallet)view and no public proof endpoint today. A pending win requires the drawn round, unpaid slot, winning index, and the wallet's committed Merkle leaf and proof from the keeper artifact. Do not infer it from current token balance.
  • Holder airdrops. These are push distributions. Holders do not claim, approve, sign, or pay gas. For a known airdrop account, paid(accountId, wallet) is cumulative delivery, not a pending entitlement.

Shared deployments are listed below. Every launch has its own raffle clone, so discover that clone through GET /v1/raffles or the factory's RaffleDeployed event, then verify its subject() before trusting it.

Raffle factory0x993132…e9e3
Raffle implementation0x9FFF94…7cD3
ECVRF randomness0xD16BCD…c491
Airdrop distributor0xA1d652…786a

Automation

Everything above is permissionless, which means it does not need you. Independent routing, airdrop, raffle, randomness, and Funding Bands workers run the production pipeline. They do not hold protocol assets or choose destinations, so automation never becomes a custody assumption: each worker can only advance the immutable onchain configuration.

The routing keeper handles all of this on its own:

Collecting creator fees from PonsMoving fees into your routerLogging fees and taking the protocol feeConverting token fees to WETHPaying your treasury walletFunding airdrops and liquidityMinting liquidity and collecting LP fees

It re-plans against fresh onchain state every 15 seconds, attempts a Pons collection every 5 minutes, and performs one simulated action per transaction, waiting for 2 confirmations before planning the next. The airdrop worker runs legacy and signed Project V2 snapshot cycles on their configured schedules. Raffle and randomness workers progress drawings and delivery, while the Funding Bands guard independently observes eligible v3 TWAP state.

If the keeper stops

Nothing is stranded. Every action stays open to any address, so you, a holder, or another bot can move the pipeline forward. The token workspace exposes each step manually for exactly this case.

Fees

Three fees exist in the whole system, and each one is fixed and public. There are no hidden spreads, no performance fees, and no fee that can be raised later.

Pons launch fee0.0005 ETH · paid once at launch, to Pons
Pons trading fee split70% creator / 30% Pons · snapshotted at launch
Sinjoh protocol fee1% of collected creator fees, on collection

The 70% creator share is what your router routes. Sinjoh's 1% is taken when fees are normalized to WETH, before your split is applied, and flows to the protocol revenue collector. Everything after that follows your route to the last percentage point.

Security model

  • Settings are permanent. Splits, destinations, and pool routes are written at launch. Nothing can change them afterwards: not the creator, not Sinjoh. The one exception, repointing the creator wallet, exists only if you enabled it at launch, and can touch nothing else.
  • No operator keys. Routers have no owner, no upgrade path, no sweep, and no rescue call. The keeper keys can only trigger actions anyone else could trigger too.
  • Nobody controls the trigger. Collection and processing are open to every address, so the system cannot be quietly switched off or timed to benefit an insider.
  • Routes stay simple. Token fees swap to WETH first. Each output then uses at most one direct WETH pool, and callers cannot substitute another adapter, pool, or fee tier at call time.
  • Prices are checked. Liquidity mints are gated by a time-weighted price check on the token's own pool, so a manipulated price pauses the pipeline instead of draining it.
  • One router per token. Each launch gets its own contract holding only that token's fees. Nothing is pooled across launches.
  • Outcomes are verifiable. Payments, airdrops, and LP mints are ordinary transfers, auditable from chain data alone. The launch itself is verified against the reviewed contracts before a token page is ever published.

Risk disclosures

  • Immutability cuts both ways. The same permanence that protects holders means a mistake in your route is forever. Review the summary panel carefully. There is no edit button after launch.
  • Liquidity is one-way. LP principal minted by the router is permanent. There is no withdrawal, transfer, or decrease-principal path, for anyone, ever.
  • Markets are markets. Buybacks, burns, and deeper liquidity do not guarantee a higher price. Tokens can be volatile, illiquid, or lose all value.
  • Dependencies can fail. Sinjoh builds on Pons, the Pons DEX, and Robinhood Chain. Wallets, RPCs, and indexers can fail; displayed values are estimates, not execution guarantees.
  • Unaudited software. The contracts are immutable and public, but unaudited. Launching a token risks total loss. Read the contracts before trusting them with value.

Network & contracts

NetworkRobinhood Chain · chain ID 4663
Native assetETH
Explorerrobinhoodchain.blockscout.com

Everything Sinjoh does happens in these contracts. They are deployed once and reused by every launch: the only thing created per token is that token's router. Deployed contracts are immutable. If a new version ever ships, it ships as new addresses, and existing launches keep running on the contracts they were born with.

Staking Engine0xC49e59…683A
Sinjoh staking rewards0x7926Fe…8584
Launch staking engine0x1f20bF…CE2b
Staked votes adapter0xCB102A…12DC
Funding Bands manager0x8AEb66…62e9
Funding Bands launch escrow0xf8F288…0378
Funding Bands Pons v2 verifier0x9d9303…82D9
Funding Bands confirmation guard0xADB3BD…3915
Funding Bands ETH/USD oracle0xB1115B…9754
Funding Bands Pons v2 subject sell adapter0x42C7AD…b985
Funding Bands Pons v2 subject price guard0x7Dd3D8…c8e3
Router implementation0x17c76F…9B64
Router factory0xFA51E6…584d
Agnostic router implementation0x06274b…84a6
Agnostic router factory0xA1F721…18eD
Flap adapter factory0x77748D…be61
Flap adapter implementation0x4c34af…1243
Flap buyback adapter0xf7d40E…5574
Flap buyback guard0xe19827…7Bf5
Flap payout guard0x071d29…Dc5e
Flap V2 liquidity manager0x4E3307…782E
Simple swap adapter0xc9F600…7D7B
Execution guard0xfdd4f5…F328
Revenue collector0x5Bb758…38c5
Airdrop distributor0xA1d652…786a
Liquidity manager v30xf67150…79c3
Liquidity manager v40xf67150…79c3
Pons adapter factory0x22F175…4950
Pons adapter implementation0x488b10…01A6
Pons v2 adapter factory0xa16389…dF0d
Pons v2 adapter implementation0xAf3D67…1e2b
Pons v2 buyback adapter0xfAB57a…Abb8
Pons v2 buyback guard0x69768f…DA8b
Pons v2 buyback adapter0x392171…1D43
Pons v2 buyback guard0x3a4c8f…6f7D
Pools instant adapter factory (creator fee)0xCD82f6…b635
Pools instant adapter implementation (creator fee)0xa6e8d3…b425
Pools instant adapter factory (no fee)0x44AD6f…C0D8
Pools instant adapter implementation (no fee)0xD99F64…397d
Pools LBP adapter factory0x6A4D50…25D7
Pools LBP adapter implementation0xFcE43D…55c6
Pools buyback adapter0x3B4791…14C2
Pools buyback guard0xF78678…F685
Pools sell adapter0x192f32…35a5
Pools subject guard0x4c75DB…b5a2
Pools merkle claim factory0x0C8B3e…0a15
letscash adapter factory0x81f50D…83DC
letscash adapter implementation0x0B825f…2cC4
letscash buyback adapter0xb372e5…3D17
letscash buyback guard0x1fE014…eC8d
Pons launch factory0xA5aAb3…1feB
Raffle factory0x993132…e9e3
Raffle implementation0x9FFF94…7cD3
ECVRF randomness0xD16BCD…c491
Stock guard (0.05% tier)0xDad51e…480C
Stock guard (0.3% tier)0xd01273…515D
Stock guard (1% tier)0xf81d21…4803

Parameters

Routing uses one shared, reviewed swap adapter. The launch flow resolves a funded direct WETH pool for every asset you pick and never asks you for adapters, guards, pools, or encoded route data.

Swap venuePons v3 · direct WETH pools
Conversions per launchUp to 8
Recipients per conversionUp to 10
Liquidity venueUniswap v3 · LP fees recycled into more liquidity
Liquidity price check15-minute TWAP on the token's own pool
Airdrop snapshotsMerkle · 2 L2 confirmations
Protocol fee1% on collection
Keeper cadenceRe-plans every 15s · collects every 5 min