Why bridge?
MotaCoin lives on two chains at once:
- Solana SPL MOTA — instant DEX liquidity (Raydium, Jupiter), Phantom/Solflare/Backpack wallet support, ~3-second finality, low fees. The 125M supply here is the anchor — mint authority has been permanently revoked, verifiable on-chain.
- Mainchain MOTA — the native PoS chain, 4.20% APR staking, 4:20 block times, no centralized exchange dependency. Address prefix
M.
The bridge lets you move 1:1 between the two whenever you want. Buy cheap on Solana → bridge in to earn 4.20% APR on mainchain → bridge out when you want to sell on a DEX again.
How the inverted-escrow bridge works
┌──────────────────┐ ┌──────────────────┐
│ Solana │ │ MotaCoin │
│ │ ◄── on-chain routing data ──► │ mainchain │
│ SPL MOTA │ Memo (SOL→MOTA) │ OP_RETURN │
│ Bridge Escrow │ OP_RETURN (MOTA→SOL) │ Bridge Escrow │
│ (holds SPL) │ │ (holds mainchain│
│ │ │ native coins) │
└──────────────────┘ └──────────────────┘
↑ ↑
└────────────── Bridge daemon watches ────────────────┘
both chains, releases the
counterpart 1:1 atomically
Inverted vs. standard: most bridges treat the native chain as the source of truth and issue SPL wrappers. MotaCoin does the opposite — the SPL mint on Solana is the source of truth (revoked, 125M cap), and mainchain circulation is bounded by whatever the Solana escrow has released. This makes the Solana-side supply a permanent, cryptographically-verifiable cap on total MOTA in existence.
Trustlessness by visibility: the bridge daemon does not hold custody in a private database. Every routing instruction is permanently recorded in the public chain — Memo on Solana, OP_RETURN on mainchain. Anyone can audit every operation by reading public data.
| Field | Value |
|---|---|
| Bridge URL | bridge.motacoin.net ↗ |
| Bridge fee | $3 USD or 0.25% of amount, whichever is greater (plus network fees) |
| SOL → MOTA time | ~3–5 minutes (30 Solana confirmations) |
| MOTA → SOL time | ~45 minutes (10 mainchain confirmations) |
| SPL MOTA mint | Motafkn56HH6fwtYGJk4Lz7pRSpVB1ESScTCyj4eEL1 |
| SPL MOTA decimals | 8 (matches mainchain) |
| SPL mint authority | null (permanently revoked) |
| Fixed SPL supply | 125,000,000 MOTA |
| SPL Memo program | MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr |
| Mainchain Memo format | Raw OP_RETURN bytes containing the Solana base58 address |
| Min bridge amount | 1 MOTA |
| Mainchain min fee | 0.0001 MOTA |
Direction 1 · Solana SPL MOTA → Mainchain MOTA
Use this when: you bought MOTA on a Solana DEX and want to move it to the native PoS chain for staking or long-term cold storage.
You'll need
- A Solana wallet with SPL MOTA — Phantom, Solflare, or Backpack
- A small amount of SOL for the network fee (~0.000005 SOL)
- Your MotaCoin mainchain address (starts with
M)
Step-by-step (using bridge.motacoin.net)
-
Get your mainchain receiving address
Open MotaCoin Core and copy a fresh receive address (starts with
M). For privacy, use a fresh address per bridge operation — the deposit will be publicly tagged on-chain.$ motacoin-cli getnewaddress "MNCfNkGJuku1DLtVHeimVVLCtfk2YWKq8c" -
Open bridge.motacoin.net
Make sure the active tab is
Solana → MotaCoin(the default). -
Click
Connect WalletA modal opens with three options:
Phantom,Solflare,Backpack. Each showsDetectedorNot installed. Click your wallet and approve the connect prompt in the wallet popup. -
Enter the amount
Type into the
You Sendfield — or clickMAXto bridge your entire SPL MOTA balance. TheYou Receivepanel shows the amount after the bridge fee ($3 USD or 0.25%, whichever is greater). -
Paste your mainchain address into
MotaCoin Receiving AddressThe page validates the address as you type (debounced 500ms). When valid, an inline badge shows
Valid; if not,Invalid.Triple-check this address If you typo it, the bridge will release MOTA to whatever address it parses out of your Memo — irreversibly. Paste, don't type. Better: scan the QR from your wallet. -
Click
Bridge <amount> MOTAThe button label updates with your amount. Your wallet pops up to sign a transaction with two instructions:
- An SPL Token Transfer of
amount × 10⁸raw units from your ATA to the bridge escrow ATA - A Memo Program instruction containing your mainchain address as raw UTF-8 bytes (e.g.
MNCfNkGJuku1DLtVHeimVVLCtfk2YWKq8c)
Approve in the wallet. The signed tx broadcasts via
api.mainnet-beta.solana.com. - An SPL Token Transfer of
-
Wait for Solana confirmation (~3–10 seconds initial, 30 confirmations for release)
A toast appears: "Transaction sent! Signature: …" and then "Transaction confirmed on Solana. Bridge is processing…". The transaction joins the
Recent Transactionspanel with status badges that progress:detected → confirming → completed. -
Bridge daemon picks up the deposit
The daemon polls Solana for new SPL transfers to the escrow ATA. When it sees yours with 30 confirmations and a valid Memo, it releases the equivalent native MOTA from the mainchain escrow to your address. Because MOTA uses inverted escrow, the mainchain amount is created by releasing from an escrow-held UTXO pool — not minted ex nihilo.
-
Confirm receipt on the explorer
Open explorer.motacoin.net and look up your address — the deposit should appear within a couple of mainchain blocks (block time is 4m 20s). Or in your wallet's transaction list.
Direction 2 · Mainchain MOTA → Solana SPL MOTA
Use this when: you're holding native MOTA and want to trade on a Solana DEX, swap into stables, or send to anyone with a Phantom wallet.
You'll need
- MotaCoin Core daemon running locally (or use the web bridge if you don't want to run a full node)
- The Solana address you want the SPL MOTA delivered to
- ~0.0001 MOTA for the mainchain network fee
Step-by-step (CLI, the canonical method)
-
Validate your Solana destination address
Make sure it's a standard Solana base58 address (32–44 chars). Open Phantom → click
Receive→ copy the address shown there.About ATAs You don't need to manually create an Associated Token Account (ATA) for MOTA on your Solana wallet — the bridge will auto-create it if missing during the SPL release. Your wallet address alone is enough. -
Run
bridgetosolfrom the CLI$ motacoin-cli bridgetosol 1000 "7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU" { "txid": "a4c8b721...", "amount": 1000.00000000, "escrow_address": "MFqkH1fjMvYLLvNhce1BzRCgEQnjc8Lfxx", "solana_address": "7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU" }This builds a single mainchain transaction with three outputs (see below) and broadcasts it.
-
Inspect what just happened on chain
# Decoded output structure: Output 0: 1000.00000000 MOTA → [escrow address] (the deposit) Output 1: 89.58000000 MOTA → [your change addr] (remainder + fee change) Output 2: 0.00000000 MOTA → OP_RETURN "7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU"The Solana destination is encoded as raw ASCII bytes inside the OP_RETURN — no JSON, no prefix, just the 44-char address. Anyone reading the chain can decode this and verify the bridge will release the right amount to the right Solana address.
-
Wait for 10 mainchain confirmations (~45 minutes at 4m 20s block time)
You can watch the confirmations climb on explorer.motacoin.net at
/tx/<txid>. -
Bridge daemon releases the SPL tokens
Once 10 confirms are reached, the bridge:
- Reads the OP_RETURN to extract your Solana destination
- Calls SPL Token Transfer from the bridge escrow ATA → your destination ATA
- Auto-creates the destination ATA if it doesn't exist (uses Associated Token Account program)
-
Confirm receipt in Phantom
Open Phantom → switch to the MOTA token → the balance should reflect the bridged amount within seconds of the Solana TX. Solscan link:
https://solscan.io/account/<your-solana-addr>
Quick chain-side status check
You can query the bridge status directly from your local daemon:
$ motacoin-cli bridgestatus
{
"escrow_address": "MFqkH1fjMvYLLvNhce1BzRCgEQnjc8Lfxx",
"escrow_balance": 87432118.00000000,
"spl_escrow_ata": "77uVYUxp8pFFSP81VjPWUbzoANPzxNnT54jYj6h37yE9",
"spl_escrow_balance": 37567882.00000000,
"total_supply_sanity": 125000000.00000000,
"min_bridge_amount": 1,
"last_bridge_tx": "a4c8b721..."
}
Useful for confirming the escrow balance is healthy before you queue a large bridge-out. Note that escrow_balance + spl_escrow_balance (circulating mainchain + SPL held by escrow) always equals the fixed 125M supply — that's the inverted-escrow invariant.
Troubleshooting
"My SOL → MOTA bridge sat there forever"
- Check the Memo. If it's missing or doesn't decode to a valid M-prefix address, the bridge can't route. Funds are held until ops resolves it manually — open an issue or contact bridge ops with your Solana TX hash.
- Confirm the SPL transfer actually went to the bridge escrow ATA, not a typo'd address.
- Bridge needs 30 Solana confirmations (~3–5 min). Be patient.
"My MOTA → SOL bridge sat there forever"
- Did you send to the configured
bridgeescrowaddress from yourmotacoin.conf?bridgetosolreads it from there. - Did the OP_RETURN make it into the broadcast TX? Inspect with
motacoin-cli getrawtransaction <txid> 1— vout[2] should haveOP_RETURN+ your Solana address as ASCII hex. - Did 10 confirmations actually reach? Check the explorer.
"The web bridge says Offline"
Means the bridge backend's /api/status isn't responding. The site uses a heartbeat poll every 30 seconds. If it's red, the bridge daemon may be restarting. Wait a few minutes and refresh, or use the CLI direct from your daemon.
"I bridged the wrong amount"
Bridge actions are irreversible. You'd need to bridge the difference back the other direction, paying network fees both ways. Always start with a tiny test amount when bridging for the first time from a new address.
Verifying the SPL mint is really revoked
Anyone can verify with one RPC call — either paste the mint into Solscan at https://solscan.io/token/Motafkn56HH6fwtYGJk4Lz7pRSpVB1ESScTCyj4eEL1, or run:
$ curl -sS -X POST -H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"getAccountInfo","params":["Motafkn56HH6fwtYGJk4Lz7pRSpVB1ESScTCyj4eEL1",{"encoding":"jsonParsed"}]}' \
https://api.mainnet-beta.solana.com | jq '.result.value.data.parsed.info.mintAuthority'
null
mintAuthority: null — the authority has been revoked. No one, including the project, can ever mint another SPL MOTA.
# motacoin.conf
bridgeescrow=MFqkH1fjMvYLLvNhce1BzRCgEQnjc8Lfxx
bridgeminamount=1