RingSwap paper · v0.1 · October 2026
One signature to Monero.
RingSwap turns any Solana token into real XMR at your own Monero address, in one transaction you sign yourself. This paper says what runs today, what is built and waiting, what you trust at each step, and where the limits are. Where this page and the chain disagree, the chain wins.
Each section says where it stands: running today with real money, built and waiting on a launch step, or planned, which is a direction, not a promise.
01 · Summary
- Exit to Monero running today: swap SOL, USDC, USDT or any token with a route into wXMR, and burn that wXMR with the bridge addressed to your Monero wallet, all in one Solana transaction.
- Enter from Monero running today: open a deposit account on the bridge, get your own Monero subaddress, and receive wXMR on Solana for the XMR you send.
- $RING built, starts at launch: a Meteora token that trades against wXMR. Half of its fees and of every RingSwap fee go to holders in XMR; half buy $RING and burn it.
02 · The problem
Every balance and payment on Solana is public forever. One labelled address ties a wallet's whole history to a person. Monero was built the other way round: ring signatures hide the sender among decoys, one-time stealth addresses hide the receiver, and RingCT hides the amount, for every transaction, by default.
The gap is getting from one to the other. Privacy-coin delistings left few clean ramps, and most cross-chain routes end in a wrapped token that is just as public as what you started with. RingSwap's answer is narrow on purpose: one signature on Solana, real XMR at the end.
03 · Exit to Monero running today
RingSwap builds one versioned transaction with these steps, in order:
- Compute budget, then Jupiter's setup, swap and cleanup instructions, routing your token into wXMR.
- The bridge's
request_withdrawal(nonce, amount, xmr_address, exact_out = false), whereamountis the swap's guaranteed minimum output.
Because the withdrawal asks for the slippage floor, it can never ask for more wXMR than the swap is guaranteed to deliver. Anything above the floor stays in your wallet as wXMR. If any step fails, the whole transaction fails and nothing moves.
Before your wallet is asked to sign, the server simulates the full transaction against mainnet, and the page checks that the fee payer is your wallet, that only the expected programs appear (compute budget, system, token, associated token, Jupiter, the bridge), and that the Monero address inside the bridge instruction is the one you typed.
Limits and timing
- Minimum: 0.1 XMR, enforced by the bridge program.
- The bridge relayer marks the request as sending, pays out on Monero, then records the Monero tx hash and tx key on Solana. Exits observed on 2026-10-07 completed about 20 seconds after the request.
- Monero wallets need 10 confirmations (about 20 minutes) before received funds are spendable.
- If a request is still pending after five minutes, its owner can cancel it and the wXMR is returned. The tracking page offers this when it applies.
04 · Enter from Monero running today
Your wallet signs create_deposit_account, which costs a small amount of SOL as account rent. The bridge relayer then assigns that account a Monero subaddress. XMR sent to it (0.1 XMR minimum per deposit) is minted as wXMR to your wallet after Monero confirmations, with no bridge fee. If your wallet had no wXMR account at the time, the minted wXMR waits in the deposit's holding account until you claim it, and the page shows a button for that.
The subaddress is recorded on Solana next to your wallet. That reveals that this wallet receives from Monero, not where the XMR came from.
05 · The wXMR bridge
RingSwap does not run the bridge. It is wxmr.io, an independent Monero to Solana bridge with an open-source frontend. Facts read from chain on 2026-10-08:
| wXMR mint | WXMRyRZhsa19ety5erZhHg4N3xj3EVN92u94422teJp, 12 decimals, no freeze authority |
|---|---|
| Bridge program | EzBkC8P5wxab9kwrtV5hRdynHAfB5w3UPcPXNgMseVA8 (upgradeable) |
| Operator key | Ds4prSZNwyxTz4PZmHXoHDXFzLZ1c8MkfhUwGtqvAvpK: the program's upgrade authority and the relayer that mints, sends and completes |
| Fee | 0.1% on withdrawals, 0% on deposits (the operator can change it) |
| Reserves | The bridge publishes view-key based reserve proofs and on-chain audit records at wxmr.io |
| Volume | About 4,872 XMR deposited and 2,605 XMR withdrawn, all time, per the bridge's config account |
06 · The $RING token built, starts at launch
- Launches on Meteora's Dynamic Bonding Curve, quoted in wXMR, 1,000,000,000 supply, 6 decimals, SPL token, mint and update authority fixed at creation.
- Trading fee 2%, after an anti-snipe fee that starts at 50% and falls to 2% over the first 30 seconds. Fees are taken in wXMR. Meteora keeps 20%; the rest goes to the pool creator, which is the RingSwap engine wallet.
- The curve graduates after about 18.4 XMR has gone in (about 85 XMR market cap) and migrates to a Meteora DAMM v2 pool with the same fee, taken in wXMR. 100% of that liquidity is permanently locked to the engine, which keeps claiming its fees.
- No team allocation and no presale. Any dev buy happens in the creation transaction and is stated at launch.
- Mint: set at launch. Until then, anything claiming to be $RING is not.
07 · Holder rewards built, starts at launch
Everything that arrives in the engine's wXMR account, from fee claims or from RingSwap's swap fee, is new income. The engine books it once: 50% into the holders pot, 50% into the burn reserve.
- Epochs. Every 12 hours, closing at 00:00 and 12:00 UTC. Balances are snapshotted every hour.
- Weight. A wallet's lowest balance across the epoch. Wallets below 100,000 $RING, program-owned accounts (pools, vaults) and the engine are excluded. Shares are exact integer math; rounding dust rolls into the next epoch.
- Payment. Owed amounts are sent as wXMR once they reach 0.001 XMR. A holder who registers a Monero address, by signing a message, is paid in real XMR through the bridge once owed 0.1 XMR. The engine never publishes which wallet an address belongs to, but each Monero payout's bridge transaction names the address, and amounts and timing can be matched.
- Burn. When the burn reserve passes 0.02 XMR, the engine swaps it for $RING and burns the swap's guaranteed minimum in the same transaction.
How the engine keeps the books
The engine's wXMR balance must always equal what it owes holders, plus the current pot, plus the burn reserve, plus anything in an unresolved send. If the balance ever comes up short, every money action stops until it is checked. Each send is booked before it is broadcast, the same signed transaction is re-broadcast until it confirms or provably expires, and a send it cannot prove either way is quarantined, never retried blindly.
08 · Fees
| Fee | Rate | Goes to |
|---|---|---|
| RingSwap exit fee | 0.3% of the swap output, in wXMR | The $RING pot: half holders, half buyback and burn |
| Bridge withdrawal | 0.1% | The wXMR bridge operator |
| $RING trading fee | 2%, in wXMR | 20% Meteora; the rest to the $RING pot |
| Network | Solana fees and Jupiter routing | Validators and liquidity pools |
Holding $RING is not a claim on anything. Rewards exist only when people trade $RING and use RingSwap, and past payouts do not promise future ones.
09 · Privacy, precisely
| Public | Your Solana wallet, what you swapped and how much, the Monero address you exit to, and the bridge's Monero tx hash and tx key. With the tx key anyone can confirm that address received that amount. |
|---|---|
| Private | What happens to the XMR afterwards. Monero hides the sender, receiver and amount of every later transaction. |
| Never shared | Your keys. RingSwap builds transactions; your wallet signs them. RingSwap keeps no accounts. |
Good practice: exit to a fresh subaddress each time, avoid round numbers and instant re-use, and once the XMR lands, send it on to another of your own addresses before using it.
10 · Who you trust
| Party | For what |
|---|---|
| The wXMR bridge | Holding the XMR behind wXMR, sending your XMR after the burn, and not abusing its upgrade key. |
| Jupiter and the pools it routes through | The swap leg, bounded by your slippage limit. |
| RingSwap's website | Building a correct transaction. The page checks it before your wallet signs, and your wallet shows it to you. |
| RingSwap's engine | $RING holders only: holding fees between claim and payout and sending them on schedule. Every step is a public transaction. |
11 · Risks
- Bridge failure, theft or shutdown would leave wXMR unbacked. Exits in flight could be lost.
- The bridge program can be upgraded by its operator at any time.
- Thin wXMR liquidity means price impact on large exits. The quote shows it before you sign.
- A wrong Monero address cannot be recovered. RingSwap validates the checksum and keys, but cannot know whether the address is yours.
- Rules on privacy coins differ by country, and some services refuse funds that touched Monero. You are responsible for what applies to you.
- $RING can lose most or all of its value. The engine is software and can fail; its key is held by the RingSwap operator.
12 · What comes next planned
- More routes into wXMR, and splitting large exits to cut price impact.
- Exits from other chains, arriving on Solana first.
- A second Monero route alongside the wXMR bridge, so no single operator is required.
13 · Addresses
| wXMR | WXMRyRZhsa19ety5erZhHg4N3xj3EVN92u94422teJp |
|---|---|
| Bridge program | EzBkC8P5wxab9kwrtV5hRdynHAfB5w3UPcPXNgMseVA8 |
| Jupiter v6 | JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 |
| $RING | At launch |