🌉Bridge POT ↔ Solana

A complete walkthrough for both directions: Solana SPL POT → mainchain POT (for self-custody) and mainchain POT → Solana SPL POT (for trading). Routing is on-chain, 1:1, with a flat bridge fee of $3 USD or 0.25% of the amount — whichever is greater. The bridge is live and tested bidirectionally.

Why bridge?

PotCoin lives on two chains at once:

The bridge lets you move 1:1 between the two whenever you want. Buy on Solana for liquidity → bridge in to stake on the mainchain → bridge out when you want to trade again.

How the bridge works (architecture)

┌──────────────────┐                                  ┌──────────────────┐
│   Solana          │                                  │     PotCoin       │
│                   │  ◄── on-chain routing data ──►  │   mainchain      │
│  SPL POT          │  Memo (Sol→POT)                  │  OP_RETURN       │
│  Bridge Escrow    │  OP_RETURN (POT→Sol)             │  Bridge Escrow   │
└──────────────────┘                                  └──────────────────┘
        ↑                                                       ↑
        └──────────────  Bridge daemon watches  ────────────────┘
                         both chains, releases the
                         counterpart 1:1 atomically

Key property: the bridge daemon does not hold custody in a 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.potcoin.com ↗
Bridge fee$3 USD or 0.25% of amount, whichever is greater (plus network fees)
Sol → POT time~3–5 minutes (30 Solana confirmations)
POT → Sol time~45 minutes (10 mainchain confirmations)
SPL POT mintPotzPaFGzK3cbu1u3g5HtoZbyTUkyhka8T2aBy8LMEq
SPL POT decimals8 (matches mainchain)
SPL Memo programMemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr
Mainchain Memo formatRaw OP_RETURN bytes containing the Solana base58 address
Min bridge amount1 POT
Mainchain min fee0.420 POT

Direction 1 · Solana SPL POT → Mainchain POT

Use this when: you bought POT on a Solana DEX and want to move it to the native PoS chain for staking or cold storage.

You'll need

Step-by-step (using bridge.potcoin.com)

  1. Get your mainchain receiving address

    Open PotCoin Core or the web wallet and copy a fresh receive address (starts with P). For privacy, use a fresh address per bridge operation — the deposit will be publicly tagged on chain.

  2. Open bridge.potcoin.com

    Make sure the active tab is Solana → PotCoin (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 POT 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 PotCoin 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 POT 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> POT

    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. PNCfNkGJuku1DLtVHeimVVLCtfk2YWKq8c)

    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 picks the best-fit UTXO from the mainchain escrow tier list:

    TierUTXO SizeBest for orders ≥
    Whale10,000,000 POT5M+
    Large5,000,0002M+
    Medium1,000,000500k+
    Standard500,000100k+
    Small100,00020k+
    Micro10,0002k+
    Dust1,000any

    The escrow sends the equivalent native POT to your address; change goes to a fresh escrow address.

  9. Confirm receipt on the explorer

    Open explorer.potcoin.com 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 POT → Solana SPL POT

Use this when: you're holding native POT 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 the token account capable address (not a different chain). Solana addresses are base58, 32–44 chars. Open Phantom → click Receive → copy the address shown there.

  2. Run bridgetosol from the CLI

    $ potcoind bridgetosol 1000 "7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU"
    {
      "txid": "f1fcc779...",
      "amount": 1000.00000000,
      "escrow_address": "PFqkH1fjMvYLLvNhce1BzRCgEQnjc8Lfxx",
      "solana_address": "7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU"
    }

    This builds a single transaction with three outputs (see below) and broadcasts it.

  3. Inspect what just happened on chain

    # Decoded output structure:
    Output 0: 1000.00000000 POT → [escrow address]   (the deposit)
    Output 1:   89.58000000 POT → [your change addr]  (remainder)
    Output 2:    0.00000000 POT → 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.potcoin.com 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 POT 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:

$ potcoind bridgestatus
{
  "escrow_address": "PFqkH1fjMvYLLvNhce1BzRCgEQnjc8Lfxx",
  "escrow_balance": 125000000.00000000,
  "min_bridge_amount": 1,
  "last_bridge_tx": "f1fcc779..."
}

Useful for confirming the escrow balance is healthy before you queue a large bridge out.

Alternative: bridge out via the web wallet

The PotCoin web wallet has the bridge built into a tab — connect Phantom inside the wallet, set amount, click Bridge POT → Solana. The wallet builds and broadcasts the same OP_RETURN transaction for you under the hood.


Troubleshooting

"My Sol → POT bridge sat there forever"

"My POT → 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.

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