Basic Protocol with SeedSigner¶
This protocol outlines a basic single-signature Bitcoin self-custody system using a SeedSigner, enhanced by airgap quarantine and a full node for verification. This fully implements all required aspects of Level-6 security, and can easily be adapted to Level-7 multisig.
Setup¶
Establish your single-signature wallet with a SeedSigner in a secure, airgapped environment.
1. Prepare Secure Environment
- Configure a SeedSigner for use as both the signing device and airgapped computer.
- Set up a Transaction-Manager (e.g., Tails OS with persistent storage) connected to your full node.
- Familiarize yourself with basic quarantine rules.
2. Generate Seed
- Power on the SeedSigner and navigate to Settings > Seeds > Generate Seed.
- Optionally, enhance entropy by using dice (consult the dice verification guide).
- Temporarily record the seed phrase on paper.
- Verify the seed phrase on the SeedSigner display.
- Export the seed as a QR code (Settings > Seeds > Export Seed QR).
3. Backup to Metal
- Stampe the seed phrase onto a durable metal backup.
- Cross-verify the transcription with the paper record.
- Securely destroy the paper record.
- Store the metal backup in a safe and private location.
4. Export ZPUB to Transaction-Manager
- On the SeedSigner, export the ZPUB (Settings > Advanced > Export XPUB > Single Sig, native SegWit).
- Display the ZPUB as a QR code on the SeedSigner.
- Scan the QR code with the Transaction-Manager to import the ZPUB.
- In Sparrow on the Transaction-Manager, create a watch-only wallet using the ZPUB.
5. Validate Addresses
- Generate a receive address in Sparrow.
- Transfer the address to the SeedSigner via QR code.
- On the SeedSigner, verify the address derivation (Address Explorer).
Deposit¶
Receive Bitcoin securely using verified addresses.
1. Generate Receive Address
- Open Sparrow on the Transaction-Manager and create a new receive address.
2. Verify Address on SeedSigner
- Display the address as a QR code on the Transaction-Manager.
- Scan and confirm the address on the SeedSigner.
3. Share and Monitor
- Share the verified address with the sender securely.
- Monitor the transaction in Sparrow via your full node.
Withdrawal¶
Spend Bitcoin by signing transactions with your SeedSigner.
1. Create Unsigned Transaction
- Open Sparrow on the Transaction-Manager.
- Select UTXOs, specify recipient and amount.
- Set an appropriate fee based on network conditions.
- Generate the PSBT and export it as a QR code.
2. Sign Transaction with SeedSigner
- Power on the SeedSigner and load the seed if necessary.
- Scan the PSBT QR code from the Transaction-Manager.
- Review transaction details on the SeedSigner display.
- Sign the transaction and export it as a QR code.
3. Broadcast Signed Transaction
- Scan the signed transaction QR code with the Transaction-Manager.
- In Sparrow, finalize and broadcast the transaction.
- Monitor confirmation via your full node.
Check Balance¶
View your Bitcoin balance without needing the SeedSigner.
1. Sync Watch-Only Wallet
- Open Sparrow on the Transaction-Manager.
- Connect to your full node and sync.
- View your balance and transaction history.
Recovery¶
Restore your wallet in case of loss or damage.
1. Retrieve Backup
- Access your metal backup from its secure location.
- Inspect for any signs of tampering or damage.
2. Restore Seed
- If necessary, acquire a new SeedSigner.
- Enter the seed phrase (Load Seed via QR or manual entry).
- Verify by exporting the ZPUB and comparing to records.
3. Rebuild Watch-Only Wallet
- Export the ZPUB to the Transaction-Manager via QR code.
- In Sparrow, create a new watch-only wallet with the ZPUB.
- Rescan the blockchain to identify your UTXOs.
Maintenance¶
Ensure ongoing security and functionality.
1. Verify Metal Backup
- Periodically inspect the metal backup for damage.
- Test the seed by entering it into the SeedSigner and verifying the ZPUB.
2. Update Software
- Check for updates to SeedSigner firmware and Sparrow software.
- Verify the authenticity of updates before installation.
3. Full Node Health
- Ensure your full node is synchronized.
- Monitor performance and address any issues promptly.