
Follow the Bitcoin · reading edition
JavaScript is off. You can still explore every clue here, including in Tor Browser’s Safest mode. The interactive maps and PNG badge export need JavaScript.
Quest 01 · First Clue
1. New client. Same address.
You are a designer. Client A paid you 0.08 BTC. Now you give Client B the same address for a 0.04 BTC payment.
Client B knows: Client B knows this receiving address belongs to the designer and can look at the public blockchain.
What else can Client B discover?
- The balance of the designer’s entire wallet.
- Other payments to this same address.
- Nothing beyond their own payment.
Reveal the clue and switch roles
Both payments are attached to the same address. Client B can see 0.12 BTC received there and connect it to the designer. The blockchain does not tell them who Client A is, or reveal every other address in the designer’s wallet.
Your next move: Use a fresh receiving address for each payment.
Read the source2. Two sources. One payment.
You have a 0.06 BTC coin from an exchange and a separate 0.04 BTC coin from freelance work. You use both to make a 0.02 BTC purchase.
The exchange knows: It knows the customer’s identity and the 0.06 BTC withdrawal. It can follow public transactions, but does not know the freelance client.
What does spending both coins together suggest?
- The exchange can read the customer’s freelance invoice.
- Different receiving addresses keep the sources separate.
- The other coin may belong to the same customer.
Reveal the clue and switch roles
The exchange sees its known withdrawal spent with another coin. In an ordinary payment, that suggests common control. It is an inference, not proof: collaborative transactions such as CoinJoin can have multiple owners.
Your next move: Avoid combining unrelated sources when one coin is enough.
Read the source3. A public trail. More than one story.
Three people create a CoinJoin with three equal outputs. You use one output to pay a merchant. Only one earlier input is already linked to your identity.
The merchant knows: It knows the payment and one identity-labelled earlier input, but not the payer’s identity. It has no other timing, network or account information.
Can it match the spent CoinJoin output to that earlier input?
- Not uniquely from the information shown.
- No, because CoinJoin deleted the transaction history.
- Yes. Each output has a public original-owner label.
Reveal the clue and switch roles
Several ownership assignments fit this simplified transaction. The merchant sees the CoinJoin and the payment, but cannot uniquely match the output to that earlier input from this information alone. This is the privacy benefit: more than one explanation fits.
Your next move: Use CoinJoin to make ownership links harder to infer; preserve that benefit when spending.
Read the sourceQuest 02 · The Locked Fortune
Almost 120,000 BTC was stolen from Bitfinex in 2016. This reconstruction simplifies the investigation into three evidence files. Labels and routes are illustrative; the real case involved years of work and many more transactions.
1. The money moved. What stayed visible?
Start with bitcoin known to have been stolen. Your first evidence file shows a few later transfers. There are arrows and addresses, but no names.
Blockchain: Bitcoin’s public transaction record. Anyone can inspect transfers between addresses; real-world names are not a required part of those records.
What can this payment map tell you?
- The legal name of everyone behind the addresses.
- How bitcoin moved between these addresses.
- Nothing. A new address deletes the earlier trail.
Open the explanation
You have a transaction connection, not an identity. The public ledger records transfers between addresses. It does not print the account holder’s name beside them. This is a useful lead, but it cannot answer every question.
Takeaway: A public payment trail and a person’s identity are different pieces of information.
The affidavit describes selected flows, not a complete public path through every service. Our arrows are a teaching reconstruction. The exchange label is supplied context, not information encoded in Bitcoin.
Inspect the primary source (PDF)2. An address is a clue. A record adds a name.
The investigation reaches an exchange: a service where people buy and sell bitcoin. Open the next file to see evidence the public ledger cannot provide.
Off-chain: Information outside the public Bitcoin transaction record: for example, an exchange account, receipt or email.
Where did this identity clue come from?
- The exchange’s customer records, obtained in the investigation.
- The person’s name was hidden inside the Bitcoin address.
- The payment amount uniquely identifies a person.
Open the explanation
This clue came from a provider’s records, outside Bitcoin. The affidavit describes an exchange account in Ilya Lichtenstein’s name, identity-verification records and separate email evidence. Those sources supported the connection. A name on an account alone does not prove every action by that person.
Takeaway: Services can hold identity records that add context to otherwise nameless transactions.
2022 affidavit, paragraphs 19–20. This is the investigator’s account of the evidence; the later guilty pleas are linked at the end.
Inspect the primary source (PDF)3. You can see the fortune. Can you move it?
Knowing where bitcoin sits is not enough to spend it. Investigators obtained cloud files under a warrant and decrypted an encrypted file. Open the final evidence package.
Private key: Secret data a wallet uses to sign a spend. A public address lets people look up transactions; it does not let them authorize spending.
What supplied the technical ability to move the seized bitcoin?
- A public map of the payments.
- Knowing the account holder’s legal name.
- The recovered private keys for the relevant addresses.
Open the explanation
Private keys let someone authorize spending. The recovered keys enabled investigators to move more than 94,000 BTC in the 2022 seizure. Legal authorization permits a seizure; private keys make the Bitcoin transaction possible. Knowing a balance or a name does not supply a private key.
Takeaway: A wallet backup can hold spending power. Treat private keys and recovery words as sensitive secrets.
The DOJ seizure announcement and affidavit paragraphs 51–52 describe the recovery of keys. We do not simulate decryption or show real keys.
Inspect the primary sourceIn 2023, Ilya Lichtenstein and Heather Morgan pleaded guilty to money laundering conspiracy. In November 2024, Lichtenstein was sentenced to five years. See the DOJ plea announcement and sentencing announcement.
Quest 03 · The Fake Giveaway
On July 15, 2020, compromised Twitter accounts promoted a fake bitcoin giveaway. Compare invented posts and payment records to discover what they reveal. The final receipt exercise is a fictional what-if, not an event claimed to have occurred in the investigation. No real names, addresses or payments are needed.
1. Two famous accounts. One strange promise.
It is July 15, 2020. Familiar accounts are promoting a bitcoin giveaway. You are checking the public posts, without access to anyone’s private messages or account records.
What you know: Two invented posts, from Famous account A and Famous account B, both advertise the same non-payable label: GIVEAWAY ADDRESS. You have no information about who controls either account or the destination.
Bitcoin address: A destination used to receive bitcoin. It is not a person’s name, and one person or service can use many addresses. Our label is a non-payable placeholder.
Both posts name the same destination. What does that establish?
- Both famous people genuinely endorse the giveaway.
- The two public appeals point to the same payment destination.
- The destination reveals the attacker’s legal name.
Reveal the supported conclusion
You can link the appeals by their shared destination. That does not tell you who wrote them or who controls the bitcoin. In the real case, the DOJ described compromised Twitter accounts promoting a fake “double your bitcoin” offer. A familiar account was not proof of a genuine endorsement.
Takeaway: A shared public payment destination links the appeals. It does not authenticate the speaker or identify the recipient.
The July 2020 DOJ announcement describes the hack as alleged in the complaints. These account labels and posts are invented teaching illustrations, not historical screenshots or exact quotations.
Inspect the primary source2. Three transfers arrive. How many people paid?
Now inspect a tiny example of the public payment record. Each row is a transfer to the advertised destination. The record gives you no names and no account ownership records.
What you know: You can see three invented incoming transfers. There is no evidence telling you how many people or services sent them.
Public ledger: Bitcoin’s shared record of transactions. Anyone can inspect it, but it is not a register of people or verified social media accounts.
Do these three incoming transfers prove that three different people paid?
- Yes. Each transfer must be a different person.
- No. The same destination proves only one person paid.
- No. A transfer count is not a count of people.
Reveal the supported conclusion
A person can send more than once, and a service can send on behalf of different customers. These rows show payment events. They do not give you a reliable headcount, legal identities or a complete explanation of why each transfer happened.
Takeaway: Count transactions as transactions. More evidence is needed before turning them into a count of people.
The 2021 investigator affidavit, paragraphs 31–32, reports incoming and outgoing transactions associated with the scam address. Our three rows are invented, not the case’s transaction count or victim count.
Inspect the primary source3. The receipt is yours. Who else can connect it?
Step outside the historical case for a fictional privacy experiment. Imagine you have a receipt referring to one of those transfers. Compare keeping it private with attaching it to a public profile.
What you know: In the private version, the receipt adds no public profile link. In the public version, an observer can read a profile’s post and its attached receipt, including the reference to Transfer 02. They have no other wallet or identity information.
Off-chain clue: Information outside Bitcoin’s transaction record, such as a public post or a receipt. It can add context to a transaction without proving every conclusion about its owner.
Compare the choices: keeping a receipt private adds no public profile link through that receipt. Publishing it beside your public profile gives readers a link to the referenced transaction. The underlying transaction remains public in both versions; neither choice proves ownership of an entire wallet.
What extra connection does the public post reveal?
- A public connection between the profile and the referenced transfer.
- Proof that the profile owner controls every related wallet.
- Nothing. Receipts cannot add information to a public payment trail.
Reveal the supported conclusion
The post supplies context that Bitcoin’s record did not contain: a profile publicly associates itself with a particular transfer. That is a useful link, not proof of legal identity, ownership of every connected address or the truth of every claim in a post. Keeping a receipt private does not erase the public transaction; it avoids adding this public profile link.
Takeaway: Before sharing a payment receipt, check which transaction details it connects to your public profile.
The 2020 investigator affidavit in the Fazeli complaint, paragraphs 50–55, describes a public address, provider records and corroborating evidence. Our receipt comparison is an invented privacy exercise, not an actual exhibit or a claim that investigators used this receipt method.
Inspect the primary sourceJoseph James O’Connor pleaded guilty on May 9, 2023, and was sentenced on June 23, 2023, to five years for multiple cybercrime offenses, including his role in the Twitter hack. The sentence covered more than the giveaway. See the DOJ sentencing announcement.
No account, answers or wallet data are collected. This static edition has no visitor analytics. Cloudflare serves the files and can process connection metadata. Optional community conversations use GitHub; posting there requires a GitHub account. There is no onion address yet.
Read the open-source code on GitHub · Visit the optional community