Appendix: Custom Protocol Template¶
This is a customizable template for creating your own multisig Bitcoin self-custody protocol. It assumes a generic multisig setup (e.g., 2-of-3) with airgapped Signing-Devices, a full node for verification, metal seed backups, and quarantine rules to prevent contamination between online and offline environments.
Setup¶
This section covers the initial configuration of your multisig wallet and keys. Perform these steps in a secure, private environment. Ensure all devices are airgapped where required, and use quarantine procedures to avoid cross- contamination.
1. Prepare Devices
- Set up an Airgapped-Computer for offline operations.
- Set up a Transaction-Manager, using Tails OS with persistent storage, connected to your full node.
- Review and prepare for the quarantine rules in Level 5.
- Verify all software and firmware: Download from official sources, check signatures, and ensure they are up-to-date.
- Prepare metal backup tools for seed phrases.
- optional install Sparrow on the Transaction-Manager via Tails OS with persistent storage
2. Generate Seeds
- Power on each airgapped Signing-Device (e.g., one per key in your multisig setup).
- Generate a new seed phrase on each Signing-Device (e.g., using dice rolls to ensure entropy).
- Write down the seed phrase temporarily on paper for verification.
- Confirm the seed phrase on the device to ensure accuracy.
- Repeat for each required key in your multisig configuration (e.g., 3 devices for a 2-of-3 setup).
3. Backup to Metal
- Stamp each seed phrase onto durable metal backups.
- Verify the metal seed by comparing it to the temporary paper note.
- Destroy the temporary paper note (e.g., burn it).
- Store each metal backup in a separate, secure location.
- Use tamper-evident seals on storage containers.
4. Export ZPUBs to Transaction-Manager
- On each Signing-Device, export the extended public key (ZPUB for multisig).
- Transfer the ZPUB data to your Transaction-Manager via quarantine procedure.
- Import the ZPUB into your Transaction-Manager (Tails OS).
- Verify the wallet descriptor matches your intended configuration.
5. Validate Addresses for Future Deposits
- Generate several receive addresses in Electrum or Sparrow on Tails OS.
- Transfer the addresses to airgapped Signing-Devices via QR or USB for verification.
- On each Signing-Device, confirm the addresses derive from the correct ZPUB.
- Note any derivation paths or address types (e.g., P2WSH for multisig).
- Store validated addresses in a secure, offline list for reference.
6. Test Setup with Small Transaction
- Deposit a small amount of Bitcoin to a test address following the Deposit section below.
- Monitor confirmation on your full node.
- Attempt a small withdrawal following the Withdrawal section below.
- Verify the entire process works end-to-end.
- Document any issues and adjust the protocol as needed.
Deposit¶
This section is for receiving Bitcoin securely. Always generate new addresses to avoid reuse, and verify everything through your full node. Customize with specific sender instructions if needed.
1. Generate Address
- Open Sparrow on the Transaction-Manager.
- Generate a new receive address from the multisig descriptor.
- Label the address for tracking (e.g., "Deposit from Exchange - Date").
- Copy the address or create a QR code for easy sharing.
2. Verify Address
This step is optional, especially if you have already verified the address in the setup above -- if you're unsure, it's best to verify addresses before use.
- Transfer the address (e.g., via QR code via quarantine procedure) to each Signing-Device.
- On each device, confirm the address matches the expected derivation from your ZPUB.
- Ensure all required devices agree on the address validity.
3. Share Address with Sender
- Provide the verified address to the sender via secure channel (e.g., encrypted message) in order to avoid public exposure of the address.
- Instruct the sender to double-check the address before sending.
- Note the expected amount and sender for reference.
- Wait for the transaction to appear.
4. Monitor Incoming Transaction
- Use your full node or Sparrow on Tails OS to scan for the transaction.
- Check transaction details: Amount, fees, and inputs.
- Wait for initial confirmation (e.g., 1 block).
- Monitor for RBF (Replace-By-Fee) flags if applicable.
5. Confirm
- Wait for sufficient confirmations (e.g., 6 blocks for standard security).
- Verify the transaction on your full node to ensure it's in a valid block on-chain.
- Verify balance following the Check Balance section below.
Withdrawal¶
This section details spending Bitcoin via multisig signing. Use this for transfers or spends, ensuring all steps are followed to avoid errors. Customize with specific recipient details.
1. Create Unsigned Transaction
- Open Sparrow on the Transaction-Manager.
- Select UTXOs to spend and specify recipient address(es) and amounts.
- Set appropriate fees based on mempool conditions (use your full node for estimates).
- Generate the unsigned transaction (e.g., PSBT).
- Save the unsigned transaction to a sanitized USB or export as QR.
2. Transfer Unsigned Transaction to Signing-Device
- Follow all Quarantine Rules
- Power on Signing-Devices (and Airgap-Conputer if applicable).
- Copy the unsigned transaction from the Transaction-Manager to each Signing-Device via quarantine procedure.
- Inspect transaction details on the device screen (e.g., outputs, fees).
3. Sign Transaction
- On the first Signing-Device, review the transaction details. Abort if there's any problem or concern.
- Access the seed and sign the transaction, generating a partial signature.
- Export the partially signed transaction (e.g., to USB or QR).
- Repeat for each required key/device in your multisig.
4. Finalize Transaction
- Transfer all partial signatures back to the Transaction-Manager via quarantine.
- In Sparrow on Tails OS, combine the signatures into a fully signed transaction.
- Verify the final transaction is complete and valid.
- Check for any errors in signature combination.
- Save the signed transaction.
5. Broadcast Transaction
Check Balance¶
This section explains how to view balances without exposing keys. Always use your own full node for primary verification; external sources are optional and for cross-checking only. Never expose your ZPUB publicly.
1. Sync Full Node
- Open Sparrow on the Transaction-Manager.
- Ensure it's connected to your full node.
- Verify latest block hashes with public block explorers.
2. Query Balance
- View the total balance in Sparrow on Tails OS (Transaction-Manager).
- List recent transactions for context.
- Calculate available spendable amount (accounting for fees).
3. Optional: Verify A Separate Full Node
- If using a secondary full node, query the same addresses there.
- Compare balances and UTXOs for consistency.
- Investigate any discrepancies immediately.
Recovery¶
This section covers restoring from backups or handling lost keys. Use this in case of device failure, loss, or other issues. Test this process periodically. Customize with specific backup locations (e.g., "Contact Aunt Jane for Key 3").
1. Identify the Issue
- Determine what needs recovery (e.g., lost key, damaged device, etc).
- Gather all available metal backups and protocol documents.
- Assess if the multisig threshold can still be met (e.g., 2-of-3 with one lost).
- If threshold can't be met, proceed to full seed recovery.
- Document the recovery attempt.
2. Retrieve Metal Backups
- Access your metal backups.
- Check tamper-evident seals for integrity.
- Transcribe seeds from metal to temporary paper if needed.
- Verify transcription accuracy.
- Handle backups in a private, secure environment.
3. Restore Keys on New Signing-Devices
- Acquire new airgapped Signing-Devices (e.g., same model as original).
- Enter the seed phrase from backup on each device.
- Verify the restored wallet matches the original (e.g., check ZPUB).
- Regenerate any necessary data (e.g., export new ZPUBs if paths differ).
- Destroy temporary paper notes securely.
4. Rebuild Multisig Wallet
- Export XPUBs/ZPUBs from restored devices to the Transaction-Manager via quarantine.
- In Sparrow on Tails OS, recreate the multisig descriptor.
- Verify it matches the original descriptor.
- Rescan the blockchain on your full node.
- Confirm all UTXOs are detected.
Test Recovery with Small Amount
- Deposit a small test amount if possible.
- Follow the Withdrawal section to spend it.
- Ensure the recovered setup works fully.
- Update protocol documents with any changes.
- Store new backups if devices were replaced.
Maintenance¶
This section outlines ongoing tasks to keep your protocol secure. Perform these periodically (e.g., quarterly) to prevent issues. Customize schedules or tasks as needed.
1. Verify Metal Backups
- Access backups in rotation (e.g., one per session).
- Check for damage or corrosion.
- Transcribe and verify a seed on a test device.
- Reseal and return to storage.
- Update locations if needed.
2. Update Software and Firmware
- Check for updates on official sites.
- Verify signatures before installing.
- Update Sparrow on Tails OS and full node first.
- For Signing-Devices, update firmware airgapped if possible.
- Test compatibility post-update.
3. Run and verify Full Node
- Verify node synchronization with the blockchain.
- Check disk space, uptime, and connections.
- Prune if needed, but retain necessary data.
- Backup node configuration.
- Restart and monitor for errors.
Simulate Full Protocol Run
- Perform a test deposit and withdrawal with minimal funds.
- Include recovery simulation (without actual loss).
- Time the process and note improvements.
- Involve heirs in a dry run if applicable.
- Update the protocol document with lessons learned.
Inheritance¶
This section provides instructions for heirs or trusted parties to access funds. Share this section securely with them in advance, but withhold sensitive details like backup locations until needed. Customize with heir-specific roles.
Provide Overview to Heirs
- Explain the multisig setup and protocol basics to trusted parties (customize: "Brief family members on 2-of-3 setup").
- Share a redacted version of this document (e.g., without locations).
- Designate roles (e.g., who holds which key; customize: "Uncle Bob holds Key 3").
- Discuss legal aspects (e.g., wills, dead-man switches).
- Ensure heirs understand the importance of security.
Locate and Access Backups Securely
- Provide clues or instructions for finding metal backups (e.g., via lawyer or safe; customize: "Check my will for locations").
- Instruct on checking tamper seals.
- Advise using a secure environment for access.
- Recommend consulting a Bitcoin expert if needed.
- Warn against rushing or public exposure.
Follow Setup/Recovery Steps as Needed
- If keys are intact, follow the Setup section to initialize devices.
- For lost elements, use the Recovery section.
- Rebuild the Transaction-Manager (Tails OS) on a new Transaction-Manager.
- Verify everything through a full node.
- Test with a small transaction if possible.
Execute a Withdrawal if Authorized
- Gather required Signing-Devices and meet the multisig threshold.
- Follow the Withdrawal section carefully.
- Send to a secure, heir-controlled address.
- Monitor and confirm the transaction.
- Document the process for records.