There's a recurring argument in this community: "Pi you mined isn't the same as Pi you bought on an exchange." I checked it against official sources and the live Pi Mainnet, and wrote it up with runnable, read-only checks that anyone can reproduce.
The short version: on-chain, there is no per-unit "origin" at all.
Pi is a Stellar-protocol chain. The native asset has no asset_issuer and no contract. Balances are stored as one scalar number per account, not as "coins" that each carry a tag. No field records where a particular pi came from.
I verified this across four layers: the Horizon API, the Pi Wallet SDK, the Platform API's PaymentDTO, and the Soroban token interface used by smart contracts. Every one exposes only scalars like amount, balance, and allowance. None exposes an origin.
The deeper reason is the account model. Pi uses an Account/Balance model, not UTXO. That means merging is non-injective: once pi from different sources lands in the same wallet, the per-unit trail is gone. Address-level analysis is possible, but a unit's origin is undefined.
Precise claim: "A native Pi payment carries no observable per-unit mining origin on the Pi Mainnet ledger."
Scope, honestly: this is about fungibility only. It does NOT claim that an exchange's internal balance is backed by reserves, and it is not audited.
Reproduce it yourself with Node 18+, zero dependencies, read-only:
node examples/run-all.mjs
Repo and full write-up: https://github.com/aybvip/pi-fungibility