🌉Bridge MOTA ↔ Solana

A complete walkthrough for both directions: Solana SPL MOTA → mainchain MOTA (to stake) and mainchain MOTA → Solana SPL MOTA (to trade). Routing is on-chain, 1:1, with a flat bridge fee of $3 USD or 0.25% of the amount — whichever is greater. MotaCoin uses an inverted-escrow model: the 125M fixed supply lives on Solana (mint revoked), and the bridge releases the matching amount on mainchain.

Why bridge?

MotaCoin lives on two chains at once:

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.

FieldValue
Bridge URLbridge.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 mintMotafkn56HH6fwtYGJk4Lz7pRSpVB1ESScTCyj4eEL1
SPL MOTA decimals8 (matches mainchain)
SPL mint authoritynull (permanently revoked)
Fixed SPL supply125,000,000 MOTA
SPL Memo programMemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr
Mainchain Memo formatRaw OP_RETURN bytes containing the Solana base58 address
Min bridge amount1 MOTA
Mainchain min fee0.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

Step-by-step (using bridge.motacoin.net)

  1. 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"
  2. Open bridge.motacoin.net

    Make sure the active tab is Solana → MotaCoin (the default).

  3. Click Connect Wallet

    A modal opens with three options: Phantom, Solflare, Backpack. Each shows Detected or Not installed. Click your wallet and approve the connect prompt in the wallet popup.

  4. Enter the amount

    Type into the You Send field — or click MAX to bridge your entire SPL MOTA balance. The You Receive panel shows the amount after the bridge fee ($3 USD or 0.25%, whichever is greater).

  5. Paste your mainchain address into MotaCoin Receiving Address

    The 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.
  6. Click Bridge <amount> MOTA

    The button label updates with your amount. Your wallet pops up to sign a transaction with two instructions:

    1. An SPL Token Transfer of amount × 10⁸ raw units from your ATA to the bridge escrow ATA
    2. 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.

  7. 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 Transactions panel with status badges that progress: detected → confirming → completed.

  8. 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.

  9. 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

Step-by-step (CLI, the canonical method)

  1. 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.
  2. Run bridgetosol from 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.

  3. 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.

  4. 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>.

  5. Bridge daemon releases the SPL tokens

    Once 10 confirms are reached, the bridge:

    1. Reads the OP_RETURN to extract your Solana destination
    2. Calls SPL Token Transfer from the bridge escrow ATA → your destination ATA
    3. Auto-creates the destination ATA if it doesn't exist (uses Associated Token Account program)
  6. 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"

"My MOTA → SOL bridge sat there forever"

"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.

Configuration (for self-hosted node operators)
# motacoin.conf
bridgeescrow=MFqkH1fjMvYLLvNhce1BzRCgEQnjc8Lfxx
bridgeminamount=1