A native Pi payment carries no observable per-unit mining origin on the Pi Mainnet ledger.
“Exchanges (OKX / Bitget) give deposit addresses that start with M, not G. Therefore you can tell exchange Pi apart from mined Pi.”
Bitget: “Your PI deposit address will appear (usually starting with “M”).” 🔗 https://www.bitget.com/academy/how-to-securely-deposit-pi-coin-to-bitget
Stellar Docs: “Muxed accounts do not exist on the ledger, but their shared underlying
GABC…account does.” → In reality the account is the G address;Mis just a wrapper. 🔗 https://developers.stellar.org/docs/build/guides/transactions/pooled-accounts-muxed-accounts-memos
“There’s no validation on IDs and as far as the Stellar network is concerned, all supported operations operate exactly as if you did not use a muxed account.” → Same native π, same fungibility.
M describes the “counterparty”, not the “coin”. M exists to distinguish users within one pooled account (an exchange’s). → It tells you who (which depositor), not where the coin came from.
Any ordinary user can use an M address — it isn’t exclusive to exchanges. → So “M = exchange” is wrong to begin with.
| Concept | What it gives you |
|---|---|
| Address labeling (a known G/M belongs to an exchange) | ✅ who the counterparty is |
| Coin provenance (a unit’s origin) | ❌ impossible — no such field exists |
Madds information about the address (counterparty), never about the coin’s origin.
payment from a G address. It never sees the history.M vs G = addressing / counterparty identity, not a coin tag. Fungibility holds: a single native asset, with no origin — not on-chain, not in the Pi Wallet SDK, and not in the Platform API.
PaymentDTO): https://github.com/pi-apps/pi-platform-docs/blob/master/platform_API.md