Bitcoin’s blockchain is public.
That sentence has created an entire industry.
Every transaction can be observed. Every input can be inspected. Every output can be followed. And over the years, blockchain-analysis companies have built increasingly sophisticated systems designed to transform that public graph into something much more valuable :
Identities, clusters, balances, relationships and financial histories.
But there is a detail people often miss.
Bitcoin does not actually publish most of those conclusions. The blockchain publishes transactions. The rest is inference. And inference depends on assumptions.
One of the most important of those assumptions has survived for almost as long as Bitcoin itself :
If several inputs appear in the same transaction, they probably belong to the same person.
That assumption is so useful that enormous parts of blockchain surveillance have been built on top of it.
Now Bitcoin developers are quietly attacking it.
Payjoin Dev Kit — better known as rust-payjoin — has reached version 1.0.0, its first stable release.
The release supports both traditional synchronous Payjoin through BIP78 and the newer asynchronous Payjoin architecture defined in BIP77, including persistent sessions that can disconnect and resume later.
That sounds like developer plumbing. It isn’t.
Because Payjoin does something conceptually simple but potentially devastating to naïve blockchain surveillance.
It takes one of the most common assumptions used to interpret Bitcoin transactions…
…and deliberately makes it false.
Bitcoin Doesn’t Tell You Who Owns an Input
Look at a conventional Bitcoin transaction.
Alice wants to pay Bob.
Alice selects two UTXOs from her wallet.
She spends both as transaction inputs.
One output goes to Bob.
Another output comes back to Alice as change.
An observer sees something like :
Input A.
Input B.
Output C.
Output D.
No labels are saying :
Alice’s first coin.
Alice’s second coin.
Bob’s payment.
Alice’s change.
Those labels don’t exist on-chain. The analyst has to reconstruct them. So blockchain surveillance uses heuristics.
One of the strongest is known as the common input ownership heuristic.
If Input A and Input B are being spent together, the analyst assumes whoever created the transaction must control both private keys.
Therefore, Input A and Input B probably belong to the same wallet or entity.
Cluster them together.
Do that repeatedly across thousands of transactions and the surveillance system begins building enormous webs of supposedly related addresses.
Combine those clusters with exchange KYC data, merchant information, subpoenas, network metadata, and known addresses…
…and Bitcoin’s pseudonymous graph starts looking much less pseudonymous.
This assumption has been extraordinarily useful.
It is also not a consensus rule. Bitcoin never said all transaction inputs must have the same owner. Users simply tended to construct transactions that way.
To conclude, Payjoin exploits that difference.