
A note on funding: CypherpunkGuide carries no surveillance advertising — no ad networks, tracking pixels, or sponsored content. It is funded by transparent streams: reader donations now; subscription and editorially-aligned affiliate later. We answer to our readers, not to advertisers.
An exchange balance is not a completed custody handoff. Its status page is a custodian record; separately verify the on-chain output to an address your wallet tracks. A wallet holds keys that authorize transactions, not coins inside a device. With third-party custody, the provider controls key access; with self-custody, you do. This technical distinction does not settle legal ownership, which depends on provider terms and law (SEC Investor Bulletin, 2025).
The dangerous shortcut is to see a number and assume the handoff worked. In our isolated Bitcoin Core v31.1.0 drill, a funded wallet and a watch-only wallet both displayed 0.01000000 BTC. The watch-only copy had private keys disabled, returned complete=false when asked to sign a partially signed Bitcoin transaction, and rejected a direct spend with RPC error -4. A correct balance proved observation, not control.
The useful question is what evidence shows you can receive, sign, and recover without trusting a reassuring screen. This 10-step custody drill builds that evidence. Self-custody does not remove risk; it transfers risk to your keys, devices, backups, judgment, and emergency plan.
First principle: self-custody is a risk transfer#
Self-custody replaces some provider risks with direct operational responsibility. It can reduce dependence on an exchange, but it can also turn one lost secret, damaged backup, or rushed transaction into permanent loss.
The SEC frames both sides: a custodian controls key access and can fail; a self-custody user assumes key security. “Withdraw everything now” is not universal advice. Move only what you can protect and recover.
| Where the balance appears | Who has signing material? | Main risk you retain | What closes the handoff? |
|---|---|---|---|
| Exchange account | Provider or its custodian | Provider failure, account lock, terms, security, and withdrawal access | Receipt of a confirmed withdrawal; the custody handoff closes only after separate Signing and Recovery proofs |
| Self-custody wallet | You, or the signers in your policy | Secret loss, device compromise, bad backup, coercion, and user error | Receipt, Signing, and Recovery proofs |
| Watch-only wallet | Nobody in that wallet | False confidence from a visible balance | A separate signer must complete an authorized spend |
A proof-based custody handoff ends with evidence of receipt, signing authority, and recoverability. It does not make self-custody universally best. If you cannot protect recovery material yet, keep the amount small while learning.
Receipt, Signing, and Recovery are different proofs#
Receipt proves that bitcoin reached the intended wallet, Signing proves that the required key can authorize a transaction, and Recovery proves that an independent restoration can recreate that authority after loss.
The checks fail independently. A confirmed transaction can coexist with a bad backup. A watch-only wallet displays transactions without a private key. A seed can restore a different empty wallet when the passphrase, wallet format, account, address format, or key path differs.
| Proof | Question answered | Strong evidence | What does not prove it |
|---|---|---|---|
| Receipt | Did the intended wallet receive the withdrawal? | Full address match, transaction ID, expected amount, and suitable confirmation status | Exchange status alone; a copied address checked only at its ends |
| Signing | Can the required signer authorize the exact spend? | A small transaction signed after reviewing destination, amount, and fee on a trusted display | A visible balance; a watch-only descriptor; listunspent.spendable=true |
| Recovery | Can the wallet be rebuilt after loss? | An isolated restore that finds the expected funds and signs a small spend | A test withdrawal; an unopened backup; seed words without the full recovery recipe |
A watch-only wallet tracks transactions without signing keys. A PSBT, or partially signed Bitcoin transaction, lets one wallet prepare a transaction and another device sign it. Neither visible balance nor PSBT preparation proves signing authority.
The 10-step custody drill#
Run the drill in order and stop when a result is ambiguous. Do not move the remaining balance until Receipt, Signing, and Recovery each have evidence you can explain without relying on a wallet’s headline number.
Step 1: Preserve the purchase and secure the exchange account#
Preserve the original purchase record, including the date, amount, fiat value, fees, and order ID. Later add the withdrawal record and transaction ID, but never store a seed, private key, PIN, or passphrase with them. Use a unique password or passkey and strong multi-factor authentication while funds remain at the exchange.
Tax rules vary. Preserve the records, then ask your current local tax authority or adviser what fields and events apply; do not import another jurisdiction’s checklist. If you bought privately, also review our guide to buying bitcoin without know-your-customer (KYC) identity checks.
Step 2: Decide how much responsibility to take today#
Choose an amount small enough that a setup error would not be catastrophic. A software wallet favors convenience; a hardware signer can isolate keys and provide an independent display; multi-signature can add resilience and failure modes. None is automatically safe.
List the threats that matter: malware, device loss, fire, physical access, coercion, incapacity, and death. If someone can force an unlock or signature, use the separate custody-under-coercion threat model before acting.
Step 3: Obtain the wallet from a verifiable source#
Use the project’s official site or repository. Verify software releases as its instructions require. Inspect hardware packaging, initialize the device yourself, and never accept prewritten recovery words. Update only through the vendor’s authenticated flow.
Check maintenance status, backup format, address verification, and recovery documentation. The goal is not a brand; it is a workflow you can verify and repeat.
Step 4: Create the wallet and record the full recovery recipe#
Generate recovery material on the intended wallet or signing device, offline when its official procedure requires it. Never photograph it, paste it into cloud notes, send it through chat, or type it into a website. Treat any request for those words as hostile unless you deliberately initiated an official recovery on a trusted device.
Do not write “seed phrase” and stop. BIP39 maps the mnemonic plus the exact passphrase to a seed; every passphrase yields a valid seed, so a typo can open a different wallet. BIP380 warns that key-only backups can omit script type and derivation information. Record the wallet/version, backup standard, account, script (address) type, key-derivation path (how the wallet locates keys), and whether a passphrase is required. A seed alone does not guarantee cross-wallet recovery. An extended public key (xpub) or public descriptor can monitor history but cannot sign, and sharing it leaks financial privacy; a private descriptor is secret.
Step 5: Check the backup before it carries the full balance#
Use the maker’s official backup-check when available. Trezor’s Safe 3 check, for example, compares the entered backup with the device. It shows that the words match that device; it does not prove the passphrase, derivation, or ability to spend after restoration.
Never test a real backup in a website, chat, notes form, or untrusted computer. If no safe check exists, plan an isolated restore on known-compatible hardware. A dry run checks transcription; Step 10 tests the full path.
Step 6: Generate a fresh address and verify every character#
Create a fresh Bitcoin receive address. On a device with an independent display, compare every character there with the wallet app and exchange form, not just the ends. Trezor’s wallet-address explanation documents the full-character check. The display proves what the device generated; it does not prove that you chose the right network or intended recipient.
For this on-chain drill, select native Bitcoin only where both the sender and receiving wallet support the same Bitcoin network. A mismatched network can make funds inaccessible; a deliberately different system such as Lightning needs its own documented receive flow. Address reuse and later consolidation of UTXOs (unspent transaction outputs—the spendable chunks tracked by Bitcoin) can reveal links; see on-chain privacy and Silent Payments.
Step 7: Make a risk-limiting test withdrawal#
Withdraw an amount above the exchange minimum and large enough to remain useful after present and future fees. Recheck the full address at final confirmation. Record the withdrawal ID, fee, amount, and transaction ID privately.
This limits loss from an address, network, or workflow mistake only on this receipt path. Fees may make repetition impractical. Success proves neither Signing nor Recovery.
Step 8: Establish Receipt proof#
Wait for a confirmation level appropriate to the amount and risk. Match the transaction ID, destination, and amount after the withdrawal fee. Confirmation shows that the transaction entered the blockchain; it does not show that your backup can recreate the signer.
Your own node reveals less query metadata than a public explorer. An explorer may learn the address and your network metadata. Do not share screenshots with balances, labels, addresses, or transaction IDs.
Step 9: Establish Signing proof with a small spend#
Prepare a separate small transaction to a fresh address you control. If the signer has an independent display, inspect the full destination, amount, and fee there; otherwise recognize that destination verification shares the host’s compromise risk. Sign, broadcast, and confirm it. Account for the change output—the remainder returned to your wallet—and the privacy effect of combining UTXOs.
Our watch-only wallet prepared a PSBT but returned complete=false; a direct spend failed with -4. Observation can prepare a request, while the private key authorizes it. This round trip proves current Signing, not Recovery after loss.
Step 10: Establish Recovery proof, then close the operating plan#
Restore independently in an isolated, known-compatible environment. Confirm the expected address or descriptor, funded UTXO, and a small signed transaction after checking every output. Do this before a device fails. Use a trusted spare device or an offline environment. After recording the non-secret result, reset any temporary restore target using its documented procedure; never destroy your only valid backup.
We backed up the receiver before funding it. The restored copy found 0.01000000 BTC, signed 0.00200000 BTC, and reached 1 confirmation. The backup therefore regenerated the tested keys and signing authority.
Document an update cadence, two failure-independent backup locations, and an emergency plan. Keep discovery instructions separate from signing secrets. After material wallet or passphrase changes, rehearse again. For the remaining balance, use a fresh address and repeat the full check; do not reuse one solely because its test succeeded.
What our isolated Bitcoin Core 31.1 drill found#
Our 202.22-second regtest—Bitcoin Core’s private regression-test network—separated balance visibility from signing and recovery. It used no real bitcoin, disabled P2P networking, and ended with networkactive=false and 0 connections.
We matched Bitcoin Core v31.1.0 to SHA256 b80d9c3e04da78fb6f0569685673418cf686fadba9042d926d13fb87ff503f9e and Michael Ford’s signature (E777299FC265DD04793070EB944D35F9AC3DB76A). The results and script omit keys, addresses, transactions, backups, credentials, and host identifiers. The script combines the custody logic into one fresh run; the JSON records the separately verified release and the two observed stages that produced these measurements. The script expects already-verified binaries and does not repeat the archive checksum or signature check.
| Lab observation | Measured result | Safe conclusion |
|---|---|---|
| Receipt wallet balance | 0.01000000 BTC | The funded wallet observed the confirmed output |
| Watch-only balance | 0.01000000 BTC | The same balance can be visible without private keys |
| Signing checks | private_keys_enabled=false; PSBT complete=false; direct spend -4 | Balance visibility is not signing authority |
listunspent.spendable | true | Not proof: Core 31.1 documents this deprecated field as always true |
| Pre-receive backup restore | 0.01000000 BTC restored; 0.00200000 BTC spent; 1 confirmation | The tested backup recovered the keys needed to sign |
This logical regtest is not a mainnet benchmark; 1 confirmation is only its completion condition. Bitcoin Core 31.1 local help labels listunspent.spendable “(DEPRECATED) Always true,” so it is not a signing gate. Our asset establishes the v31.1 behavior; archived Core 30 references define private_keys_enabled and watch-only balance buckets, while issue #21104 records the visibility counterexample. The article therefore uses an actual signed spend—not a field name—as the Signing proof.
Bottom line: finish the handoff before moving the balance#
Secure the exchange record, choose a manageable custody scope, and send a test amount to an address checked in full. Then prove Receipt, Signing, and Recovery separately.
If a proof fails, stop. A confirmed withdrawal proves receipt, not recovery. A seed is incomplete without the right format, settings, and passphrase. Move the balance only after the new responsibilities are tested.
Frequently asked questions#
The short answers preserve the same boundary: self-custody changes who bears risk, a test withdrawal proves only receipt, and recovery requires the complete wallet-specific recipe.
Should I withdraw bitcoin from an exchange immediately?#
Not automatically. Exchange custody carries provider and account risk; rushed self-custody carries key and backup risk. Secure the account and begin with a test amount. Increase it only after Receipt, Signing, and Recovery pass.
Do I need a hardware wallet?#
Not for every amount. A maintained software wallet may suit a small spending balance. A hardware signer reduces some online attack paths and adds an independent display, but it cannot repair a bad backup, prevent coercion, or inspect for you.
Does a successful test withdrawal prove self-custody?#
It proves Receipt when the full address, transaction, amount, and confirmation match. A watch-only wallet can show that balance without Signing, and an incomplete or incompatible backup can still fail Recovery. Run all three gates.
Can any wallet recover my bitcoin from the seed phrase?#
No. Recovery depends on the standard, exact passphrase, derivation, account, script type, and implementation. Follow documented compatibility or the original wallet’s official process. Never enter real seed words into a website.
What tax records should I keep after buying bitcoin?#
Preserve the purchase and withdrawal records, then follow the current requirements of your local tax authority or adviser. Do not treat a US or online checklist as universal. This article gives no tax classification or personal tax advice.
Primary sources and archives#
These primary or official sources support the safety-critical claims. Every original/archive pair below has an exact timestamp and a replay-checked identity match.


