specter-desktop/docs/multisig-guide.md
relativisticelectron 669d0f566a
Feature: Multisig beginner guide (#1731)
* Added pictures

* Added text

* wrote more in the guide

* Added links to vendors websites

* Added more links

* Added fingerprints in fig

* added links ot other guides

* Improved arrows

* Added links

* Better sub-bullets

* Changed the Testing part

* typos

* Chore: Adjusted releasing process and adding liquidissuer  (#1716)

* refactor build-linux to avoid build-ci.sh

* adding set_setup_py_version to release_helper

* yet another tiny release-helper

* adjusted for win-compatibility

* fix windows build again

* fix directory-change

* part2

* kick

* kick

* kick

* kick

* dependencie for ./utils

* revert before_script

* unix, not linux

* fix buildscript

* restore version.txt

* fix

* fex exe

* bugfix: not exiting directory

* kick

* kick

* kick

* adding liquidissuer

* docstrings

* fix upload locations

* some docs

* ommit external exts in DevelopmentConfig

* simplifying startup for external exts

* macos improvements

* Merge branch 'master' of github.com:cryptoadvance/specter-desktop into liquidissuer

* last build-script adjustements

* fixed params gain

* reapply lost sys changes

* upgrade liquidissuer

* remove unnecessary print statement.

* remove unnecessary EXTENSION_LIST reduction in Development

* Bugfix: disable gunicorn for windows

* fix version.py

* black

* fix build

* last fixes for the macos-script

* Update src/cryptoadvance/specter/util/reflection.py

* Better formatting for cli

* a bit of reformating for cli_ext

* ignoring elements test

* skip test

* fix link to specterext-dice

* Removed link

* Added point about fewer devices

added more details

* Improved link

* Added seed plate comparision link

* Changed list character

* Added link in frint-end

* - changed text to multisig guide
- Replaced FAQ link by a link to the docs

* Added second link to multisig guide.

* Added video plugin to mkdocs

* Added requirement mkdocs-video

* Added mkdocs-video in the script

* reset requirements

* solved https://github.com/cryptoadvance/specter-desktop/issues/1736

* Added link in Readme

* changed video link

* Fixed sublist identation

* Changed video guide text

* Explained fingerprint

* Improved registering multisig setup

* Add picture about registering

* updated pic

* Merged the table from the tradeoff.md into the guide

* typo fix

* Fixed link

* Replaced https://deploy-preview-1731--specter-desktop-docs.netlify.app by https://specter-desktop-docs.netlify.app

Co-authored-by: Kim Neunert <k9ert@gmx.de>
2022-06-02 17:29:26 +02:00

9.4 KiB

Multisig Guide

This guide is meant as an overview only. We encourage you to also read completely through:

What is Single-sig?

You are probably familiar with using 1 signing device (also called hardware wallet) that generated 1 seed.

Pros:

  • 1 seed is all you need to access your funds
  • 1 seed is simple
  • Only 1 secure location to store the seed backup is needed

Cons:

  • If you get tricked into giving hackers your seed your Bitcoin will be stolen immediately (see Phishing attacks here). 1 mistake on your part and the Bitcoin are lost.

What is Multisig?

Multisig is a way to allow spending from your wallet only after 2 signing devices (e.g. 2 hardware wallets) have signed the outgoing transaction. These 2 signing devices can be any 2 out of 3 signing devices. This is called a 2 of 3 multisig wallet. (More complicated setups, e.g. 3 of 5, are possible but uncommon)

Pros:

  • Way more secure! 1 mistake (e.g. 1 seed lost or stolen) cannot result in loss of funds.
    • Useful for long term storage of significant funds
    • If 1 seed was lost or stolen, all the funds can be transferred to a new setup with the 2 remaining seeds + all (master) public keys

Cons:

  • More complicated
  • 3 secure locations to store the seed backups are needed
  • (master) public keys backup needed

Further information

Overview

1. Seed creation

  • You need 3 signing devices (ideally the 3 devices are from 3 different vendors), that generate 3 different seeds.

    • It is not strictly necessary to use 3 signing devices of different vendors to generate the 3 seeds. You could use 1 or 2 signing devices in total, generate a seed, reset the device, generate a seed, and so on. While this might not offer all the benefits of multisig (like protection against a compromised random-number generator), it is significantly cheaper and needs fewer locations to store the signing devices in.
  • The 3 seeds need to be stored on steel to survive long term, and be resistant to fire and water. (Comparison and the cheap version)

You should have now:

secrets

Seed storage locations

This is a crucial part of the setup and needs careful consideration. Only if you choose these locations well you get the benefits (see https://bitcoiner.guide/multisig/intro/#multisig-benefits). Here a few points to pay attention to:

  • Seed backups (on steel) are not protected by a pin as the signing devices (e.g. hardware wallets). They therefore need a secure location, i.e. accessible only to you or people you completely trust.
    • Examples are: Home/apartment, Safe deposit box, a relatives (or very good friends) home/apartment
  • In 1 location there should not be more than 1 seed
    • Minimum is: 3 secure locations, in each location is the signing device and its seed backup
    • Ideal is: 3 secure locations for the seed backups and 3 (medium) secure locations for the signing devices (e.g. hardware wallets). The signing devices are themselves electronic vaults protected by the pin and do not need such a high security as the seed backups.
  • Please read: https://bitcoiner.guide/multisig/backup

2. Multisig wallet creation with Specter Desktop

From each seed the signing device (e.g. hardware wallet) will calculate

  • the (master) public key (also called xpub)
  • the fingerprint (The BIP32 Root Fingerprint is a short string, e.g. "3d2adeb9").

These can be exported (via USB, QR-Code, or SD-Card) to Specter Desktop:

xpubs

  • Specter Desktop will take the (master) public keys together with the derivation paths (for segwit multisig the standard is "m/48h/1h/0h/2h") to construct the (watch-only) wallet. The fingerprints are important, when then signing devices sign transactions.
  • Keep a copy of all (master) public keys and fingerprints (i.e. the Specter "Printable PDF backup") with every seed backup. They allow anyone to recreate the (watch-only) wallet and see the Bitcoin balance, and therefore should be kept private.

3. Register the multisig setup with each signing device (e.g. hardware wallet)

register

Signing devices can import (via USB, QR-Code, or SD-Card) the multisig-wallet file from Specter Desktop (Wallet --> Settings --> Export --> Export to wallet software).

  • Then the signing device knows it's parts of a multisig setup and can protect against various attacks.
  • Then signing device can display receive addresses of the multisig setup.

For different vendors the registering works slightly different: Notify Coldcard, Notify Cobo/Keystone, Register Bitbox02

Signing device comparison

As mentioned above, registering the multisig setup on the hardware device is important. Below we show a table (initial source) of those supporting the most important features for a multisig setup:

BitBox02 Ledger Trezor Coldcard Specter DIY Cobo Vault / Keystone
Display own xpub on demand
Display cosigner xpubs
Show SLIP-132 formats (Ypub, Zpub)
Register xpubs inside the device

4. Testing all parts of the setup

Because the multisig setup is more complicated, testing all parts of the setup is even more important.

4.1 Fund with small amount

Send a small amount to the multisig wallet: https://bitcoiner.guide/multisig/receive/

4.2 Recreate from the seed backups

Crucial is that you backed up each seed correctly (on steel). Do this only if there are small funds on the multisig setup:

  • Wiping/Resetting all signing devices (also known as hardware wallet)

  • Restore the signing devices from the steel backups

4.3 (Watch-only) Wallet test

  • Recreate the (watch-only) wallet with a different software, e.g. Sparrow Wallet, instead of Specter Desktop. For this export the (master) public keys together with the derivation paths again from all signing devices. See here: https://bitcoiner.guide/multisig/recover/
  • If your transaction with the small amount appears in Sparrow Wallet identical to Specter Desktop your (Watch-only) Wallet test recreation was successful.

4.4 Spend test

The last test is to test that you are able to spend from the multisig setup. For this send the small funds to a completely different wallet (e.g. a phone wallet) (See here: https://bitcoiner.guide/multisig/spend/). If the different wallet (e.g. a phone wallet) receives this transaction, then this test was successful too and you are ready to fund the multisig setup with larger amounts.