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>
This commit is contained in:
relativisticelectron 2022-06-02 17:29:26 +02:00 committed by GitHub
parent 154e02186b
commit 669d0f566a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
12 changed files with 2358 additions and 37 deletions

View file

@ -4,6 +4,7 @@
- [Specter Desktop](#specter-desktop)
- [DISCLAIMER](#disclaimer)
- [Video Walkthrough](#video-walkthrough)
- [Why?](#why)
- [Help wanted: Do you like Specter?](#help-wanted-do-you-like-specter)
- [How to run](#how-to-run)
@ -34,6 +35,9 @@ This software might be ready to be used but at your own risk.
If something doesn't work open an issue here or ask a question in our [Telegram group](https://t.me/spectersupport).
## Video Walkthrough
![video](https://www.youtube.com/embed/v3SEp0SkOWs) [Watch here](https://www.youtube.com/watch?v=v3SEp0SkOWs)
## Why?
Bitcoin Core has a very powerful command line interface and a wonderful daemon. Using PSBT and [HWI](https://github.com/bitcoin-core/HWI) it can also work with hardware wallets, but at the moment it is too linux-way. The same applies to multisignature setups.

View file

@ -484,6 +484,7 @@ When CoinJoin servers and hardware wallets support proof of ownership: https://g
# VIDEOS
## **1** [Getting started with Specter-DIY and Specter-Desktop](https://twitter.com/CryptoAdvance/status/1235151027348926464)
![video](https://www.youtube.com/embed/eF4cgK_L6T4)
How to flash and set up an air-gapped hardware wallet that uses QR codes to communicate with the host.
@ -497,6 +498,7 @@ In the video:
- Signing multisig transactions
## **2** [Assembling Specter-DIY](https://www.youtube.com/watch?v=1H7FqG_FmCw)
![video](https://www.youtube.com/embed/1H7FqG_FmCw)
Specter-DIY hardware wallet:
@ -508,6 +510,7 @@ Specter-DIY hardware wallet:
## **3** [Specter-DIY air-gapped open source bitcoin hardware wallet overview](https://twitter.com/KeithMukai/status/1189565099259944961)
## **4** [Build your own bitcoin hardware-wallet YT series](https://www.youtube.com/playlist?list=PLn2qRQUAAg0z_-R0swVuSsNS9bzRu6oP5&app=desktop)
![video](https://www.youtube.com/embed/AgOqTGeDrac) [playlist](https://www.youtube.com/playlist?list=PLn2qRQUAAg0z_-R0swVuSsNS9bzRu6oP5&app=desktop)
## *What is the difference between that project (DIYbitcoinhardware) & Specter? Is DIYbitcoinhardware sort of a prerequisite for Specter?*

View file

@ -0,0 +1,373 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="183.86096mm"
height="87.622017mm"
viewBox="0 0 183.86097 87.622016"
version="1.1"
id="svg5"
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
sodipodi:docname="register.svg"
inkscape:export-filename="/home/alexander/programs/specter-desktop/docs/images/multisig-guide/secrets.png"
inkscape:export-xdpi="128.61566"
inkscape:export-ydpi="128.61566"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview7"
pagecolor="#ffffff"
bordercolor="#999999"
borderopacity="1"
inkscape:pageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="0"
inkscape:document-units="mm"
showgrid="false"
showguides="true"
inkscape:guide-bbox="true"
inkscape:zoom="1"
inkscape:cx="248.5"
inkscape:cy="232"
inkscape:window-width="1920"
inkscape:window-height="1007"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="layer1"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0">
<sodipodi:guide
position="61.297284,-1.0700815"
orientation="0,-1"
id="guide54569" />
</sodipodi:namedview>
<defs
id="defs2">
<marker
style="overflow:visible"
id="Arrow2Mend"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow2Mend"
inkscape:isstock="true">
<path
transform="scale(-0.6)"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.625;stroke-linejoin:round"
id="path164965" />
</marker>
<marker
style="overflow:visible"
id="Arrow1Lend"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Lend"
inkscape:isstock="true">
<path
transform="matrix(-0.8,0,0,-0.8,-10,0)"
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path164941" />
</marker>
<rect
x="481.79651"
y="421.17773"
width="29.508179"
height="40.26828"
id="rect132514" />
<rect
x="524.81189"
y="382.73282"
width="358.31219"
height="107.18674"
id="rect108088" />
</defs>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-15.783262,0.76044121)">
<rect
style="fill:#192432;fill-opacity:1;fill-rule:evenodd;stroke:#909090;stroke-width:0.69671;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect31"
width="183.16425"
height="60.069756"
x="16.131617"
y="26.443466"
ry="6.8872352" />
<rect
style="fill:#192432;fill-opacity:1;fill-rule:evenodd;stroke:#909090;stroke-width:0.464714;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect177184"
width="183.33307"
height="26.700697"
x="16.047014"
y="-0.52808422"
ry="3.0613406" />
<g
id="Group-5"
style="fill:none;fill-rule:evenodd;stroke:none;stroke-width:1"
transform="matrix(0.81788212,0,0,0.81788212,43.191551,60.657895)">
<g
id="Group-4">
<rect
id="Rectangle"
stroke="#ffffff"
stroke-width="0.7"
x="0.34999999"
y="0.34999999"
width="13.3"
height="23.299999"
rx="1" />
<path
d="m 2,0 h 10 c 1.10457,0 2,0.8954305 2,2 V 9 H 0 V 2 C 0,0.8954305 0.8954305,0 2,0 Z M 2,4 V 7 H 9 V 4 Z"
id="Combined-Shape"
fill="#ffffff" />
</g>
<circle
id="Oval"
fill="#ffffff"
cx="3"
cy="11"
r="1" />
<circle
id="circle10781"
fill="#ffffff"
cx="7"
cy="11"
r="1" />
<circle
id="circle10783"
fill="#ffffff"
cx="11"
cy="11"
r="1" />
<circle
id="circle10785"
fill="#ffffff"
cx="3"
cy="14"
r="1" />
<circle
id="circle10787"
fill="#ffffff"
cx="7"
cy="14"
r="1" />
<circle
id="circle10789"
fill="#ffffff"
cx="11"
cy="14"
r="1" />
<circle
id="circle10791"
fill="#ffffff"
cx="3"
cy="17"
r="1" />
<circle
id="circle10793"
fill="#ffffff"
cx="7"
cy="17"
r="1" />
<circle
id="circle10795"
fill="#ffffff"
cx="11"
cy="17"
r="1" />
<circle
id="circle10797"
fill="#ffffff"
cx="3"
cy="20"
r="1" />
<circle
id="circle10799"
fill="#ffffff"
cx="7"
cy="20"
r="1" />
<circle
id="circle10801"
fill="#ffffff"
cx="11"
cy="20"
r="1" />
</g>
<path
d="m 104.1373,60.944153 c -0.36379,0 -0.65671,0.277566 -0.65671,0.621769 v 16.529674 c 0,0.344387 0.29291,0.621797 0.65671,0.621797 h 2.50451 v 2.563685 h 3.89342 v -2.563685 h 2.49498 c 0.36379,0 0.65671,-0.27757 0.65671,-0.621797 V 61.565922 c 0,-0.344363 -0.29291,-0.621769 -0.65671,-0.621769 z m 4.21796,4.284653 v 3.204558 l -2.00323,0.871383 -0.029,0.01288 v -1.282809 l 0.99955,-0.429885 v -1.925888 z m 0.45494,0.0097 1.03486,0.452134 v 1.923815 l 0.99957,0.431958 v 1.248791 0.03219 l -2.03443,-0.884079 z m -0.22328,3.591669 2.04303,0.886698 -2.03686,0.884864 -0.008,0.0032 -2.03667,-0.884477 z m -1.33287,9.886438 h 2.66891 v 1.951468 h -2.66891 z"
id="path902"
style="fill:#ffffff;fill-rule:nonzero;stroke:none;stroke-width:0.852957" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.70502px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.192626"
x="55.994549"
y="11.620741"
id="text62400"><tspan
sodipodi:role="line"
id="tspan62398"
style="fill:#ffffff;fill-opacity:1;stroke-width:0.192626"
x="55.994549"
y="11.620741">Watch-Only Wallet Information</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:3.75011px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.094;stroke-miterlimit:4;stroke-dasharray:none"
x="279.16483"
y="167.33861"
id="text93230"><tspan
sodipodi:role="line"
style="text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke-width:0.094;stroke-miterlimit:4;stroke-dasharray:none"
x="279.16483"
y="167.33861"
id="tspan120812" /></text>
<text
xml:space="preserve"
transform="matrix(0.26458333,0,0,0.26458333,15.783261,53.082633)"
id="text108086"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect108088);fill:#000000;fill-opacity:1;stroke:none" />
<text
xml:space="preserve"
transform="matrix(0.26458333,0,0,0.26458333,15.783261,53.082633)"
id="text132512"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect132514);fill:#000000;fill-opacity:1;stroke:none" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.70502px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.192626"
x="49.919239"
y="45.429123"
id="text177257"><tspan
sodipodi:role="line"
id="tspan177255"
style="fill:#ffffff;fill-opacity:1;stroke-width:0.192626"
x="49.919239"
y="45.429123">Register</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.70502px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.192626"
x="109.58628"
y="45.429123"
id="text177363"><tspan
sodipodi:role="line"
id="tspan177361"
style="fill:#ffffff;fill-opacity:1;stroke-width:0.192626"
x="109.58628"
y="45.429123">Register</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.70502px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.192626"
x="167.54944"
y="45.429123"
id="text177367"><tspan
sodipodi:role="line"
id="tspan177365"
style="fill:#ffffff;fill-opacity:1;stroke-width:0.192626"
x="167.54944"
y="45.429123">Register</tspan></text>
<g
id="Group-3"
fill="#ffffff"
fill-rule="nonzero"
style="stroke:none;stroke-width:1"
transform="matrix(0.85627053,0,0,0.85627053,160.12488,61.027752)">
<g
id="specter_icon">
<path
d="M 12.878365,0.02001668 2.1401365,0 C 0.95742948,0 0,1.0208507 0,2.2819016 V 21.718098 C 0,22.979149 0.95742948,24 2.1401365,24 H 12.859592 c 1.182707,0 2.140137,-1.020851 2.140137,-2.281902 V 2.2819016 C 15.018502,1.0208507 14.061072,0.02001668 12.878365,0.02001668 Z M 13.939047,21.718098 H 1.0794548 V 4.0033361 H 13.939047 Z"
id="Shape" />
</g>
<g
id="qr_icon"
transform="translate(3,8)">
<path
d="M 0,3.8571429 H 3.8571429 V 0 H 0 Z M 1.2857143,1.2857143 H 2.5714286 V 2.5714286 H 1.2857143 Z M 5.1428571,0 V 3.8571429 H 9 V 0 Z M 7.7142857,2.5714286 H 6.4285714 V 1.2857143 H 7.7142857 Z M 0,9 H 3.8571429 V 5.1428571 H 0 Z M 1.2857143,6.4285714 H 2.5714286 V 7.7142857 H 1.2857143 Z M 8.3571429,5.1428571 H 9 V 7.7142857 H 7.0714286 V 7.0714286 H 6.4285714 V 9 H 5.1428571 V 5.1428571 h 1.9285715 v 0.6428572 h 1.2857143 z m 0,3.2142858 H 9 V 9 H 8.3571429 Z m -1.2857143,0 H 7.7142857 V 9 H 7.0714286 Z"
id="path1151" />
</g>
</g>
<g
id="path915"
transform="translate(16.404227,-51.293443)">
<path
style="color:#000000;fill:#ffffff;-inkscape-stroke:none"
d="m 32.003906,87.328125 v 18.857425 h 1 V 87.328125 Z"
id="path1084" />
<g
id="g1074">
<g
id="path1076">
<path
style="color:#000000;fill:#ffffff;fill-rule:evenodd;stroke-width:0.375;stroke-linejoin:round;-inkscape-stroke:none"
d="m 34.923182,100.95429 -2.410633,6.55552 -2.410633,-6.55552 c 1.423237,1.0473 3.370471,1.04126 4.821266,0 z"
id="path1080" />
<path
style="color:#000000;fill:#ffffff;fill-rule:evenodd;stroke-linejoin:round;-inkscape-stroke:none"
d="m 34.964844,100.77148 a 0.18751875,0.18751875 0 0 0 -0.150391,0.0312 c -1.386506,0.99512 -3.24436,0.99871 -4.601562,0 a 0.18751875,0.18751875 0 0 0 -0.28711,0.2168 l 2.410156,6.55469 a 0.18751875,0.18751875 0 0 0 0.353516,0 l 2.410156,-6.55469 a 0.18751875,0.18751875 0 0 0 -0.134765,-0.24805 z m -4.558594,0.47071 c 1.313667,0.76275 2.88198,0.76041 4.212891,0 l -2.107422,5.72265 z"
id="path1082" />
</g>
</g>
</g>
<g
id="g1807"
transform="translate(76.071259,-50.85782)">
<path
style="color:#000000;fill:#ffffff;-inkscape-stroke:none"
d="m 32.003906,87.328125 v 18.857425 h 1 V 87.328125 Z"
id="path1797" />
<g
id="g1805">
<g
id="g1803">
<path
style="color:#000000;fill:#ffffff;fill-rule:evenodd;stroke-width:0.375;stroke-linejoin:round;-inkscape-stroke:none"
d="m 34.923182,100.95429 -2.410633,6.55552 -2.410633,-6.55552 c 1.423237,1.0473 3.370471,1.04126 4.821266,0 z"
id="path1799" />
<path
style="color:#000000;fill:#ffffff;fill-rule:evenodd;stroke-linejoin:round;-inkscape-stroke:none"
d="m 34.964844,100.77148 a 0.18751875,0.18751875 0 0 0 -0.150391,0.0312 c -1.386506,0.99512 -3.24436,0.99871 -4.601562,0 a 0.18751875,0.18751875 0 0 0 -0.28711,0.2168 l 2.410156,6.55469 a 0.18751875,0.18751875 0 0 0 0.353516,0 l 2.410156,-6.55469 a 0.18751875,0.18751875 0 0 0 -0.134765,-0.24805 z m -4.558594,0.47071 c 1.313667,0.76275 2.88198,0.76041 4.212891,0 l -2.107422,5.72265 z"
id="path1801" />
</g>
</g>
</g>
<g
id="g1979"
transform="translate(134.03441,-50.85782)">
<path
style="color:#000000;fill:#ffffff;-inkscape-stroke:none"
d="m 32.003906,87.328125 v 18.857425 h 1 V 87.328125 Z"
id="path1969" />
<g
id="g1977">
<g
id="g1975">
<path
style="color:#000000;fill:#ffffff;fill-rule:evenodd;stroke-width:0.375;stroke-linejoin:round;-inkscape-stroke:none"
d="m 34.923182,100.95429 -2.410633,6.55552 -2.410633,-6.55552 c 1.423237,1.0473 3.370471,1.04126 4.821266,0 z"
id="path1971" />
<path
style="color:#000000;fill:#ffffff;fill-rule:evenodd;stroke-linejoin:round;-inkscape-stroke:none"
d="m 34.964844,100.77148 a 0.18751875,0.18751875 0 0 0 -0.150391,0.0312 c -1.386506,0.99512 -3.24436,0.99871 -4.601562,0 a 0.18751875,0.18751875 0 0 0 -0.28711,0.2168 l 2.410156,6.55469 a 0.18751875,0.18751875 0 0 0 0.353516,0 l 2.410156,-6.55469 a 0.18751875,0.18751875 0 0 0 -0.134765,-0.24805 z m -4.558594,0.47071 c 1.313667,0.76275 2.88198,0.76041 4.212891,0 l -2.107422,5.72265 z"
id="path1973" />
</g>
</g>
</g>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:5.05305px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.126327"
x="80.095718"
y="19.336071"
id="text896"><tspan
sodipodi:role="line"
id="tspan894"
style="fill:#ffffff;fill-opacity:1;stroke-width:0.126327"
x="80.095718"
y="19.336071">Export to wallet software</tspan></text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 14 KiB

File diff suppressed because it is too large Load diff

After

Width:  |  Height:  |  Size: 59 KiB

View file

@ -0,0 +1,560 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="183.86096mm"
height="154.59996mm"
viewBox="0 0 183.86097 154.59996"
version="1.1"
id="svg5"
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
sodipodi:docname="xpubs.svg"
inkscape:export-filename="/home/alexander/programs/specter-desktop/docs/images/multisig-guide/secrets.png"
inkscape:export-xdpi="128.61566"
inkscape:export-ydpi="128.61566"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview7"
pagecolor="#ffffff"
bordercolor="#999999"
borderopacity="1"
inkscape:pageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="0"
inkscape:document-units="mm"
showgrid="false"
showguides="true"
inkscape:guide-bbox="true"
inkscape:zoom="1"
inkscape:cx="338.5"
inkscape:cy="357"
inkscape:window-width="1920"
inkscape:window-height="1007"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="layer1"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0">
<sodipodi:guide
position="61.297274,119.75094"
orientation="0,-1"
id="guide54569" />
</sodipodi:namedview>
<defs
id="defs2">
<marker
style="overflow:visible"
id="Arrow2Mend"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow2Mend"
inkscape:isstock="true">
<path
transform="scale(-0.6)"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.625;stroke-linejoin:round"
id="path164965" />
</marker>
<marker
style="overflow:visible"
id="Arrow1Lend"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Lend"
inkscape:isstock="true">
<path
transform="matrix(-0.8,0,0,-0.8,-10,0)"
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path164941" />
</marker>
<rect
x="481.79651"
y="421.17773"
width="29.508179"
height="40.26828"
id="rect132514" />
<rect
x="524.81189"
y="382.73282"
width="358.31219"
height="107.18674"
id="rect108088" />
</defs>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-15.783262,-53.082637)">
<rect
style="fill:#192432;fill-opacity:1;fill-rule:evenodd;stroke:#909090;stroke-width:0.69671;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect31"
width="183.16425"
height="60.069756"
x="16.131617"
y="53.430992"
ry="6.8872352" />
<rect
style="fill:#192432;fill-opacity:1;fill-rule:evenodd;stroke:#909090;stroke-width:0.866637;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect177184"
width="182.847"
height="93.106216"
x="16.290047"
y="114.14306"
ry="10.674996" />
<g
id="Group-5"
style="fill:none;fill-rule:evenodd;stroke:none;stroke-width:1"
transform="matrix(0.81788212,0,0,0.81788212,43.191551,60.657895)">
<g
id="Group-4">
<rect
id="Rectangle"
stroke="#ffffff"
stroke-width="0.7"
x="0.34999999"
y="0.34999999"
width="13.3"
height="23.299999"
rx="1" />
<path
d="m 2,0 h 10 c 1.10457,0 2,0.8954305 2,2 V 9 H 0 V 2 C 0,0.8954305 0.8954305,0 2,0 Z M 2,4 V 7 H 9 V 4 Z"
id="Combined-Shape"
fill="#ffffff" />
</g>
<circle
id="Oval"
fill="#ffffff"
cx="3"
cy="11"
r="1" />
<circle
id="circle10781"
fill="#ffffff"
cx="7"
cy="11"
r="1" />
<circle
id="circle10783"
fill="#ffffff"
cx="11"
cy="11"
r="1" />
<circle
id="circle10785"
fill="#ffffff"
cx="3"
cy="14"
r="1" />
<circle
id="circle10787"
fill="#ffffff"
cx="7"
cy="14"
r="1" />
<circle
id="circle10789"
fill="#ffffff"
cx="11"
cy="14"
r="1" />
<circle
id="circle10791"
fill="#ffffff"
cx="3"
cy="17"
r="1" />
<circle
id="circle10793"
fill="#ffffff"
cx="7"
cy="17"
r="1" />
<circle
id="circle10795"
fill="#ffffff"
cx="11"
cy="17"
r="1" />
<circle
id="circle10797"
fill="#ffffff"
cx="3"
cy="20"
r="1" />
<circle
id="circle10799"
fill="#ffffff"
cx="7"
cy="20"
r="1" />
<circle
id="circle10801"
fill="#ffffff"
cx="11"
cy="20"
r="1" />
</g>
<path
d="m 104.1373,60.944153 c -0.36379,0 -0.65671,0.277566 -0.65671,0.621769 v 16.529674 c 0,0.344387 0.29291,0.621797 0.65671,0.621797 h 2.50451 v 2.563685 h 3.89342 v -2.563685 h 2.49498 c 0.36379,0 0.65671,-0.27757 0.65671,-0.621797 V 61.565922 c 0,-0.344363 -0.29291,-0.621769 -0.65671,-0.621769 z m 4.21796,4.284653 v 3.204558 l -2.00323,0.871383 -0.029,0.01288 v -1.282809 l 0.99955,-0.429885 v -1.925888 z m 0.45494,0.0097 1.03486,0.452134 v 1.923815 l 0.99957,0.431958 v 1.248791 0.03219 l -2.03443,-0.884079 z m -0.22328,3.591669 2.04303,0.886698 -2.03686,0.884864 -0.008,0.0032 -2.03667,-0.884477 z m -1.33287,9.886438 h 2.66891 v 1.951468 h -2.66891 z"
id="path902"
style="fill:#ffffff;fill-rule:nonzero;stroke:none;stroke-width:0.852957" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.70502px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.192626"
x="48.788811"
y="145.04198"
id="text35645"><tspan
sodipodi:role="line"
style="text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke-width:0.192626"
x="48.788811"
y="145.04198"
id="tspan82322">Public key 1</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.70502px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.192626"
x="55.994549"
y="126.21202"
id="text62400"><tspan
sodipodi:role="line"
id="tspan62398"
style="fill:#ffffff;fill-opacity:1;stroke-width:0.192626"
x="55.994549"
y="126.21202">Watch-Only Wallet Information</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:3.75011px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.094;stroke-miterlimit:4;stroke-dasharray:none"
x="279.16483"
y="167.33861"
id="text93230"><tspan
sodipodi:role="line"
style="text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke-width:0.094;stroke-miterlimit:4;stroke-dasharray:none"
x="279.16483"
y="167.33861"
id="tspan120812" /></text>
<text
xml:space="preserve"
transform="matrix(0.26458333,0,0,0.26458333,15.783261,53.082633)"
id="text108086"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect108088);fill:#000000;fill-opacity:1;stroke:none" />
<text
xml:space="preserve"
transform="matrix(0.26458333,0,0,0.26458333,15.783261,53.082633)"
id="text132512"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect132514);fill:#000000;fill-opacity:1;stroke:none" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:4.23333px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="28.733995"
y="154.37624"
id="text145591"><tspan
sodipodi:role="line"
style="font-size:4.23333px;fill:#ffffff;fill-opacity:1;stroke-width:0.264583"
x="28.733995"
y="154.37624"
id="tspan147219">zpub....................yGd</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:4.23333px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="34.203426"
y="197.00403"
id="text156841"><tspan
sodipodi:role="line"
style="font-size:4.23333px;fill:#ffffff;fill-opacity:1;stroke-width:0.264583"
x="34.203426"
y="197.00403"
id="tspan156839">m/48h/1h/0h/2h</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:6.26846px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.156712"
x="48.81266"
y="189.8765"
id="text159497"><tspan
sodipodi:role="line"
style="text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke-width:0.156712"
x="48.81266"
y="189.8765"
id="tspan159495">Derivation Path 1</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.70502px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.192626"
x="108.46149"
y="145.04198"
id="text165376"><tspan
sodipodi:role="line"
style="text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke-width:0.192626"
x="108.46149"
y="145.04198"
id="tspan165374">Public key 2</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:4.23333px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="87.883232"
y="154.37624"
id="text165380"><tspan
sodipodi:role="line"
style="font-size:4.23333px;fill:#ffffff;fill-opacity:1;stroke-width:0.264583"
x="87.883232"
y="154.37624"
id="tspan165378">zpub....................Amo</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:4.23333px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="93.870461"
y="197.00403"
id="text165384"><tspan
sodipodi:role="line"
style="font-size:4.23333px;fill:#ffffff;fill-opacity:1;stroke-width:0.264583"
x="93.870461"
y="197.00403"
id="tspan165382">m/48h/1h/0h/2h</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:6.26846px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.156712"
x="108.48428"
y="189.8765"
id="text165388"><tspan
sodipodi:role="line"
style="text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke-width:0.156712"
x="108.48428"
y="189.8765"
id="tspan165386">Derivation Path 2</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.70502px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.192626"
x="166.40018"
y="145.04198"
id="text165554"><tspan
sodipodi:role="line"
style="text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke-width:0.192626"
x="166.40018"
y="145.04198"
id="tspan165552">Public key 3</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:4.23333px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="147.54652"
y="154.37624"
id="text165558"><tspan
sodipodi:role="line"
style="font-size:4.23333px;fill:#ffffff;fill-opacity:1;stroke-width:0.264583"
x="147.54652"
y="154.37624"
id="tspan165556">zpub....................ypi</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:4.23333px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="151.8336"
y="197.00403"
id="text165562"><tspan
sodipodi:role="line"
style="font-size:4.23333px;fill:#ffffff;fill-opacity:1;stroke-width:0.264583"
x="151.8336"
y="197.00403"
id="tspan165560">m/48h/1h/0h/2h</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:6.26846px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.156712"
x="166.42754"
y="189.8765"
id="text165566"><tspan
sodipodi:role="line"
style="text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke-width:0.156712"
x="166.42754"
y="189.8765"
id="tspan165564">Derivation Path 3</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.70502px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.192626"
x="50.977573"
y="96.229134"
id="text177257"><tspan
sodipodi:role="line"
id="tspan177255"
style="fill:#ffffff;fill-opacity:1;stroke-width:0.192626"
x="50.977573"
y="96.229134">Export</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.70502px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.192626"
x="110.64461"
y="96.229134"
id="text177363"><tspan
sodipodi:role="line"
id="tspan177361"
style="fill:#ffffff;fill-opacity:1;stroke-width:0.192626"
x="110.64461"
y="96.229134">Export</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.70502px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.192626"
x="168.60776"
y="96.229134"
id="text177367"><tspan
sodipodi:role="line"
id="tspan177365"
style="fill:#ffffff;fill-opacity:1;stroke-width:0.192626"
x="168.60776"
y="96.229134">Export</tspan></text>
<g
id="Group-3"
fill="#ffffff"
fill-rule="nonzero"
style="stroke:none;stroke-width:1"
transform="matrix(0.85627053,0,0,0.85627053,160.12488,61.027752)">
<g
id="specter_icon">
<path
d="M 12.878365,0.02001668 2.1401365,0 C 0.95742948,0 0,1.0208507 0,2.2819016 V 21.718098 C 0,22.979149 0.95742948,24 2.1401365,24 H 12.859592 c 1.182707,0 2.140137,-1.020851 2.140137,-2.281902 V 2.2819016 C 15.018502,1.0208507 14.061072,0.02001668 12.878365,0.02001668 Z M 13.939047,21.718098 H 1.0794548 V 4.0033361 H 13.939047 Z"
id="Shape" />
</g>
<g
id="qr_icon"
transform="translate(3,8)">
<path
d="M 0,3.8571429 H 3.8571429 V 0 H 0 Z M 1.2857143,1.2857143 H 2.5714286 V 2.5714286 H 1.2857143 Z M 5.1428571,0 V 3.8571429 H 9 V 0 Z M 7.7142857,2.5714286 H 6.4285714 V 1.2857143 H 7.7142857 Z M 0,9 H 3.8571429 V 5.1428571 H 0 Z M 1.2857143,6.4285714 H 2.5714286 V 7.7142857 H 1.2857143 Z M 8.3571429,5.1428571 H 9 V 7.7142857 H 7.0714286 V 7.0714286 H 6.4285714 V 9 H 5.1428571 V 5.1428571 h 1.9285715 v 0.6428572 h 1.2857143 z m 0,3.2142858 H 9 V 9 H 8.3571429 Z m -1.2857143,0 H 7.7142857 V 9 H 7.0714286 Z"
id="path1151" />
</g>
</g>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.70502px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.192626"
x="48.788811"
y="166.73752"
id="text929"><tspan
sodipodi:role="line"
style="text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke-width:0.192626"
x="48.788811"
y="166.73752"
id="tspan927">Fingerprint 1</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:4.23333px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="42.415836"
y="176.07178"
id="text933"><tspan
sodipodi:role="line"
style="font-size:4.23333px;fill:#ffffff;fill-opacity:1;stroke-width:0.264583"
x="42.415836"
y="176.07178"
id="tspan931">ea...34</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.70502px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.192626"
x="108.46149"
y="166.73752"
id="text937"><tspan
sodipodi:role="line"
style="text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke-width:0.192626"
x="108.46149"
y="166.73752"
id="tspan935">Fingerprint 2</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:4.23333px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="101.10619"
y="176.07178"
id="text941"><tspan
sodipodi:role="line"
style="font-size:4.23333px;fill:#ffffff;fill-opacity:1;stroke-width:0.264583"
x="101.10619"
y="176.07178"
id="tspan939">0c7...7d</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.70502px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.192626"
x="166.40018"
y="166.73752"
id="text945"><tspan
sodipodi:role="line"
style="text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke-width:0.192626"
x="166.40018"
y="166.73752"
id="tspan943">Fingerprint 3</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:4.23333px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="160.08116"
y="176.07178"
id="text949"><tspan
sodipodi:role="line"
style="font-size:4.23333px;fill:#ffffff;fill-opacity:1;stroke-width:0.264583"
x="160.08116"
y="176.07178"
id="tspan947">03.....5</tspan></text>
<g
id="path915"
transform="translate(16.404227,-0.49343723)">
<path
style="color:#000000;fill:#ffffff;-inkscape-stroke:none"
d="m 32.003906,87.328125 v 18.857425 h 1 V 87.328125 Z"
id="path1084" />
<g
id="g1074">
<g
id="path1076">
<path
style="color:#000000;fill:#ffffff;fill-rule:evenodd;stroke-width:0.375;stroke-linejoin:round;-inkscape-stroke:none"
d="m 34.923182,100.95429 -2.410633,6.55552 -2.410633,-6.55552 c 1.423237,1.0473 3.370471,1.04126 4.821266,0 z"
id="path1080" />
<path
style="color:#000000;fill:#ffffff;fill-rule:evenodd;stroke-linejoin:round;-inkscape-stroke:none"
d="m 34.964844,100.77148 a 0.18751875,0.18751875 0 0 0 -0.150391,0.0312 c -1.386506,0.99512 -3.24436,0.99871 -4.601562,0 a 0.18751875,0.18751875 0 0 0 -0.28711,0.2168 l 2.410156,6.55469 a 0.18751875,0.18751875 0 0 0 0.353516,0 l 2.410156,-6.55469 a 0.18751875,0.18751875 0 0 0 -0.134765,-0.24805 z m -4.558594,0.47071 c 1.313667,0.76275 2.88198,0.76041 4.212891,0 l -2.107422,5.72265 z"
id="path1082" />
</g>
</g>
</g>
<g
id="g1807"
transform="translate(76.071259,-0.05781489)">
<path
style="color:#000000;fill:#ffffff;-inkscape-stroke:none"
d="m 32.003906,87.328125 v 18.857425 h 1 V 87.328125 Z"
id="path1797" />
<g
id="g1805">
<g
id="g1803">
<path
style="color:#000000;fill:#ffffff;fill-rule:evenodd;stroke-width:0.375;stroke-linejoin:round;-inkscape-stroke:none"
d="m 34.923182,100.95429 -2.410633,6.55552 -2.410633,-6.55552 c 1.423237,1.0473 3.370471,1.04126 4.821266,0 z"
id="path1799" />
<path
style="color:#000000;fill:#ffffff;fill-rule:evenodd;stroke-linejoin:round;-inkscape-stroke:none"
d="m 34.964844,100.77148 a 0.18751875,0.18751875 0 0 0 -0.150391,0.0312 c -1.386506,0.99512 -3.24436,0.99871 -4.601562,0 a 0.18751875,0.18751875 0 0 0 -0.28711,0.2168 l 2.410156,6.55469 a 0.18751875,0.18751875 0 0 0 0.353516,0 l 2.410156,-6.55469 a 0.18751875,0.18751875 0 0 0 -0.134765,-0.24805 z m -4.558594,0.47071 c 1.313667,0.76275 2.88198,0.76041 4.212891,0 l -2.107422,5.72265 z"
id="path1801" />
</g>
</g>
</g>
<g
id="g1979"
transform="translate(134.03441,-0.05781489)">
<path
style="color:#000000;fill:#ffffff;-inkscape-stroke:none"
d="m 32.003906,87.328125 v 18.857425 h 1 V 87.328125 Z"
id="path1969" />
<g
id="g1977">
<g
id="g1975">
<path
style="color:#000000;fill:#ffffff;fill-rule:evenodd;stroke-width:0.375;stroke-linejoin:round;-inkscape-stroke:none"
d="m 34.923182,100.95429 -2.410633,6.55552 -2.410633,-6.55552 c 1.423237,1.0473 3.370471,1.04126 4.821266,0 z"
id="path1971" />
<path
style="color:#000000;fill:#ffffff;fill-rule:evenodd;stroke-linejoin:round;-inkscape-stroke:none"
d="m 34.964844,100.77148 a 0.18751875,0.18751875 0 0 0 -0.150391,0.0312 c -1.386506,0.99512 -3.24436,0.99871 -4.601562,0 a 0.18751875,0.18751875 0 0 0 -0.28711,0.2168 l 2.410156,6.55469 a 0.18751875,0.18751875 0 0 0 0.353516,0 l 2.410156,-6.55469 a 0.18751875,0.18751875 0 0 0 -0.134765,-0.24805 z m -4.558594,0.47071 c 1.313667,0.76275 2.88198,0.76041 4.212891,0 l -2.107422,5.72265 z"
id="path1973" />
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 23 KiB

138
docs/multisig-guide.md Normal file
View file

@ -0,0 +1,138 @@
# Multisig Guide
This guide is meant as an overview only. We encourage you to also read completely through:
- An **excellent** and comprehensive guide: [https://bitcoiner.guide/multisig](https://bitcoiner.guide/multisig)
- A **Video** step-by-step guide: ![small_video](https://www.youtube.com/embed/ZQvCncdFMPo)
- A step-by-step guide with the bitbox02: [https://shiftcrypto.ch/blog/specter-multisig-guide/](https://shiftcrypto.ch/blog/specter-multisig-guide/)
## 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](https://www.youtube.com/watch?v=B-09WDPXZmU)). 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
- [https://bitcoiner.guide/multisig/intro/#why-multisig](https://bitcoiner.guide/multisig/intro/#why-multisig)
- [https://btcguide.github.io/why-multisig](https://btcguide.github.io/why-multisig)
## 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](https://btcguide.github.io/why-multisig) 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](https://jlopp.github.io/metal-bitcoin-storage-reviews/) and the [cheap version](https://www.econoalchemist.com/post/backup))
You should have now:
![secrets](images/multisig-guide/secrets.svg)
#### 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](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 device*s (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 device*s (e.g. *hardware wallets*). The *signing device*s 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]( 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*](https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#Key_identifiers) (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](images/multisig-guide/xpubs.svg)
- Specter Desktop will take the *(master) public key*s 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](images/multisig-guide/register.svg)
*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](https://bitcoiner.guide/multisig/wallet/#notify-coldcard), [Notify Cobo/Keystone](https://bitcoiner.guide/multisig/wallet/#notify-cobo), [Register Bitbox02](https://shiftcrypto.ch/blog/specter-multisig-guide/#register-the-multisig-wallet-on-the-bitbox02)
#### Signing device comparison
As mentioned above, registering the multisig setup on the hardware device is important. Below we show a table ([initial source](https://shiftcrypto.ch/blog/how-nearly-all-personal-hardware-wallet-multisig-setups-are-insecure/)) of those supporting the most important features for a multisig setup:
| | [BitBox02](https://shiftcrypto.ch/) | [Ledger](https://www.ledger.com/) | [Trezor](https://trezor.io/) | [Coldcard](https://coldcard.com/) | [Specter DIY](https://github.com/cryptoadvance/specter-diy) | Cobo Vault / [Keystone](https://keyst.one/) |
| ------------------------------------ | ----------------------------------- | --------------------------------- | ---------------------------- | --------------------------------- | ----------------------------------------------------------- | ------------------------------------------- |
| 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/](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/](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/](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.

View file

@ -1,27 +0,0 @@
# Multisig Security Trade-offs
## Receive addresses
When using a standard non-multisig wallet we normally trust that the wallet will verify that a receiving address belongs to our wallet.
This assumption does not always hold true when using a multisig wallet with hardware wallets. With a multisig wallet the wallet must verify not only that an address was generated from its own XPUB but also valid cosigner device XPUBs, not all hardware wallets are able to validate cosigner XPUBs.
Below is a table ([initial source](https://shiftcrypto.ch/blog/how-nearly-all-personal-hardware-wallet-multisig-setups-are-insecure/)) that shows hardware wallet support for validating cosigner XPUBs:
| | BitBox02 | Ledger | Trezor | Coldcard | Specter DIY | Cobo Vault |
|--------------------------------------|----------|--------|--------|----------|-------------|------------|
| Display own xpub on demand | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ |
| Display cosigner xpubs | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ |
| Show SLIP-132 formats (`Ypub, Zpub`) | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ |
| Register xpubs inside the device | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ |
## Backups
To spend from a multisig wallet (for example 2 of 3) you need *all 3* of the XPUBs, not just 2-of-3, in order to construct a valid transaction.
This means that when using a Specter Desktop multisig wallet you should keep a copy of the exported PDF backup file with each of your signing devices.
## See also:
- https://shiftcrypto.ch/blog/how-nearly-all-personal-hardware-wallet-multisig-setups-are-insecure/

View file

@ -5,9 +5,9 @@ nav:
- Home:
- 'Introduction': README.md
- release-notes.md
- multisig-guide.md
- User Guide:
- faq.md
- multisig-security-tradeoffs.md
- 'Using Tor': tor.md
- 'Signing messages': sign-message.md
- Operating Guide:
@ -39,4 +39,19 @@ nav:
- api/ep_wallets_psbt.md
- api/ep_wallets_wallet.md
theme:
name: readthedocs
name: readthedocs
markdown_extensions:
- mdx_truly_sane_lists
plugins:
- mkdocs-video:
mark: "small_video"
css_style:
width: "70%"
height: "15lw"
min-width: "300px"
min-height: "180px"
- mkdocs-video:
mark: "video"
css_style:
width: "100%"
height: "22.172vw"

View file

@ -127,7 +127,9 @@
{% endif %}
<div style="display: flex; justify-content: center; align-items: center;">
<div class="main-description-box">
<p style="font-size: 1.1em; margin-bottom: 2em; text-align: left;">{{ _("Specter Desktop is a convenient wallet interface to better use your Bitcoin Core node. Its good for singlesig wallets, but comes with a special focus on multisignature setups for different hardware wallets and air-gapped signing devices.") }}</p>
<p style="font-size: 1.1em; margin-bottom: 2em; text-align: left;">{{ _("Specter Desktop is a convenient wallet interface to better use your Bitcoin Core node. Its good for singlesig wallets, but comes with a special focus on multisignature setups for different hardware wallets and air-gapped signing devices.") }}
Learn <a style="color: #fff" href="https://specter-desktop-docs.netlify.app/multisig-guide/" target="_blank">🕮 {{ _("here") }}</a> more about multisig.
</p>
</div>
</div>
{% if not specter.chain %}
@ -241,7 +243,7 @@
</table>
<br>
{% endif %}
<p style="position: relative; z-index: 1; line-height: 24px;">{{ _('Having issues? Try reading <a href="https://github.com/cryptoadvance/specter-desktop/blob/master/docs/faq.md" target="_blank" style="color: #fff; font-size: 1.05em; font-weight: bolder;">the FAQ</a>') }}</p><br><br>
<p style="position: relative; z-index: 1; line-height: 24px;">{{ _('Have a look at our <a href="https://specter-desktop-docs.netlify.app/" target="_blank" style="color: #fff; font-size: 1.05em; font-weight: bolder;">🕮 help</a> or <a href="https://specter-desktop-docs.netlify.app/faq/" target="_blank" style="color: #fff; font-size: 1.05em; font-weight: bolder;">FAQ</a>') }}</p><br><br>
<span style="position: relative; z-index: 1;">{{ _("Still having issues?") }}</span><br>
<div style="display: flex; justify-content: center;">
<div style="max-width: 80%;">

View file

@ -40,7 +40,7 @@
{% if wallet_type == 'multisig' %}
{{ _("We use sorted multisig (BIP-67), so <b>order is NOT important.</b>") }}<br>
<br>
{{ _('Be aware of <a style="color: #fff" href="https://github.com/cryptoadvance/specter-desktop/blob/master/docs/multisig-security-tradeoffs.md" target="_blank">multisig security tradeoffs</a>.') }}<br>
{{ _('Please read the <a style="color: #fff" href="https://specter-desktop-docs.netlify.app/multisig-guide/" target="_blank">multisig guide</a>.') }}<br>
<br>
{% endif %}
</center>

View file

@ -53,7 +53,11 @@
</button>
</div>
{% include "wallet/new_wallet/components/import_wallet_account_map.jinja" %}
<div class="note">
<center>{{ _("Multisig is better for large-ish amounts.") }}</center>
</div>
<span style="font-size: 1.2em; margin: 10px; text-align: center;">
New to Multisig? Read our <a style="color: #fff" href="https://specter-desktop-docs.netlify.app/multisig-guide/" target="_blank">🕮 {{ _("Multisig guide") }}</a>
</span>
<br>
{% endblock %}

View file

@ -15,7 +15,7 @@
# We're using mkdocs for creating the static pages
# We don't pin this dependency as this is not relevant for either testing or
# production. Therefore it's easier to simply let it upgrade automatically:
pip3 install mkdocs
pip3 install mkdocs mkdocs-video mdx_truly_sane_lists
# At the sime of this comment, we had: mkdocs==1.2.3
@ -34,4 +34,4 @@ fi
mkdocs $1 $2
# Potentially, we could rollback here the changes but that would be anoying if you want
# to edit files.
# to edit files.