{"id":455,"date":"2026-10-06T09:38:12","date_gmt":"2026-10-06T09:38:12","guid":{"rendered":"https:\/\/getbitcoin.guide\/articles\/?p=455"},"modified":"2026-10-06T09:45:15","modified_gmt":"2026-10-06T09:45:15","slug":"multisig-for-one-person","status":"publish","type":"post","link":"https:\/\/getbitcoin.guide\/articles\/multisig-for-one-person\/","title":{"rendered":"Multisig Wallet for One Person: What 2 of 3 Really Costs"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><strong>A multisig wallet for one person usually means 2 of 3: three keys you hold, any two of which can spend. It removes your single seed phrase as a single point of failure and adds a new one, the wallet configuration, which two surviving seeds alone cannot reconstruct.<\/strong><\/p>\n\n\n\n<div class=\"msq-audio\" data-article=\"multisig-for-one-person\" data-minutes=\"15\">\n<style>.msq-audio{margin:1.25em 0 1.75em;padding:16px 18px;background:#EEF3F8;border:1px solid #CBD8E6;border-radius:12px}\n.msq-audio-lead{margin:0 0 8px;font-size:.95em}.msq-audio audio{width:100%;margin:0 0 12px;display:block}\n.msq-toc-title{margin:0 0 6px;font-weight:700}.msq-toc ol{margin:0;padding:0;list-style:none}\n.msq-toc li{display:flex;gap:10px;align-items:center;padding:6px 6px;border-bottom:1px solid #CBD8E6;border-radius:8px}\n.msq-toc li:last-child{border-bottom:0}.msq-toc li.is-active{background:#fff}\n.msq-toc-play{flex:0 0 auto;width:30px;height:30px;border-radius:50%;border:0;background:#1F4E79;color:#fff;font:inherit;font-size:.72em;line-height:30px;padding:0;cursor:pointer}\n.msq-toc-play.is-playing{background:#B4531A}\n.msq-toc-time{flex:0 0 auto;min-width:3.1em;font-variant-numeric:tabular-nums;color:#4A5560;font-size:.9em}\n.msq-toc a{color:#1B1F24;text-decoration:none;line-height:1.35}.msq-toc li.is-active a{font-weight:700;color:#1F4E79}\n.msq-audio-note{margin:10px 0 0;font-size:.82em;color:#4A5560}\nh2.wp-block-heading[id]{scroll-margin-top:24px}\n.msq-hplay{display:inline-block;vertical-align:middle;width:26px;height:26px;margin:0 0 0 10px;border-radius:50%;border:0;background:#1F4E79;cursor:pointer;padding:0;position:relative;top:-2px}\n.msq-hplay::before{content:'\u25b6\ufe0e';display:block;color:#fff;font-size:11px;line-height:26px;text-align:center}\n.msq-hplay.is-playing{background:#B4531A}.msq-hplay.is-playing::before{content:'\u2016';font-size:13px;font-weight:700}\n.msq-bar{position:fixed;left:0;right:0;bottom:0;z-index:9000;display:flex;align-items:center;gap:10px;padding:8px 12px;padding-bottom:calc(8px + env(safe-area-inset-bottom));background:#FFFFFF;border-top:1px solid #CBD8E6;box-shadow:0 -4px 16px rgba(0,0,0,.08);font-size:.92em;color:#1B1F24;transition:transform .2s ease}\n.msq-bar.is-hidden{transform:translateY(130%)}\n.msq-bar-play{display:inline-flex;align-items:center;gap:8px;border:0;border-radius:999px;background:#1F4E79;color:#fff;font:inherit;font-weight:700;padding:8px 14px 8px 12px;cursor:pointer;white-space:nowrap}\n.msq-bar-play.is-playing{background:#B4531A}\n.msq-bar-icon::before{content:'\u25b6\ufe0e';font-size:12px}.msq-bar-play.is-playing .msq-bar-icon::before{content:'\u2016';font-size:14px;font-weight:700}\n.msq-bar-chapter{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n.msq-bar-time{flex:0 0 auto;font-variant-numeric:tabular-nums;color:#4A5560;font-size:.9em}\n.msq-bar-rate,.msq-bar-close{flex:0 0 auto;border:1px solid #CBD8E6;background:#fff;color:#1B1F24;font:inherit;font-size:.85em;line-height:1;border-radius:8px;padding:7px 9px;cursor:pointer}\n.msq-bar-close::before{content:'\u2715'}\n.msq-bar.msq-bar-pill{left:auto;right:14px;bottom:14px;padding:6px;padding-bottom:6px;border:1px solid #CBD8E6;border-radius:999px;box-shadow:0 6px 20px rgba(0,0,0,.15)}\n.msq-bar.msq-bar-pill .msq-bar-chapter,.msq-bar.msq-bar-pill .msq-bar-time,.msq-bar.msq-bar-pill .msq-bar-rate{display:none}\nbody.msq-has-bar{padding-bottom:76px}\n@media (max-width:600px){.msq-bar-time{display:none}.msq-bar{gap:8px;padding-left:10px;padding-right:10px}}\n.msq-s.msq-now{background:#EEF3F8;box-shadow:0 2px 0 #1F4E79;border-radius:2px}\ntr.msq-now td,tr.msq-now th{background:#EEF3F8;box-shadow:inset 0 -2px 0 #1F4E79}\n@media (hover:hover){.msq-s,tr[data-i]{cursor:pointer}.msq-s:hover{background:#EEF3F8}}<\/style>\n<script type=\"application\/ld+json\">{\"@context\":\"https:\/\/schema.org\",\"@type\":\"AudioObject\",\"@id\":\"https:\/\/getbitcoin.guide\/articles\/multisig-for-one-person\/#audio\",\"name\":\"Multisig Wallet for One Person: What 2 of 3 Really Costs, read aloud\",\"description\":\"Synthetic voice reading of the article, recorded 6 October 2026.\",\"contentUrl\":\"https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/multisig-for-one-person-audio-202610061515.mp3\",\"encodingFormat\":\"audio\/mpeg\",\"duration\":\"PT14M44S\",\"uploadDate\":\"2026-10-06\",\"inLanguage\":\"en-GB\",\"isAccessibleForFree\":true,\"mainEntityOfPage\":\"https:\/\/getbitcoin.guide\/articles\/multisig-for-one-person\/\",\"hasPart\":[{\"@type\":\"Clip\",\"name\":\"Multisig Wallet for One Person: What 2 of 3 Really Costs\",\"startOffset\":0,\"endOffset\":41},{\"@type\":\"Clip\",\"name\":\"What does a 2 of 3 multisig wallet actually protect against?\",\"startOffset\":41,\"endOffset\":136,\"url\":\"https:\/\/getbitcoin.guide\/articles\/multisig-for-one-person\/#what-does-a-2-of-3-multisig-wallet-actually-protect-against\"},{\"@type\":\"Clip\",\"name\":\"Why are two of your three seeds not enough to recover?\",\"startOffset\":136,\"endOffset\":275,\"url\":\"https:\/\/getbitcoin.guide\/articles\/multisig-for-one-person\/#why-are-two-of-your-three-seeds-not-enough-to-recover\"},{\"@type\":\"Clip\",\"name\":\"How do you build a 2 of 3 multisig wallet step by step?\",\"startOffset\":275,\"endOffset\":410,\"url\":\"https:\/\/getbitcoin.guide\/articles\/multisig-for-one-person\/#how-do-you-build-a-2-of-3-multisig-wallet-step-by-step\"},{\"@type\":\"Clip\",\"name\":\"What do people who set this up report going wrong?\",\"startOffset\":410,\"endOffset\":596,\"url\":\"https:\/\/getbitcoin.guide\/articles\/multisig-for-one-person\/#what-do-people-who-set-this-up-report-going-wrong\"},{\"@type\":\"Clip\",\"name\":\"Which multisig coordinator software is still maintained?\",\"startOffset\":596,\"endOffset\":734,\"url\":\"https:\/\/getbitcoin.guide\/articles\/multisig-for-one-person\/#which-multisig-coordinator-software-is-still-maintained\"},{\"@type\":\"Clip\",\"name\":\"What happens to a multisig wallet when you die?\",\"startOffset\":734,\"endOffset\":828,\"url\":\"https:\/\/getbitcoin.guide\/articles\/multisig-for-one-person\/#what-happens-to-a-multisig-wallet-when-you-die\"},{\"@type\":\"Clip\",\"name\":\"So who is a 2 of 3 actually for?\",\"startOffset\":828,\"endOffset\":884,\"url\":\"https:\/\/getbitcoin.guide\/articles\/multisig-for-one-person\/#so-who-is-a-2-of-3-actually-for\"}],\"contentSize\":\"6.2 MB\"}<\/script>\n<p class=\"msq-audio-lead\"><strong>Listen to this article<\/strong>, about 15 minutes. A synthetic voice reads the article and announces each section title as it begins; tables are read row by row and the questions at the end are left out.<\/p>\n<audio class=\"msq-audio-player\" controls preload=\"metadata\" src=\"https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/multisig-for-one-person-audio-202610061515.mp3\"><\/audio>\n<nav class=\"msq-toc\" aria-label=\"In this article\"><p class=\"msq-toc-title\">In this article<\/p>\n<ol>\n<li data-start=\"0.0\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"0.0\" aria-label=\"Play from: Multisig Wallet for One Person: What 2 of 3 Really Costs\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">0:00<\/span><a href=\"#top\">Multisig Wallet for One Person: What 2 of 3 Really Costs<\/a><\/li>\n<li data-start=\"40.62\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"40.62\" aria-label=\"Play from: What does a 2 of 3 multisig wallet actually protect against?\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">0:41<\/span><a href=\"#what-does-a-2-of-3-multisig-wallet-actually-protect-against\">What does a 2 of 3 multisig wallet actually protect against?<\/a><\/li>\n<li data-start=\"136.08\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"136.08\" aria-label=\"Play from: Why are two of your three seeds not enough to recover?\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">2:16<\/span><a href=\"#why-are-two-of-your-three-seeds-not-enough-to-recover\">Why are two of your three seeds not enough to recover?<\/a><\/li>\n<li data-start=\"274.54\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"274.54\" aria-label=\"Play from: How do you build a 2 of 3 multisig wallet step by step?\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">4:35<\/span><a href=\"#how-do-you-build-a-2-of-3-multisig-wallet-step-by-step\">How do you build a 2 of 3 multisig wallet step by step?<\/a><\/li>\n<li data-start=\"410.4\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"410.4\" aria-label=\"Play from: What do people who set this up report going wrong?\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">6:50<\/span><a href=\"#what-do-people-who-set-this-up-report-going-wrong\">What do people who set this up report going wrong?<\/a><\/li>\n<li data-start=\"595.9\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"595.9\" aria-label=\"Play from: Which multisig coordinator software is still maintained?\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">9:56<\/span><a href=\"#which-multisig-coordinator-software-is-still-maintained\">Which multisig coordinator software is still maintained?<\/a><\/li>\n<li data-start=\"733.72\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"733.72\" aria-label=\"Play from: What happens to a multisig wallet when you die?\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">12:14<\/span><a href=\"#what-happens-to-a-multisig-wallet-when-you-die\">What happens to a multisig wallet when you die?<\/a><\/li>\n<li data-start=\"828.34\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"828.34\" aria-label=\"Play from: So who is a 2 of 3 actually for?\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">13:48<\/span><a href=\"#so-who-is-a-2-of-3-actually-for\">So who is a 2 of 3 actually for?<\/a><\/li>\n<\/ol><\/nav>\n<p class=\"msq-audio-note\">Recorded 6 October 2026 from the article as published that day. Press a chapter to jump there; the highlighted line is what is playing. A play button sits beside every section heading, and once you scroll past this player a bar at the bottom of the screen keeps the controls in reach. Tap or click any sentence to hear the reading start from there.<\/p>\n<script>var MSQ_SENT = [[0.0,\"h\",\"multisigwalletforonepers\",45],[3.72,\"p\",\"amultisigwalletforoneper\",80],[11.16,\"p\",\"itremovesyoursingleseedp\",132],[20.16,\"p\",\"onthispagea2of3tracedste\",261],[40.62,\"h\",\"whatdoesa2of3multisigwal\",49],[44.38,\"p\",\"fourthingsanditisworthbe\",48],[49.3,\"p\",\"athiefwhofindsoneseedbac\",38],[52.5,\"p\",\"afirethattakesonebackupl\",39],[54.9,\"p\",\"somebodystandingoveryouw\",56],[59.22,\"p\",\"andaflawinonemanufacture\",206],[72.1,\"p\",\"thatfourthonestoppedbein\",46],[74.58,\"p\",\"on1august2026coinkitepub\",217],[97.58,\"p\",\"anyonewhohadbuilta2of3ou\",81],[104.34,\"p\",\"aquorumdoesnothelpwhenth\",47],[107.98,\"p\",\"theadvisoryitselfiscover\",49],[111.82,\"p\",\"what2of3doesnotdoprotect\",113],[119.5,\"p\",\"trezorsownpagesaysplainl\",113],[127.42,\"p\",\"thatisthecompanysellingy\",118],[136.08,\"h\",\"whyaretwoofyourthreeseed\",43],[139.32,\"p\",\"becauseaseedphraseisapri\",71],[144.68,\"p\",\"therulelivesinthewalletc\",154],[155.32,\"p\",\"coldcardsmultisigdocumen\",175],[170.48,\"p\",\"scopemattershereandthetw\",72],[175.92,\"p\",\"coldcardsown2of3guidetak\",164],[187.0,\"p\",\"botharetrueatdifferentsc\",64],[191.28,\"p\",\"withonlytwoofyourthreese\",105],[199.16,\"p\",\"trezorsaysitfromtheother\",111],[207.0,\"p\",\"thedescriptoristheotherh\",73],[212.44,\"p\",\"twostandardsexistsononeo\",45],[215.44,\"p\",\"bip48multiscripthierarch\",171],[231.48,\"p\",\"scripttypetwomeansnative\",111],[245.96,\"p\",\"bip129bitcoinsecuremulti\",384],[274.54,\"h\",\"howdoyoubuilda2of3multis\",42],[278.22,\"p\",\"theairgappedversiontrace\",126],[286.9,\"p\",\"nostephereasksyoutotypea\",50],[291.66,\"p\",\"exportthreepublickeys\",21],[294.22,\"p\",\"oneachdevicesettingsmult\",75],[302.42,\"p\",\"failurepointadifferentac\",104],[310.02,\"p\",\"createthewalletononedevi\",26],[312.38,\"p\",\"multisigwalletscreateair\",67],[319.02,\"p\",\"failurepointacceptingthe\",110],[326.42,\"p\",\"registeritontheothertwo\",23],[328.1,\"p\",\"importfromfileoneachrema\",35],[331.1,\"p\",\"failurepointskippingthis\",82],[336.7,\"p\",\"loadthecoordinator\",18],[338.34,\"p\",\"insparrowfileimportwalle\",51],[343.66,\"p\",\"itholdsnoprivatekeysonly\",80],[349.46,\"p\",\"verifyrehearsethenfund\",22],[352.1,\"p\",\"comparereceivingaddressz\",90],[358.1,\"p\",\"coinkiteputsitinonelinef\",132],[367.26,\"p\",\"thenbackupthedescriptoro\",50],[370.94,\"p\",\"sparrowsayskeepthedevice\",131],[381.46,\"p\",\"dothatarithmeticbeforeyo\",51],[385.06,\"p\",\"asinglesignaturewalletas\",70],[390.98,\"p\",\"a2of3asksforthreedevices\",125],[401.38,\"p\",\"ninethingsinthreeplacesf\",49],[406.06,\"p\",\"thatnumberappearsonnoneo\",52],[410.4,\"h\",\"whatdopeoplewhosetthisup\",40],[413.52,\"p\",\"sixdatedpublicaccountsfi\",138],[423.04,\"p\",\"theyaretestimonynotevide\",111],[431.08,\"p\",\"october2025thedescriptor\",42],[435.12,\"p\",\"fivefriendsona3of5foundn\",86],[442.64,\"p\",\"theextendedpublickeysint\",88],[448.56,\"p\",\"issue1856closed\",15],[450.72,\"p\",\"february2026thecablepull\",38],[454.6,\"p\",\"ona3of5walletoneledgerna\",140],[465.64,\"p\",\"firmwareupdatesandahardw\",97],[472.24,\"p\",\"issue1940\",9],[474.2,\"p\",\"september2026thepassphra\",39],[478.28,\"p\",\"sparrow254withjadefirmwa\",127],[490.64,\"p\",\"singlesignatureworkedfin\",25],[493.2,\"p\",\"issue2072\",9],[495.36,\"p\",\"thatdeviceisreviewedinth\",47],[498.64,\"p\",\"august2026theorderofthek\",27],[501.68,\"p\",\"anopenreportthatexported\",81],[507.04,\"p\",\"thereportersreasonforcar\",97],[513.92,\"p\",\"issue2054stillopen\",18],[516.4,\"p\",\"february2025arequestford\",39],[520.28,\"p\",\"afeaturerequestfordescri\",135],[529.32,\"p\",\"issue1640closedwithoutth\",32],[532.16,\"p\",\"november2023tomarch2024f\",44],[537.64,\"p\",\"aholderwhobelievedtheyha\",140],[547.88,\"p\",\"thecoinsmovedintheend\",21],[549.84,\"p\",\"bitcointalkthread5472462\",24],[555.16,\"p\",\"thepatternisconsistentan\",66],[559.8,\"p\",\"notoneisacryptographyfai\",49],[564.0,\"p\",\"allsixareconfigurationde\",125],[573.16,\"p\",\"thatagreeswiththeofficia\",92],[579.72,\"p\",\"wheretheaccountspartfrom\",98],[586.84,\"p\",\"thehonestrangeisthatfive\",123],[595.9,\"h\",\"whichmultisigcoordinator\",49],[599.62,\"p\",\"thecoordinatorholdsthede\",75],[604.7,\"p\",\"itneverholdsakeywhichmak\",115],[613.02,\"p\",\"releasehistoriesreadon6o\",34],[616.66,\"t\",\"sparrowwallet\",67],[625.9,\"t\",\"specterdesktop\",87],[637.78,\"t\",\"caravan\",83],[646.62,\"p\",\"allthreearealive\",16],[648.3,\"p\",\"electrumandnunchukalsoco\",144],[658.26,\"p\",\"onethingthecomparisonpag\",83],[664.02,\"p\",\"trezorstatesthattrezorsu\",107],[670.98,\"p\",\"ledgerpublishesinstructi\",93],[676.9,\"p\",\"soa2of3isnotthreedevices\",24],[679.62,\"p\",\"itisthreedevicesplusafou\",80],[684.98,\"t\",\"trezor\",112],[697.66,\"t\",\"ledger\",101],[706.22,\"t\",\"coldcard\",184],[722.02,\"t\",\"blockstreamjade\",114],[733.72,\"h\",\"whathappenstoamultisigwa\",38],[736.48,\"p\",\"thisisthequestionthattur\",149],[746.56,\"p\",\"yourheirsneedtwoofthethr\",95],[753.24,\"p\",\"twoseedsinasafeandnodesc\",48],[757.24,\"p\",\"itisajigsawwithamissingp\",38],[760.8,\"p\",\"thestandardthathelpsisbi\",133],[771.92,\"p\",\"thatlastfieldisthepartan\",111],[779.52,\"p\",\"nunchukwhichbuildsacomme\",207],[794.4,\"p\",\"whetherapaidservicesuits\",68],[798.52,\"p\",\"thehonestversionofthesel\",161],[808.84,\"p\",\"eitherwaytheinstructions\",143],[817.4,\"p\",\"arehearsalyoufailischeap\",24],[819.84,\"p\",\"oneyourheirsfailisnot\",21],[822.24,\"p\",\"speaktoaqualifiedprofess\",76],[828.34,\"h\",\"sowhoisa2of3actuallyfor\",23],[830.86,\"p\",\"ontheevidenceabovesomebo\",267],[850.1,\"p\",\"sparrowputsthatattheexpe\",94],[856.66,\"p\",\"ifanyofthosefourisamaybe\",57],[861.7,\"p\",\"awellkeptsinglesignature\",140],[871.3,\"p\",\"stillworkingoutwhatyouar\",42],[873.98,\"p\",\"thecoldstorageexplainera\",152]];\n(function(){\n  function init(){\n  var root = document.querySelector('.msq-audio'); if (!root) { return; }\n  var audio = root.querySelector('audio'), items = Array.prototype.slice.call(root.querySelectorAll('.msq-toc li'));\n  var starts = items.map(function(li){ return parseFloat(li.getAttribute('data-start')) || 0; });\n  var names = items.map(function(li){ return li.querySelector('a').textContent; });\n  var anchors = items.map(function(li){ var h = li.querySelector('a').getAttribute('href') || ''; return (h.charAt(0) === '#' && h !== '#top') ? document.getElementById(h.slice(1)) : null; });\n  var article = root.getAttribute('data-article') || location.pathname, minutes = root.getAttribute('data-minutes') || '';\n  var marks = {}, started = false, pausedAt = -1, closed = false, ended = false;\n  var RATES = [1, 1.25, 1.5], rate = 1;\n  try { var saved = parseFloat(localStorage.getItem('msq-audio-rate')); if (RATES.indexOf(saved) >= 0) { rate = saved; } } catch (e) {}\n  audio.playbackRate = rate;\n  function track(name, extra){ try { if (typeof gtag === 'function') { var p = { article: article }; for (var k in extra) { p[k] = extra[k]; } gtag('event', name, p); } } catch (e) {} }\n  function current(){ var t = audio.currentTime, idx = 0; for (var i = 0; starts.length > i; i += 1) { if (t + 0.25 >= starts[i]) { idx = i; } } return idx; }\n  function onScreen(){\n    var line = window.innerHeight \/ 3, idx = 0;\n    for (var i = 0; anchors.length > i; i += 1) { var el = anchors[i]; if (el && line >= el.getBoundingClientRect().top) { idx = i; } }\n    return idx;\n  }\n  function fmt(s){ s = Math.max(0, Math.round(s || 0)); var m = Math.floor(s \/ 60), r = s % 60; return m + ':' + (10 > r ? '0' : '') + r; }\n  function play(from, source){\n    if (from !== null) { audio.currentTime = from; }\n    var p = audio.play(); if (p && p.catch) { p.catch(function(){}); }\n    track(from === null ? 'audio_resume' : 'audio_chapter', { chapter: names[current()], start: Math.round(audio.currentTime), source: source });\n  }\n  var hbtns = anchors.map(function(el, i){\n    if (!el) { return null; }\n    var b = document.createElement('button'); b.type = 'button'; b.className = 'msq-hplay'; b.setAttribute('aria-label', 'Play this section: ' + names[i]);\n    b.addEventListener('click', function(){\n      if (!audio.paused && current() === i) { audio.pause(); track('audio_pause', { source: 'heading' }); return; }\n      play(starts[i], 'heading');\n    });\n    el.appendChild(b); return b;\n  });\n  var bar = document.createElement('div'); bar.className = 'msq-bar msq-bar-pill is-hidden'; bar.setAttribute('role', 'region'); bar.setAttribute('aria-label', 'Audio player');\n  var playBtn = document.createElement('button'); playBtn.type = 'button'; playBtn.className = 'msq-bar-play';\n  var icon = document.createElement('span'); icon.className = 'msq-bar-icon'; icon.setAttribute('aria-hidden', 'true');\n  var label = document.createElement('span'); label.className = 'msq-bar-label';\n  playBtn.appendChild(icon); playBtn.appendChild(label);\n  var chap = document.createElement('span'); chap.className = 'msq-bar-chapter';\n  var clock = document.createElement('span'); clock.className = 'msq-bar-time';\n  var rateBtn = document.createElement('button'); rateBtn.type = 'button'; rateBtn.className = 'msq-bar-rate'; rateBtn.setAttribute('aria-label', 'Playback speed');\n  var closeBtn = document.createElement('button'); closeBtn.type = 'button'; closeBtn.className = 'msq-bar-close'; closeBtn.setAttribute('aria-label', 'Close the audio bar');\n  bar.appendChild(playBtn); bar.appendChild(chap); bar.appendChild(clock); bar.appendChild(rateBtn); bar.appendChild(closeBtn);\n  document.body.appendChild(bar);\n  function showRate(){ rateBtn.textContent = (rate === 1 ? '1' : String(rate)) + 'x'; }\n  showRate();\n  rateBtn.addEventListener('click', function(){\n    rate = RATES[(RATES.indexOf(rate) + 1) % RATES.length]; audio.playbackRate = rate; showRate();\n    try { localStorage.setItem('msq-audio-rate', String(rate)); } catch (e) {}\n    track('audio_rate', { rate: rate });\n  });\n  closeBtn.addEventListener('click', function(){\n    closed = true; if (!audio.paused) { audio.pause(); } paint(); track('audio_bar_close', {});\n  });\n  function mode(){\n    if (!audio.paused) { return 'pause'; }\n    if (ended) { return 'again'; }\n    if (!started) { return 'listen'; }\n    return (pausedAt === onScreen()) ? 'resume' : 'section';\n  }\n  playBtn.addEventListener('click', function(){\n    var m = mode();\n    if (m === 'pause') { audio.pause(); track('audio_pause', { source: 'bar' }); return; }\n    if (m === 'again') { ended = false; play(0, 'bar'); return; }\n    if (m === 'resume') { play(null, 'bar'); return; }\n    play(starts[onScreen()], 'bar');\n  });\n  function paint(){\n    var idx = current(), playing = !audio.paused, m = mode();\n    items.forEach(function(li, i){\n      var on = (i === idx) && playing, b = li.querySelector('.msq-toc-play'), a = li.querySelector('a');\n      li.classList.toggle('is-active', on); b.classList.toggle('is-playing', on);\n      b.textContent = on ? '\u2016' : '\u25b6\ufe0e';\n      b.setAttribute('aria-label', (on ? 'Pause: ' : 'Play from: ') + a.textContent);\n    });\n    hbtns.forEach(function(b, i){ if (b) { var on = (i === idx) && playing; b.classList.toggle('is-playing', on); b.setAttribute('aria-label', (on ? 'Pause this section: ' : 'Play this section: ') + names[i]); } });\n    playBtn.classList.toggle('is-playing', playing);\n    label.textContent = m === 'pause' ? 'Pause' : m === 'again' ? 'Play again' : m === 'resume' ? 'Resume' : m === 'section' ? 'Play this section' : 'Listen, ' + minutes + ' min';\n    playBtn.setAttribute('aria-label', label.textContent);\n    chap.textContent = started ? names[(playing || m === 'resume') ? idx : onScreen()] : '';\n    clock.textContent = started ? fmt(audio.currentTime) + ' \/ ' + fmt(audio.duration) : '';\n    bar.classList.toggle('msq-bar-pill', !started);\n    var show = !closed && (started || 0 > root.getBoundingClientRect().bottom);\n    bar.classList.toggle('is-hidden', !show);\n    document.body.classList.toggle('msq-has-bar', show);\n  }\n  root.addEventListener('click', function(e){\n    var b = e.target.closest ? e.target.closest('.msq-toc-play') : null; if (!b) { return; }\n    var li = b.parentNode, s = parseFloat(b.getAttribute('data-start')) || 0;\n    if (!audio.paused && current() === items.indexOf(li)) { audio.pause(); track('audio_pause', { source: 'index' }); return; }\n    play(s, 'index');\n  });\n  audio.addEventListener('play', function(){ ended = false; closed = false; if (!started) { started = true; track('audio_play', { minutes: Math.round((audio.duration || 0) \/ 60) }); } paint(); });\n  audio.addEventListener('pause', function(){ pausedAt = current(); paint(); });\n  audio.addEventListener('timeupdate', function(){\n    paint();\n    if (audio.duration > 0) {\n      var pct = Math.floor(audio.currentTime \/ audio.duration * 100);\n      [25, 50, 75].forEach(function(m){ if (pct >= m && !marks[m]) { marks[m] = true; track('audio_progress', { percent: m }); } });\n    }\n  });\n  audio.addEventListener('ended', function(){ ended = true; track('audio_complete', {}); paint(); });\n  var ticking = false;\n  function onScroll(){ if (ticking) { return; } ticking = true; setTimeout(function(){ ticking = false; paint(); }, 80); }\n  window.addEventListener('scroll', onScroll, { passive: true }); window.addEventListener('resize', onScroll);\n  paint();\n  }\n  if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', init); } else { init(); }\n})();\n\n(function(){\n  function start(){\n    var root = document.querySelector('.msq-audio'), audio = root ? root.querySelector('audio') : null;\n    var map = (typeof MSQ_SENT !== 'undefined') ? MSQ_SENT : [];\n    if (!root || !audio || !map.length) { return; }\n    var scope = root.closest('main') || root.closest('article') || root.closest('.entry-content') || document.body;\n    var SKIP = '.msq-audio,.msq,.msq-tool,.msq-end,.msq-bar,script,style,noscript,figcaption,#rank-math-faq,.rank-math-block,nav,header,footer';\n    function norm(s){ return s.toLowerCase().replace(\/[^a-z0-9]+\/g, ''); }\n    var nodes = [], stream = '', walker = document.createTreeWalker(scope, NodeFilter.SHOW_TEXT, null), n;\n    while ((n = walker.nextNode())) {\n      var el = n.parentElement; if (!el || el.closest(SKIP)) { continue; }\n      var raw = n.nodeValue, keep = [], norms = '';\n      for (var i = 0; raw.length > i; i += 1) { var c = raw.charAt(i).toLowerCase(); if (\/[a-z0-9]\/.test(c)) { keep.push(i); norms += c; } }\n      if (!norms) { continue; }\n      nodes.push({ node: n, a: stream.length, b: stream.length + norms.length, keep: keep });\n      stream += norms;\n    }\n    var segs = [], cursor = 0, lastRow = null;\n    map.forEach(function(m, idx){\n      var kind = m[1], f = m[2], len = m[3];\n      if (kind === 't') {\n        var rows = scope.querySelectorAll('tr'), after = !lastRow;\n        for (var r = 0; rows.length > r; r += 1) {\n          var tr = rows[r];\n          if (!after) { if (tr === lastRow) { after = true; } continue; }\n          var cell = tr.querySelector('td,th');\n          if (cell && norm(cell.textContent).indexOf(f) === 0) { tr.setAttribute('data-i', idx); lastRow = tr; break; }\n        }\n        return;\n      }\n      var p = stream.indexOf(f, cursor); if (0 > p) { return; }\n      segs.push({ i: idx, a: p, b: Math.min(p + len, stream.length) }); cursor = p + len;\n    });\n    var si = 0;\n    nodes.forEach(function(nd){\n      var frag = document.createDocumentFragment(), raw = nd.node.nodeValue, rawPos = 0, any = false;\n      for (var k = si; segs.length > k; k += 1) {\n        var sg = segs[k]; if (sg.a >= nd.b) { break; } if (nd.a >= sg.b) { continue; }\n        var s = Math.max(sg.a, nd.a), e = Math.min(sg.b, nd.b);\n        var rs = nd.keep[s - nd.a], re2 = nd.keep[e - nd.a - 1] + 1;\n        if (rs > rawPos) { frag.appendChild(document.createTextNode(raw.slice(rawPos, rs))); }\n        var span = document.createElement('span'); span.className = 'msq-s'; span.setAttribute('data-i', sg.i); span.textContent = raw.slice(rs, re2);\n        frag.appendChild(span); rawPos = re2; any = true;\n        if (sg.b > nd.b) { break; }\n      }\n      while (segs.length > si && nd.b >= segs[si].b) { si += 1; }\n      if (!any) { return; }\n      if (raw.length > rawPos) { frag.appendChild(document.createTextNode(raw.slice(rawPos))); }\n      nd.node.parentNode.replaceChild(frag, nd.node);\n    });\n    var starts = map.map(function(m){ return m[0]; }), curIdx = -1, lastUser = 0, timer = null, autoUntil = 0, dragging = false;\n    function idxAt(t){ var lo = 0, hi = starts.length; while (hi > lo + 1) { var mid = (lo + hi) >> 1; if (t + 0.15 >= starts[mid]) { lo = mid; } else { hi = mid; } } return (t + 0.15 >= starts[0]) ? lo : -1; }\n    function setNow(i){\n      if (i === curIdx) { return; }\n      Array.prototype.forEach.call(scope.querySelectorAll('.msq-now'), function(el){ el.classList.remove('msq-now'); });\n      curIdx = i; if (0 > i) { return; }\n      var els = scope.querySelectorAll('[data-i=\"' + i + '\"]'); if (!els.length) { return; }\n      Array.prototype.forEach.call(els, function(el){ el.classList.add('msq-now'); });\n      var r = els[0].getBoundingClientRect(), now = Date.now();\n      if (!dragging && now > lastUser + 2500 && (80 > r.top || r.bottom > window.innerHeight - 140)) {\n        var reduce = window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n        autoUntil = now + (reduce ? 400 : 1600);\n        els[0].scrollIntoView({ block: 'center', behavior: reduce ? 'auto' : 'smooth' });\n      }\n    }\n    function tick(){ if (!audio.paused) { setNow(idxAt(audio.currentTime)); } }\n    function userScrolled(){ lastUser = Date.now(); }\n    ['wheel', 'touchmove', 'keydown'].forEach(function(ev){ window.addEventListener(ev, userScrolled, { passive: true }); });\n    window.addEventListener('scroll', function(){ if (Date.now() > autoUntil) { userScrolled(); } }, { passive: true });\n    window.addEventListener('mousedown', function(e){ if (e.clientX >= document.documentElement.clientWidth) { dragging = true; userScrolled(); } }, { passive: true });\n    window.addEventListener('mouseup', function(){ if (dragging) { dragging = false; userScrolled(); } }, { passive: true });\n    audio.addEventListener('play', function(){ if (timer) { clearInterval(timer); } timer = setInterval(tick, 150); tick(); });\n    audio.addEventListener('pause', function(){ if (timer) { clearInterval(timer); timer = null; } });\n    scope.addEventListener('click', function(e){\n      if (e.target.closest('a, button, input, select, textarea, label, summary, .msq, .msq-tool, .msq-end, .msq-audio, .msq-bar')) { return; }\n      var sel = window.getSelection ? String(window.getSelection()) : '';\n      if (sel && sel.trim()) { return; }\n      var el = e.target.closest('[data-i]'); if (!el) { return; }\n      var i = parseInt(el.getAttribute('data-i'), 10); if (isNaN(i)) { return; }\n      if (!audio.paused && i === curIdx) { return; }\n      lastUser = Date.now();\n      audio.currentTime = starts[i];\n      var p = audio.play(); if (p && p.catch) { p.catch(function(){}); }\n      try { if (typeof gtag === 'function') { gtag('event', 'audio_chapter', { article: location.pathname, source: 'sentence', start: Math.round(starts[i]) }); } } catch (err) {}\n    });\n    audio.addEventListener('seeked', tick);\n    audio.addEventListener('ended', function(){ setNow(-1); });\n  }\n  if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', start); } else { start(); }\n})();<\/script>\n<\/div>\n\n\n\n<p class=\"msq-hook wp-block-paragraph\">On this page: a 2 of 3 traced step by step through Coinkite&#8217;s own airgap documentation with the failure point named at each stage, the descriptor arithmetic that comes to nine things in three places, the release dates of three coordinators read on 6 October 2026, and six dated public accounts of what actually went wrong.<\/p>\n\n\n\n<div class=\"msq\" id=\"ms-quiz\" data-slug=\"multisig-for-one-person\" data-category=\"self custody\" data-list=\"1\">\n<style>.msq,.msq-hook,.msq-box,.msq-end,.msq-tool{--msq-accent:#1F4E79;--msq-accent-text:#FFFFFF;--msq-line:#CBD8E6;--msq-warn:#B4531A;--msq-muted:#4A5560;--msq-tint:#EEF3F8;--msq-base:#FFFFFF}\n.msq{margin:1.25em 0 1.75em}\n.msq-hook{border-left:3px solid var(--msq-accent);padding:6px 14px;color:var(--msq-muted);font-size:.97em}\n.msq-box{background:var(--msq-tint);border:1px solid var(--msq-line);border-radius:12px;padding:0}\n.msq-box>summary{cursor:pointer;list-style:none;padding:14px 18px;font-weight:700;color:var(--msq-accent)}\n.msq-box>summary::-webkit-details-marker{display:none}\n.msq-box>summary::before{content:\"+\";display:inline-block;width:1.1em;font-weight:800}\n.msq-box[open]>summary::before{content:\"\\00d7\"}\n.msq-body{padding:2px 18px 18px}\n.msq-intro{margin:0 0 12px;font-size:.95em;color:var(--msq-muted)}\n.msq-list{margin:0;padding:0;list-style:none}\n.msq-q{margin:0 0 18px;padding:0}\n.msq-question{font-weight:700;margin:0 0 8px}\n.msq-options{display:flex;flex-direction:column;gap:8px}\n.msq-opt{text-align:left;background:var(--msq-base);border:1px solid var(--msq-line);border-radius:8px;padding:10px 12px;font:inherit;font-size:.95em;color:inherit;cursor:pointer;line-height:1.35}\n.msq-opt:hover{border-color:var(--msq-accent)}\n.msq-opt[disabled]{cursor:default}\n.msq-opt.is-right{border-color:var(--msq-accent);background:var(--msq-line);font-weight:700}\n.msq-opt.is-wrong{border-color:var(--msq-warn);color:var(--msq-warn)}\n.msq-explain{margin:8px 0 0;font-size:.92em;padding:10px 12px;border-left:3px solid var(--msq-accent);background:var(--msq-base);border-radius:0 8px 8px 0}\n.msq-explain[hidden]{display:none}\n.msq-verdict{font-weight:700}\n.msq-result{margin-top:14px;padding:14px 16px;background:var(--msq-base);border:1px solid var(--msq-line);border-radius:10px}\n.msq-result[hidden]{display:none}\n.msq-result h3{margin:0 0 6px;font-size:1.1em}\n.msq-result p{margin:0 0 8px}\n.msq-jump{margin:0 0 8px;padding-left:1.2em}\n.msq-form{margin-top:10px;display:flex;flex-wrap:wrap;gap:8px;align-items:center}\n.msq-form input[type=email]{flex:1 1 220px;padding:10px 12px;border:1px solid var(--msq-muted);border-radius:8px;font:inherit;background:#fff}\n.msq-btn{background:var(--msq-accent);color:var(--msq-accent-text);border:0;border-radius:8px;padding:11px 18px;font:inherit;font-weight:700;cursor:pointer}\n.msq-btn:hover{filter:brightness(.92)}\n.msq-btn[disabled]{opacity:.7;cursor:default}\n.msq-no{font-size:.9em;color:var(--msq-muted);margin-left:4px}\n.msq-privacy{margin:6px 0 0;font-size:.82em;color:var(--msq-muted);flex-basis:100%}\n.msq-hp{position:absolute;left:-5000px;width:1px;height:1px;overflow:hidden}\n.msq-msg{margin:8px 0 0;font-size:.92em}\n.msq-end{margin:1.5em 0;padding:18px;border:1px solid var(--msq-accent);border-radius:12px;text-align:center;background:var(--msq-tint)}\n.msq-end p{margin:0 0 12px}\n.msq-end .msq-body{text-align:left;padding:16px 0 0}\n.msq-end .msq-start-test[hidden]{display:none}\n.msq-tool{margin:1.5em 0;padding:18px 20px;background:var(--msq-tint);border:1px solid var(--msq-line);border-radius:12px}\n.msq-tool h3{margin:0 0 6px;font-size:1.15em}\n.msq-tool p{margin:0 0 10px}\n.msq-tool .msq-note{font-size:.85em;color:var(--msq-muted);margin:10px 0 0}\n.msq-check label{display:flex;gap:10px;align-items:flex-start;padding:9px 0;border-bottom:1px solid var(--msq-line);cursor:pointer;line-height:1.4}\n.msq-check label:last-of-type{border-bottom:0}\n.msq-check input{margin-top:5px;flex:0 0 auto;width:18px;height:18px;accent-color:var(--msq-accent)}\n.msq-check-count{font-weight:700;margin:10px 0 0}\n.msq-verdict-box{margin:12px 0 0;padding:10px 14px;border-radius:8px;background:var(--msq-base);border-left:3px solid var(--msq-warn)}\n.msq-verdict-box[hidden]{display:none}\n.msq-calc{display:grid;grid-template-columns:1fr 1fr;gap:10px 16px}\n.msq-calc label{display:flex;flex-direction:column;gap:4px;font-size:.92em}\n.msq-calc input,.msq-calc select{padding:8px 10px;border:1px solid var(--msq-muted);border-radius:8px;font:inherit;background:#fff}\n.msq-calc-out{grid-column:1 \/ -1;margin-top:6px;padding:12px 14px;background:var(--msq-base);border-radius:8px;border:1px solid var(--msq-line)}\n.msq-calc-out strong{font-size:1.15em}\n.msq-choose label{display:block;padding:9px 12px;margin:0 0 8px;background:var(--msq-base);border:1px solid var(--msq-line);border-radius:8px;cursor:pointer}\n.msq-choose input{margin-right:8px;accent-color:var(--msq-accent)}\n.msq-choice-result{margin-top:10px;padding:12px 14px;background:var(--msq-base);border-left:3px solid var(--msq-accent);border-radius:0 8px 8px 0}\n.msq-choice-result[hidden]{display:none}\n@media (max-width:600px){.msq-calc{grid-template-columns:1fr}}\nh2.wp-block-heading[id]{scroll-margin-top:24px}<\/style>\n<noscript><style>.msq-explain{display:block !important}<\/style><\/noscript>\n<details class=\"msq-box\">\n<summary>Think you already know this? Five questions, one minute.<\/summary>\n<div class=\"msq-body\">\n<p class=\"msq-intro\">Every answer is on this page. Answer from what you know now; the page fills in the rest.<\/p>\n<ol class=\"msq-list\">\n<li class=\"msq-q\" data-q=\"1\" data-answer=\"a\" data-title=\"What does a 2 of 3 multisig wallet actually protect against?\" data-section=\"#what-does-a-2-of-3-multisig-wallet-actually-protect-against\">\n<p class=\"msq-question\">1. Coinkite&#8217;s August 2026 advisory put the entropy of affected Mk2 and Mk3 seeds at roughly what, against the 128 bits expected?<\/p>\n<div class=\"msq-options\" role=\"group\" aria-label=\"Question 1 options\"><button type=\"button\" class=\"msq-opt\" data-opt=\"a\">About 40 bits<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"b\">About 96 bits<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"c\">About 127 bits<\/button><\/div>\n<p class=\"msq-explain\" hidden><span class=\"msq-verdict\"><\/span><a href=\"https:\/\/blog.coinkite.com\/coldcard-mk3-seed-generation-warning\/\" target=\"_blank\" rel=\"noopener\">The Coinkite advisory<\/a> puts Mk2 and Mk3 seeds made on firmware 4.0.1 through 4.1.9 at roughly 40 bits, and Mk4, Mk5 and Q seeds made before the fixed releases at about 72. A quorum built from three devices of the same affected model does not dilute that. <a class=\"msq-section\" href=\"#what-does-a-2-of-3-multisig-wallet-actually-protect-against\">Read the section<\/a><\/p>\n<\/li>\n<li class=\"msq-q\" data-q=\"2\" data-answer=\"b\" data-title=\"Why are two of your three seeds not enough to recover?\" data-section=\"#why-are-two-of-your-three-seeds-not-enough-to-recover\">\n<p class=\"msq-question\">2. Besides the seed words, what does a wallet need to know before it can rebuild a multisig wallet?<\/p>\n<div class=\"msq-options\" role=\"group\" aria-label=\"Question 2 options\"><button type=\"button\" class=\"msq-opt\" data-opt=\"a\">Nothing else, the seed words contain everything<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"b\">The quorum, every cosigner&#8217;s extended public key, the derivation path and the address type<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"c\">Only the date the wallet was created<\/button><\/div>\n<p class=\"msq-explain\" hidden><span class=\"msq-verdict\"><\/span><a href=\"https:\/\/coldcard.com\/docs\/multisig\/\" target=\"_blank\" rel=\"noopener\">Coldcard&#8217;s multisig documentation<\/a> states that multisig wallets can be reconstructed from seed words, but the M of N policy, cosigner fingerprints and extended public keys, derivation path and address type must all be known. With only two of three seeds, the third public key cannot be re-derived at all. <a class=\"msq-section\" href=\"#why-are-two-of-your-three-seeds-not-enough-to-recover\">Read the section<\/a><\/p>\n<\/li>\n<li class=\"msq-q\" data-q=\"3\" data-answer=\"c\" data-title=\"How do you build a 2 of 3 multisig wallet step by step?\" data-section=\"#how-do-you-build-a-2-of-3-multisig-wallet-step-by-step\">\n<p class=\"msq-question\">3. What does the vendor documentation say to do before depositing any funds?<\/p>\n<div class=\"msq-options\" role=\"group\" aria-label=\"Question 3 options\"><button type=\"button\" class=\"msq-opt\" data-opt=\"a\">Register the wallet with the manufacturer<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"b\">Send a small payment and see whether it arrives<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"c\">Test recovery of the multisig wallet, and compare receiving address zero on every device<\/button><\/div>\n<p class=\"msq-explain\" hidden><span class=\"msq-verdict\"><\/span><a href=\"https:\/\/coldcard.com\/docs\/multisig\/\" target=\"_blank\" rel=\"noopener\">Coldcard&#8217;s multisig documentation<\/a> says to test recovery of the multisig wallet before depositing funds, and <a href=\"https:\/\/coldcard.com\/guides\/advanced\/coldcard-multisig-setup\" target=\"_blank\" rel=\"noopener\">its airgap guide<\/a> has you compare the first receiving address across all three devices and the coordinator before anything is funded. <a class=\"msq-section\" href=\"#how-do-you-build-a-2-of-3-multisig-wallet-step-by-step\">Read the section<\/a><\/p>\n<\/li>\n<li class=\"msq-q\" data-q=\"4\" data-answer=\"b\" data-title=\"What do people who set this up report going wrong?\" data-section=\"#what-do-people-who-set-this-up-report-going-wrong\">\n<p class=\"msq-question\">4. Across the six dated accounts on this page, what caused the trouble?<\/p>\n<div class=\"msq-options\" role=\"group\" aria-label=\"Question 4 options\"><button type=\"button\" class=\"msq-opt\" data-opt=\"a\">Broken cryptography in the multisig script<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"b\">Configuration, derivation or device path problems<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"c\">Thieves obtaining two of the three keys<\/button><\/div>\n<p class=\"msq-explain\" hidden><span class=\"msq-verdict\"><\/span>All six were configuration or derivation problems: missing master fingerprints in <a href=\"https:\/\/github.com\/sparrowwallet\/sparrow\/issues\/1856\" target=\"_blank\" rel=\"noopener\">issue 1856<\/a>, a keystore that would not sign after a disconnection in <a href=\"https:\/\/github.com\/sparrowwallet\/sparrow\/issues\/1940\" target=\"_blank\" rel=\"noopener\">issue 1940<\/a>, and a passphrase never requested in <a href=\"https:\/\/github.com\/sparrowwallet\/sparrow\/issues\/2072\" target=\"_blank\" rel=\"noopener\">issue 2072<\/a>. None was a cryptography failure and none was a stolen key. <a class=\"msq-section\" href=\"#what-do-people-who-set-this-up-report-going-wrong\">Read the section<\/a><\/p>\n<\/li>\n<li class=\"msq-q\" data-q=\"5\" data-answer=\"b\" data-title=\"Which multisig coordinator software is still maintained?\" data-section=\"#which-multisig-coordinator-software-is-still-maintained\">\n<p class=\"msq-question\">5. Can Trezor Suite manage a multisig wallet on its own?<\/p>\n<div class=\"msq-options\" role=\"group\" aria-label=\"Question 5 options\"><button type=\"button\" class=\"msq-opt\" data-opt=\"a\">Yes, multisig is built into Trezor Suite<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"b\">No, Trezor points you at Electrum, Sparrow or Casa<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"c\">Only on the Trezor Safe 5<\/button><\/div>\n<p class=\"msq-explain\" hidden><span class=\"msq-verdict\"><\/span><a href=\"https:\/\/trezor.io\/learn\/supported-assets\/bitcoin\/multisig-wallets-how-multi-key-security-protects-your-bitcoin\" target=\"_blank\" rel=\"noopener\">Trezor&#8217;s own multisig page<\/a> states that Trezor Suite does not directly support managing multisig wallets and names Electrum, Sparrow or Casa instead. Ledger likewise publishes <a href=\"https:\/\/support.ledger.com\/article\/10615436599837-zd\" target=\"_blank\" rel=\"noopener\">instructions for using Sparrow<\/a> rather than offering multisig in its own app. <a class=\"msq-section\" href=\"#which-multisig-coordinator-software-is-still-maintained\">Read the section<\/a><\/p>\n<\/li>\n<\/ol>\n<div class=\"msq-result\" hidden><\/div>\n<\/div>\n<\/details>\n<script>(function(){\n  if (window.__msqInit) { return; }\n  window.__msqInit = true;\n  var root = document.getElementById('ms-quiz');\n  if (!root) { return; }\n  var meta = { slug: root.getAttribute('data-slug'), category: root.getAttribute('data-category'),\n               list: root.getAttribute('data-list') || '1' };\n  function qs(el, s){ return el.querySelector(s); }\n  function qsa(el, s){ return Array.prototype.slice.call(el.querySelectorAll(s)); }\n  function track(name, params){\n    try { if (typeof gtag === 'function') { var p = params || {}; p.article = meta.slug; gtag('event', name, p); } } catch (e) {}\n  }\n  function jumpList(missed){\n    if (!missed.length) { return ''; }\n    return '<ul class=\"msq-jump\">' + missed.map(function(q){\n      return '<li><a href=\"' + q.getAttribute('data-section') + '\">' + q.getAttribute('data-title') + '<\/a><\/li>';\n    }).join('') + '<\/ul>';\n  }\n  function emailForm(){\n    return '<div class=\"msq-sub\"><p><strong>Get the next one.<\/strong> We publish new articles on ' + meta.category\n      + ' most weeks and recheck this page on Sundays. Email me when a new article goes up or this page changes.<\/p>'\n      + '<form class=\"msq-form\" method=\"post\" action=\"\/mail\/form.php\" novalidate>'\n      + '<input type=\"hidden\" name=\"list\" value=\"' + meta.list + '\">'\n      + '<input type=\"hidden\" name=\"name\" value=\"\">'\n      + '<label class=\"msq-hp\" aria-hidden=\"true\">Leave this empty<input type=\"text\" name=\"website\" tabindex=\"-1\" autocomplete=\"off\"><\/label>'\n      + '<input type=\"email\" name=\"email\" placeholder=\"you@example.com\" required aria-label=\"Email address\" autocomplete=\"email\">'\n      + '<button type=\"submit\" class=\"msq-btn\">Email me the updates<\/button>'\n      + '<a href=\"#\" class=\"msq-no\">No thanks<\/a>'\n      + '<p class=\"msq-privacy\">We store your email and this page\\'s topic, nothing else. Unsubscribe any time.<\/p>'\n      + '<\/form><p class=\"msq-msg\" aria-live=\"polite\"><\/p><\/div>';\n  }\n  \/* The autoresponder always answers 200 with its own page. A \".msg.err\" box means the\n     address was rejected, \"You're subscribed\" means accepted, and a redirect only happens\n     after a successful subscribe. Same reading as the landing pages on the other sites. *\/\n  function sendForm(form){\n    return fetch(form.getAttribute('action'), { method: 'POST', body: new FormData(form), credentials: 'same-origin', redirect: 'manual' })\n      .then(function(res){\n        if (res.type === 'opaqueredirect') { return { status: 'ok' }; }\n        if (res.status === 404) { return { status: 'notlive' }; }\n        if (!res.ok) { throw new Error('HTTP ' + res.status); }\n        return res.text().then(function(t){\n          var doc = new DOMParser().parseFromString(t, 'text\/html');\n          var err = doc.querySelector('.msg.err');\n          if (err) {\n            var m = err.textContent.trim();\n            if (\/something went wrong\/i.test(m)) { throw new Error(m); }\n            return { status: 'rejected', message: m };\n          }\n          if (\/you.re subscribed\/i.test(doc.body.textContent)) { return { status: 'ok' }; }\n          return { status: 'unknown' };\n        });\n      });\n  }\n  function wireForm(sub){\n    var form = qs(sub, '.msq-form'), msg = qs(sub, '.msq-msg');\n    qs(form, '.msq-no').addEventListener('click', function(e){\n      e.preventDefault();\n      sub.innerHTML = '<p class=\"msq-msg\">No problem. The Sunday refresh keeps this page current either way.<\/p>';\n      track('quiz_email', { result: 'declined' });\n    });\n    form.addEventListener('submit', function(e){\n      e.preventDefault();\n      var input = qs(form, 'input[name=email]'), btn = qs(form, '.msq-btn');\n      var email = input.value.trim(); input.value = email;\n      if (!\/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/.test(email)) { msg.textContent = 'That email does not look right.'; return; }\n      btn.disabled = true; btn.textContent = 'Sending';\n      function reset(){ btn.disabled = false; btn.textContent = 'Email me the updates'; }\n      sendForm(form).then(function(r){\n        if (r.status === 'ok' || r.status === 'unknown') {\n          sub.innerHTML = '<p class=\"msq-msg\"><strong>Done.<\/strong> We will email you when the next article on ' + meta.category\n            + ' goes up and when this page changes. If a confirmation email arrives, click it.<\/p>';\n          track('quiz_email', { result: r.status });\n          if (r.status === 'ok') { track('generate_lead', { method: 'quiz' }); }\n        } else if (r.status === 'notlive') {\n          msg.textContent = 'Sign up is not switched on yet for this site. Nothing was stored.'; reset();\n          track('quiz_email', { result: 'notlive' });\n        } else {\n          msg.textContent = r.message || 'Please check the email address and try again.'; reset();\n          track('quiz_email', { result: 'rejected' });\n        }\n      }).catch(function(){\n        msg.textContent = 'Could not reach the sign up service just now. Nothing was stored.'; reset();\n        track('quiz_email', { result: 'error' });\n      });\n    });\n  }\n  function finish(container, mode, score, total, missed){\n    var result = qs(container, '.msq-result');\n    track('quiz_complete', { mode: mode, score: score, total: total });\n    var h;\n    if (mode === 'pre') {\n      h = '<h3>You knew ' + score + ' of ' + total + ' before reading.<\/h3>';\n      h += (score === total) ? '<p>All of them. Read on anyway; the sections below carry the detail behind each answer.<\/p>'\n                             : '<p>The rest is below. Jump straight to what you missed:<\/p>' + jumpList(missed);\n      try { sessionStorage.setItem('msq-pre-' + meta.slug, String(score)); } catch (e) {}\n    } else {\n      var pre = null;\n      try { pre = sessionStorage.getItem('msq-pre-' + meta.slug); } catch (e) {}\n      h = '<h3>You got ' + score + ' of ' + total + '.<\/h3>';\n      if (pre !== null) { h += '<p>Before reading you had ' + pre + ' of ' + total + '.<\/p>'; }\n      if (missed.length) { h += '<p>Worth a second look:<\/p>' + jumpList(missed); }\n      h += emailForm();\n    }\n    result.innerHTML = h; result.hidden = false;\n    if (mode !== 'pre') { wireForm(qs(result, '.msq-sub')); }\n    result.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\n  }\n  function setup(container, mode){\n    var qEls = qsa(container, '.msq-q'), answered = 0, score = 0, missed = [];\n    qEls.forEach(function(q){\n      var answer = q.getAttribute('data-answer'), opts = qsa(q, '.msq-opt'), explain = qs(q, '.msq-explain');\n      q.removeAttribute('data-done'); explain.hidden = true; qs(explain, '.msq-verdict').textContent = '';\n      opts.forEach(function(b){ b.disabled = false; b.classList.remove('is-right', 'is-wrong'); });\n      opts.forEach(function(b){\n        b.addEventListener('click', function(){\n          if (q.getAttribute('data-done')) { return; }\n          q.setAttribute('data-done', '1');\n          var ok = b.getAttribute('data-opt') === answer;\n          opts.forEach(function(o){ o.disabled = true; if (o.getAttribute('data-opt') === answer) { o.classList.add('is-right'); } });\n          if (ok) { score += 1; } else { b.classList.add('is-wrong'); missed.push(q); }\n          qs(explain, '.msq-verdict').textContent = ok ? 'Right. ' : 'Not quite. ';\n          explain.hidden = false;\n          answered += 1;\n          track('quiz_answer', { mode: mode, question: q.getAttribute('data-q'), correct: ok ? 1 : 0 });\n          if (answered === qEls.length) { finish(container, mode, score, qEls.length, missed); }\n        });\n      });\n    });\n  }\n  var box = qs(root, '.msq-box');\n  setup(root, 'pre');\n  if (box) { var skipFirst = box.hasAttribute('data-default-open'); box.addEventListener('toggle', function(){ if (!box.open) { return; } if (skipFirst) { skipFirst = false; return; } track('quiz_open', { mode: 'pre' }); }); }\n  \/* The end block sits far below this script, so it does not exist yet while this runs\n     during parsing. A delegated listener finds it at click time. *\/\n  document.addEventListener('click', function(e){\n    var startBtn = (e.target && e.target.closest) ? e.target.closest('.msq-start-test') : null;\n    if (!startBtn) { return; }\n    var end = startBtn.closest('.msq-end');\n    if (!end) { return; }\n    var mount = qs(end, '.msq-mount');\n    var clone = qs(root, '.msq-body').cloneNode(true);\n    var intro = qs(clone, '.msq-intro');\n    if (intro) { intro.textContent = 'The same five questions, now that you have read the page.'; }\n    var res = qs(clone, '.msq-result'); if (res) { res.hidden = true; res.innerHTML = ''; }\n    mount.innerHTML = ''; mount.appendChild(clone);\n    setup(mount, 'test');\n    startBtn.hidden = true;\n    track('quiz_open', { mode: 'test' });\n    mount.scrollIntoView({ behavior: 'smooth', block: 'start' });\n    var first = qs(mount, '.msq-opt'); if (first) { first.focus({ preventScroll: true }); }\n  });\n  \/* Shared tool behaviour: checklists remember their ticks on this device, and a chooser\n     shows the result for the option picked. Calculators carry their own small script. *\/\n  function initTools(){\n    qsa(document, '.msq-check').forEach(function(box){\n      var key = 'msq-check-' + meta.slug + '-' + (box.getAttribute('data-id') || 'x');\n      var boxes = qsa(box, 'input[type=checkbox]'), count = qs(box, '.msq-check-count');\n      var yes = qs(box, '.msq-verdict-yes'), no = qs(box, '.msq-verdict-no');\n      var saved = {};\n      try { saved = JSON.parse(localStorage.getItem(key) || '{}'); } catch (e) {}\n      boxes.forEach(function(cb, i){ if (saved[i]) { cb.checked = true; } });\n      function refresh(){\n        var n = boxes.filter(function(cb){ return cb.checked; }).length, state = {};\n        boxes.forEach(function(cb, i){ if (cb.checked) { state[i] = 1; } });\n        try { localStorage.setItem(key, JSON.stringify(state)); } catch (e) {}\n        if (count) { count.textContent = n + ' of ' + boxes.length + (box.getAttribute('data-verb') || ' done'); }\n        if (yes && no) { yes.hidden = n === 0; no.hidden = n !== 0; }\n      }\n      boxes.forEach(function(cb){ cb.addEventListener('change', function(){ refresh(); track('tool_check', { tool: box.getAttribute('data-id') }); }); });\n      refresh();\n    });\n    qsa(document, '.msq-choose').forEach(function(box){\n      var results = qsa(box, '.msq-choice-result');\n      qsa(box, 'input[type=radio]').forEach(function(r){\n        r.addEventListener('change', function(){\n          results.forEach(function(el){ el.hidden = el.getAttribute('data-for') !== r.value; });\n          track('tool_choose', { tool: box.getAttribute('data-id'), choice: r.value });\n        });\n      });\n    });\n  }\n  \/\/ read progress: how far down the article the reader has scrolled, fired once per quarter\n  (function(){\n    var art = root.closest('article') || root.parentNode, fired = {};\n    function check(){\n      var top = art.getBoundingClientRect().top + window.pageYOffset, h = art.offsetHeight || 1;\n      var seen = (window.pageYOffset + window.innerHeight - top) \/ h * 100;\n      [25, 50, 75, 100].forEach(function(m){ if (seen >= m && !fired[m]) { fired[m] = true; track('read_progress', { percent: m }); } });\n    }\n    window.addEventListener('scroll', check, { passive: true }); window.addEventListener('load', check);\n  })();\n  if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', initTools); } else { initTools(); }\n})();<\/script>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"what-does-a-2-of-3-multisig-wallet-actually-protect-against\">What does a 2 of 3 multisig wallet actually protect against?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Four things, and it is worth being precise about which four. A thief who finds one seed backup gets nothing. A fire that takes one backup leaves you with two. Somebody standing over you with one device cannot sign on their own. And a flaw in one manufacturer leaves the other two keys intact, which is why <a href=\"https:\/\/sparrowwallet.com\/docs\/best-practices.html\" target=\"_blank\" rel=\"noopener\">Sparrow\u2019s best practices page<\/a> tells you to use <em>hardware wallets from multiple vendors, ensuring that a vulnerability in one vendor does not completely compromise the setup<\/em>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That fourth one stopped being theoretical this summer. On 1 August 2026 Coinkite published <a href=\"https:\/\/blog.coinkite.com\/coldcard-mk3-seed-generation-warning\/\" target=\"_blank\" rel=\"noopener\">a security advisory<\/a> saying seeds generated on a Coldcard Mk2 or Mk3 running firmware 4.0.1 through 4.1.9 carried roughly 40 bits of entropy instead of 128, and that Mk4, Mk5 and Q seeds made before the fixed releases carried about 72. Anyone who had built a 2 of 3 out of three Coldcards on affected firmware had three weak keys, not one. A quorum does not help when the same bug sits in every seat. The advisory itself is covered in <a href=\"https:\/\/getbitcoin.guide\/articles\/coldcard-mk3\/\">the Coldcard Mk3 write up<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">What 2 of 3 does not do: protect you from signing a payment to an address you never checked, or from losing the file that describes the wallet. Trezor\u2019s own page says plainly that <a href=\"https:\/\/trezor.io\/learn\/supported-assets\/bitcoin\/multisig-wallets-how-multi-key-security-protects-your-bitcoin\" target=\"_blank\" rel=\"noopener\">multisig setups are complex<\/a> and that there is <em>a higher risk of errors that could result in lost access<\/em>. That is the company selling you the second and third device, a level of candour the affiliate review with the discount code never quite reaches.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1376\" height=\"768\" src=\"https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/recovery-keys-for-multisig-wallet-backup.jpg\" alt=\"Hands holding a steel backup plate and punched card used with a multisig wallet.\" class=\"wp-image-453\" srcset=\"https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/recovery-keys-for-multisig-wallet-backup.jpg 1376w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/recovery-keys-for-multisig-wallet-backup-300x167.jpg 300w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/recovery-keys-for-multisig-wallet-backup-1024x572.jpg 1024w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/recovery-keys-for-multisig-wallet-backup-768x429.jpg 768w\" sizes=\"auto, (max-width: 1376px) 100vw, 1376px\" \/><figcaption class=\"wp-block-image__caption\">Two seed phrases alone cannot rebuild the wallet without its configuration file.<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"why-are-two-of-your-three-seeds-not-enough-to-recover\">Why are two of your three seeds not enough to recover?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Because a seed phrase is a private key, and a multisig wallet is a rule about public keys. The rule lives in the wallet configuration, also called the output descriptor: the quorum, all three extended public keys with their fingerprints, the derivation path and the script type. Coldcard\u2019s <a href=\"https:\/\/coldcard.com\/docs\/multisig\/\" target=\"_blank\" rel=\"noopener\">multisig documentation<\/a> states the condition exactly: <em>Multisig wallets can be reconstructed from the seed words, but the M of N policy, co-signer XFP\/XPUBS, derivation path and address type must be known<\/em>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Scope matters here, and the two halves of Coinkite\u2019s own site do not phrase it the same way. Coldcard\u2019s <a href=\"https:\/\/coldcard.com\/guides\/advanced\/coldcard-multisig-setup\" target=\"_blank\" rel=\"noopener\">own 2 of 3 guide<\/a> takes the stricter line: without the configuration <em>your three seed phrases alone can\u2019t reconstruct the vault<\/em>, and you would have to redo the export and creation steps by hand. Both are true at different scopes, and the case that actually bites is neither. With only two of your three seeds the third public key is gone for good, and that is the exact scenario a 2 of 3 was bought to survive. Trezor says it from the other direction: you need <a href=\"https:\/\/trezor.io\/learn\/supported-assets\/bitcoin\/multisig-wallets-how-multi-key-security-protects-your-bitcoin\" target=\"_blank\" rel=\"noopener\">the extended public key for every key in your keyset<\/a>, <em>not just the keys required to sign<\/em>. The descriptor is the other half of the backup, and it is the half nobody stamps into steel.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Two standards exist so none of this has to be guesswork. <a href=\"https:\/\/github.com\/bitcoin\/bips\/blob\/master\/bip-0048.mediawiki\" target=\"_blank\" rel=\"noopener\">BIP 48<\/a>, Multi Script Hierarchy for Multi-Sig Wallets, marked Deployed, fixes a standard six level path for multisig wallets: purpose, then coin type, then account, then script type, then change, then address index. Script type two means native segwit, which gives the recommended default path, written <code>m\/48h\/0h\/0h\/2h<\/code> with h marking each hardened level. <a href=\"https:\/\/github.com\/bitcoin\/bips\/blob\/master\/bip-0129.mediawiki\" target=\"_blank\" rel=\"noopener\">BIP 129<\/a>, Bitcoin Secure Multisig Setup, names the risk out loud: it exists to settle whether the configuration <em>is correct and not tampered with<\/em>, warns that <em>an attacker who can modify the multisig configuration can steal or hold funds for ransom by duping the user into sending funds to the wrong address<\/em>, and requires each signer to <em>persist the descriptor record in its storage<\/em> and match its own key exactly rather than by fingerprint, which it notes is <em>trivial to spoof<\/em>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"how-do-you-build-a-2-of-3-multisig-wallet-step-by-step\">How do you build a 2 of 3 multisig wallet step by step?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The airgapped version, traced through Coinkite\u2019s <a href=\"https:\/\/coldcard.com\/guides\/advanced\/coldcard-multisig-setup\" target=\"_blank\" rel=\"noopener\">published 2 of 3 guide<\/a> and its <a href=\"https:\/\/coldcard.com\/docs\/airgap-multisig\/\" target=\"_blank\" rel=\"noopener\">airgap multisig documentation<\/a>, with the failure point named at each step. No step here asks you to type a recovery phrase into software.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Export three public keys.<\/strong> On each device: Settings, Multisig Wallets, Export XPUB, writing a <code>ccxp<\/code> file to a MicroSD card. Failure point: a different account number on one device, which quietly produces a wallet whose third key you cannot find again.<\/li>\n\n<li><strong>Create the wallet on one device.<\/strong> Multisig Wallets, Create Airgapped, native segwit, 2 of 3, then save the export file. Failure point: accepting the defaults without reading the confirmation screen, the only place the quorum is shown before it is fixed.<\/li>\n\n<li><strong>Register it on the other two.<\/strong> Import from File on each remaining device. Failure point: skipping this, which leaves a device holding a key that does not recognise the wallet.<\/li>\n\n<li><strong>Load the coordinator.<\/strong> In Sparrow: File, Import Wallet, Coldcard Multisig, Import File. It holds no private keys, only the descriptor, which is why losing it unbacked is the problem above.<\/li>\n\n<li><strong>Verify, rehearse, then fund.<\/strong> Compare receiving address zero on all three device screens and in the coordinator, character for character. Coinkite puts it in one line for anyone holding an amount whose loss would be materially harmful: <em>Test recovery of the multisig wallet before depositing funds<\/em>.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Then back up the descriptor once alongside each seed backup. <a href=\"https:\/\/sparrowwallet.com\/docs\/best-practices.html\" target=\"_blank\" rel=\"noopener\">Sparrow<\/a> says keep the devices and their backups <em>in different locations<\/em>; Trezor says <em>back up XPUBs in a secure, offline location alongside your wallet backups<\/em>. Do that arithmetic before you start, because nobody else will. A single signature wallet asks you to keep two things alive, a device and a seed backup. A 2 of 3 asks for three devices, three seed backups and the descriptor, and taking both pieces of guidance seriously makes that last item three copies too. Nine things, in three places, for as long as you hold the coins. That number appears on none of the pages ranking for this query.<\/p>\n\n\n\n<div class=\"msq-tool msq-check\" data-id=\"multisig-survival-checklist\" data-verb=\" in place\">\n<h3>The nine things a 2 of 3 asks you to keep alive<\/h3>\n<p>Counted from the backup guidance Sparrow and Trezor publish: three devices, three seed backups, and a copy of the wallet configuration beside each seed backup. Tick what you already have in place. Nothing here is stored anywhere but this browser, and nothing here asks for your recovery words.<\/p>\n<label><input type=\"checkbox\">Device one, working, with current firmware<\/label>\n<label><input type=\"checkbox\">Device two, working, with current firmware<\/label>\n<label><input type=\"checkbox\">Device three, working, with current firmware<\/label>\n<label><input type=\"checkbox\">Seed backup one, in its own location<\/label>\n<label><input type=\"checkbox\">Seed backup two, in a second location<\/label>\n<label><input type=\"checkbox\">Seed backup three, in a third location<\/label>\n<label><input type=\"checkbox\">A copy of the wallet configuration stored with seed backup one<\/label>\n<label><input type=\"checkbox\">A copy of the wallet configuration stored with seed backup two<\/label>\n<label><input type=\"checkbox\">A copy of the wallet configuration stored with seed backup three<\/label>\n<label><input type=\"checkbox\">A recovery rehearsed from scratch since the last change to the setup<\/label>\n<label><input type=\"checkbox\">Written instructions a non technical person has read and followed<\/label>\n<p class=\"msq-check-count\"><\/p>\n<p class=\"msq-note\">Ticks are saved on this device only. The last two items are not part of the nine, but the six accounts on this page are what happens without them.<\/p>\n<\/div>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1600\" height=\"900\" src=\"https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/multisig-for-one-person-chart.png\" alt=\"Timeline of the five stages of setting up a 2 of 3 multisig wallet.\" class=\"wp-image-457\" srcset=\"https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/multisig-for-one-person-chart.png 1600w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/multisig-for-one-person-chart-300x169.png 300w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/multisig-for-one-person-chart-1024x576.png 1024w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/multisig-for-one-person-chart-768x432.png 768w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/multisig-for-one-person-chart-1536x864.png 1536w\" sizes=\"auto, (max-width: 1600px) 100vw, 1600px\" \/><figcaption class=\"wp-block-image__caption\">The order matters. Every stage that is skipped shows up later as a wallet that loads but will not sign.<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"what-do-people-who-set-this-up-report-going-wrong\">What do people who set this up report going wrong?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Six dated public accounts, five from the Sparrow Wallet issue tracker and one from a Bitcointalk thread, picked because each names the quorum, the devices and the error. They are testimony, not evidence: a bug report is one person\u2019s account of their own setup, and none of them measures how often this happens.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>October 2025, the descriptor with no fingerprints.<\/strong> Five friends on a 3 of 5 found nobody could sign: every cosigner\u2019s Sparrow answered <em>No open wallet can sign<\/em>. The extended public keys in the descriptor each had eight zeroes where the master fingerprints belonged. <a href=\"https:\/\/github.com\/sparrowwallet\/sparrow\/issues\/1856\" target=\"_blank\" rel=\"noopener\">Issue 1856<\/a>, closed.<\/li>\n\n<li><strong>February 2026, the cable pulled mid signature.<\/strong> On a 3 of 5 wallet, one Ledger Nano S Plus keystore refused to sign ever again after a USB disconnection during signing, returning <em>Signature fail<\/em> with a blank device screen. Firmware updates and a hardware swap changed nothing; rebuilding the wallet from the identical public keys fixed it. <a href=\"https:\/\/github.com\/sparrowwallet\/sparrow\/issues\/1940\" target=\"_blank\" rel=\"noopener\">Issue 1940<\/a>.<\/li>\n\n<li><strong>September 2026, the passphrase never asked for.<\/strong> Sparrow 2.5.4 with Jade firmware 1.0.41 prompted for the PIN but never the BIP39 passphrase when signing multisig, so the device unlocked to the wrong wallet. Single signature worked fine. <a href=\"https:\/\/github.com\/sparrowwallet\/sparrow\/issues\/2072\" target=\"_blank\" rel=\"noopener\">Issue 2072<\/a>. That device is reviewed in <a href=\"https:\/\/getbitcoin.guide\/articles\/blockstream-jade-review\/\">the Blockstream Jade write up<\/a>.<\/li>\n\n<li><strong>August 2026, the order of the keys.<\/strong> An open report that exported descriptors do not preserve the order the cosigners were entered in. The reporter\u2019s reason for caring is the one this page keeps hitting: it makes inheritance documentation hard to write. <a href=\"https:\/\/github.com\/sparrowwallet\/sparrow\/issues\/2054\" target=\"_blank\" rel=\"noopener\">Issue 2054<\/a>, still open.<\/li>\n\n<li><strong>February 2025, a request for descriptor backup.<\/strong> A feature request for descriptor backup tooling inside the wallet, which is a user saying out loud that the second half of the backup is currently their own problem. <a href=\"https:\/\/github.com\/sparrowwallet\/sparrow\/issues\/1640\" target=\"_blank\" rel=\"noopener\">Issue 1640<\/a>, closed without the feature.<\/li>\n\n<li><strong>November 2023 to March 2024, four months of forum help.<\/strong> A holder who believed they had built a 3 of 3 in Electrum in 2021 found two cosigners were not what they thought, and restoring from the seed phrases produced empty wallets. The coins moved in the end. <a href=\"https:\/\/bitcointalk.org\/index.php?topic=5472462.0\" target=\"_blank\" rel=\"noopener\">Bitcointalk thread 5472462<\/a>.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">The pattern is consistent, and not reassuring in the way the ranking pages imply. Not one is a cryptography failure and not one is a stolen key. All six are configuration, derivation or device path: wrong fingerprints, wrong derivation, wrong order, wrong assumption about what had been backed up. That agrees with the official guidance, which is that the policy and every public key must be known and recorded. Where the accounts part from the marketing is on who multisig is for: <a href=\"https:\/\/sparrowwallet.com\/docs\/best-practices.html\" target=\"_blank\" rel=\"noopener\">Sparrow<\/a> places it at what it calls the expert stage. The honest range is that five of the six were recovered, four of those only because somebody still held every public key, and the sixth took four months.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1376\" height=\"768\" src=\"https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/troubleshooting-multisig-wallet-setup-issues.jpg\" alt=\"A man looks puzzled while troubleshooting a connection error with his multisig wallet.\" class=\"wp-image-454\" srcset=\"https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/troubleshooting-multisig-wallet-setup-issues.jpg 1376w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/troubleshooting-multisig-wallet-setup-issues-300x167.jpg 300w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/troubleshooting-multisig-wallet-setup-issues-1024x572.jpg 1024w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/troubleshooting-multisig-wallet-setup-issues-768x429.jpg 768w\" sizes=\"auto, (max-width: 1376px) 100vw, 1376px\" \/><figcaption class=\"wp-block-image__caption\">Most reported multisig trouble is configuration or derivation, not cryptography.<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"which-multisig-coordinator-software-is-still-maintained\">Which multisig coordinator software is still maintained?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The coordinator holds the descriptor, watches the addresses and builds the transactions. It never holds a key, which makes it easy to treat as disposable, right up to the day you need it and find the project has not shipped in two years. Release histories read on 6 October 2026:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Coordinator<\/th><th>Latest release visible<\/th><th>Published<\/th><\/tr><\/thead><tbody><tr><td>Sparrow Wallet<\/td><td><a href=\"https:\/\/github.com\/sparrowwallet\/sparrow\/releases\" target=\"_blank\" rel=\"noopener\">version 2.5.5<\/a><\/td><td>17 September 2026<\/td><\/tr><tr><td>Specter Desktop<\/td><td><a href=\"https:\/\/github.com\/cryptoadvance\/specter-desktop\/releases\" target=\"_blank\" rel=\"noopener\">2.1.11 stable, plus a 2.2.0 prerelease<\/a><\/td><td>9 and 15 August 2026<\/td><\/tr><tr><td>Caravan<\/td><td><a href=\"https:\/\/github.com\/caravan-bitcoin\/caravan\/releases\" target=\"_blank\" rel=\"noopener\">package releases across the monorepo<\/a><\/td><td>17 September 2026<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">All three are alive. Electrum and Nunchuk also coordinate multisig, but their release dates were not checked on the day this was published, so treat the table as verified here and the others as not. One thing the comparison pages skip: the app that came with your device probably cannot do this at all. Trezor states that <a href=\"https:\/\/trezor.io\/learn\/supported-assets\/bitcoin\/multisig-wallets-how-multi-key-security-protects-your-bitcoin\" target=\"_blank\" rel=\"noopener\">Trezor Suite does not directly support managing multisig wallets<\/a> and points you at Electrum, Sparrow or Casa. Ledger publishes <a href=\"https:\/\/support.ledger.com\/article\/10615436599837-zd\" target=\"_blank\" rel=\"noopener\">instructions for connecting a Ledger to Sparrow<\/a> rather than offering multisig in its own app. So a 2 of 3 is not three devices. It is three devices plus a fourth piece of software, from a fourth maker, that you now also depend on.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Device<\/th><th>Can be a cosigner<\/th><th>Its own app manages the wallet<\/th><th>What you use instead<\/th><\/tr><\/thead><tbody><tr><td><a href=\"https:\/\/getbitcoin.guide\/articles\/trezor-hardware-wallet\/\">Trezor<\/a><\/td><td>Yes<\/td><td>No, per Trezor<\/td><td>Electrum, Sparrow or Casa, as named by Trezor<\/td><\/tr><tr><td>Ledger<\/td><td>Yes<\/td><td>No<\/td><td>Sparrow, per Ledger\u2019s own support article<\/td><\/tr><tr><td>Coldcard<\/td><td>Yes, fully airgapped by MicroSD<\/td><td>It stores and checks the policy on the device<\/td><td>A coordinator for the watch only view and for building transactions<\/td><\/tr><tr><td>Blockstream Jade<\/td><td>Yes<\/td><td>No<\/td><td>Sparrow, as in the September 2026 report above<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"what-happens-to-a-multisig-wallet-when-you-die\">What happens to a multisig wallet when you die?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">This is the question that turns a clever setup into a liability, and the one the institutional pages ranking for this query are least interested in, because their answer is a company. Your heirs need two of the three seed backups, the descriptor, and enough instruction to know what either of those is. Two seeds in a safe and no descriptor is not an inheritance. It is a jigsaw with a missing piece and no edges.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The standard that helps is <a href=\"https:\/\/github.com\/bitcoin\/bips\/blob\/master\/bip-0129.mediawiki\" target=\"_blank\" rel=\"noopener\">BIP 129<\/a>, whose descriptor record carries the version, the descriptor or template, the path restrictions and the wallet\u2019s first address. That last field is the part an heir can use: it lets them confirm the file they found rebuilds the right wallet before touching anything. Nunchuk, which builds a commercial service on this exact problem, describes <a href=\"https:\/\/nunchuk.io\/inheritance\" target=\"_blank\" rel=\"noopener\">the wallet configuration file as the beneficiary\u2019s sovereign backup<\/a> and uses a dedicated inheritance key with an on chain timelock so the quorum changes on a date you choose. Whether a paid service suits your situation is not something this page can answer. The honest version of the self managed answer is the open issue above: somebody is finding it hard to document which key is which, because the export does not preserve the order they were entered in. Either way the instructions have to be written for somebody who has never heard of a derivation path, and tested by that person while you are still around to answer questions. A rehearsal you fail is cheap. One your heirs fail is not. Speak to a qualified professional about the estate side; everything here is mechanics only.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"so-who-is-a-2-of-3-actually-for\">So who is a 2 of 3 actually for?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">On the evidence above: somebody whose real worry is a single backup being found, destroyed or coerced, who will keep nine artefacts alive across three locations for years, who rehearses a recovery before funding and again whenever anything changes, and whose written instructions a non technical person has already tested. <a href=\"https:\/\/sparrowwallet.com\/docs\/best-practices.html\" target=\"_blank\" rel=\"noopener\">Sparrow<\/a> puts that at the expert stage, for holders where <em>losing it might have a considerable impact on your future<\/em>. If any of those four is a maybe, the gap is not courage, it is maintenance. A well kept single signature setup with a backup you have actually restored from beats a 2 of 3 you have never tested, and there is no prize for the more complicated diagram. Still working out what you are protecting against? <a href=\"https:\/\/getbitcoin.guide\/articles\/what-is-a-cold-wallet\/\">The cold storage explainer<\/a> and <a href=\"https:\/\/getbitcoin.guide\/articles\/safest-way-to-store-crypto\/\">the storage method comparison<\/a> are the better starting point, and <a href=\"https:\/\/getbitcoin.guide\/articles\/your-recovery-phrase\/\">the recovery phrase guide<\/a> covers the half of the backup everybody already knows about.<\/p>\n\n\n\n<div class=\"msq-tool msq-choose\" data-id=\"multisig-threat-chooser\">\n<h3>Which threat are you actually trying to close?<\/h3>\n<p>Pick the thing that worries you most. This restates what the vendor documentation and the standards say about each case. It says nothing about what to hold, buy or sell, and nothing here will ever ask for your recovery words.<\/p>\n<label><input type=\"radio\" name=\"multisig-threat-chooser\" value=\"found\">Someone finds or steals my one seed backup<\/label>\n<label><input type=\"radio\" name=\"multisig-threat-chooser\" value=\"lost\">I lose or destroy my only backup<\/label>\n<label><input type=\"radio\" name=\"multisig-threat-chooser\" value=\"vendor\">A flaw in one manufacturer&#8217;s devices<\/label>\n<label><input type=\"radio\" name=\"multisig-threat-chooser\" value=\"heirs\">My family cannot reach the coins if I die<\/label>\n<label><input type=\"radio\" name=\"multisig-threat-chooser\" value=\"maintenance\">Honestly, I am not sure I will keep up with it<\/label>\n<div class=\"msq-choice-result\" data-for=\"found\" hidden><strong>This is the case 2 of 3 is built for.<\/strong> One backup on its own cannot spend. The trade off is that you now have three devices, three seed backups and a wallet configuration to keep alive, and the configuration is the part people forget.<\/div>\n<div class=\"msq-choice-result\" data-for=\"lost\" hidden><strong>Partly, and a simpler option exists.<\/strong> A 2 of 3 survives losing one key. So does a second copy of a single seed in another location, or a multi share backup, which splits one seed rather than using several keys. Compare the maintenance before you add two devices.<\/div>\n<div class=\"msq-choice-result\" data-for=\"vendor\" hidden><strong>Only if the three devices come from different makers.<\/strong> Sparrow&#8217;s best practices ask for multiple vendors precisely so one vulnerability does not reach every key. The August 2026 Coldcard advisory showed what a single vendor flaw does to a quorum built from one model.<\/div>\n<div class=\"msq-choice-result\" data-for=\"heirs\" hidden><strong>A 2 of 3 makes this harder, not easier, unless you document it.<\/strong> Heirs need two seed backups, the wallet configuration, and instructions written for somebody who has never heard of a derivation path. Test those instructions on that person while you can still answer questions, and speak to a qualified professional about the estate side.<\/div>\n<div class=\"msq-choice-result\" data-for=\"maintenance\" hidden><strong>Then that is the finding.<\/strong> Every one of the six public accounts on this page was a configuration or derivation problem, not a broken key. A single signature setup you have actually restored from is a known quantity; a 2 of 3 you have never tested is not.<\/div>\n<p class=\"msq-note\">Information only. Not financial advice and not a recommendation to buy any device or service.<\/p>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"frequently-asked-questions\">Frequently asked questions<\/h2>\n\n\n<div id=\"rank-math-faq\" class=\"rank-math-block\">\n<div class=\"rank-math-list \">\n<div id=\"faq-q-1\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Is a multisig wallet the same as a Shamir or multi share backup?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>No, and the difference matters for recovery. A multi share backup, such as the one <a href=\"https:\/\/trezor.io\/guides\/backups-recovery\/advanced-wallets\/multi-share-backup-on-trezor\" target=\"_blank\" rel=\"noopener\">Trezor documents for SLIP39<\/a>, splits a single seed into shares, so a threshold of shares rebuilds one key. A multisig wallet uses several independent keys and enforces the threshold in the Bitcoin script itself. Multi share protects the backup. Multisig protects the spend.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-q-2\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Can all three devices be the same brand?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>They can, and the setup will work. The cost is that one vendor flaw then reaches every seat, which is the scenario <a href=\"https:\/\/sparrowwallet.com\/docs\/best-practices.html\" target=\"_blank\" rel=\"noopener\">Sparrow\u2019s best practices<\/a> asks you to avoid and the one that <a href=\"https:\/\/blog.coinkite.com\/coldcard-mk3-seed-generation-warning\/\" target=\"_blank\" rel=\"noopener\">the August 2026 Coldcard advisory<\/a> made concrete for anybody who had generated every seed on affected firmware.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-q-3\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Does spending from a 2 of 3 cost more in fees?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Yes. A multisig input carries more witness data than a single signature input, because it carries more than one signature plus the script describing the rule, so the same payment occupies more block space. How much more depends on how many inputs you spend and the fee rate at the time, which is why any fixed figure quoted for it is a snapshot rather than a rule.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-q-4\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">What exactly is a descriptor, in one sentence?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>It is the text stating the quorum, every cosigner\u2019s extended public key and fingerprint, the derivation path and the script type, which together are what lets any wallet software recognise your addresses. <a href=\"https:\/\/github.com\/bitcoin\/bips\/blob\/master\/bip-0129.mediawiki\" target=\"_blank\" rel=\"noopener\">BIP 129<\/a> standardises how it is exchanged and requires each signer to store it.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-q-5\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Can I keep the descriptor with a seed backup?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>A descriptor holds public keys only, so by itself it cannot spend anything. Storing a copy with each seed backup is what <a href=\"https:\/\/trezor.io\/learn\/supported-assets\/bitcoin\/multisig-wallets-how-multi-key-security-protects-your-bitcoin\" target=\"_blank\" rel=\"noopener\">Trezor\u2019s own guidance<\/a> describes, keeping extended public keys offline alongside the wallet backups. The trade off is privacy rather than theft: whoever reads it can see your whole transaction history.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-q-6\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Will any part of this ask for my recovery words?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>No. Creating a multisig wallet moves public keys between devices and never private ones, and each device signs on its own screen. Nothing on this site will ever ask you to type a recovery phrase, and any tool, site or support person that does is to be treated as an attempt to take your coins, with no exceptions.<\/p>\n\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n\n\n<div class=\"msq-end\" id=\"ms-quiz-end\">\n<p><strong>Finished the page?<\/strong> The same five questions from the top, to see what stuck.<\/p>\n<button type=\"button\" class=\"msq-btn msq-start-test\">Test Your Understanding of This Article<\/button>\n<div class=\"msq-mount\"><\/div>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\"><em>This article is educational and is not financial advice. Nothing here is a recommendation to buy, sell or hold anything, and nothing here is ever a reason to enter a recovery phrase anywhere. Speak to a qualified professional about your own situation. You are responsible for your own security decisions.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>A multisig wallet for one person means 2 of 3. The worked setup from the vendor documentation, the descriptor that two seeds cannot rebuild, and six dated accounts of what went wrong.<\/p>\n","protected":false},"author":1,"featured_media":452,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","rank_math_title":"Multisig Wallet for One Person: What 2 of 3 Really Costs","rank_math_description":"A multisig wallet splits one person\u2019s bitcoin across three keys. Here is a worked 2 of 3 setup, the descriptor you must keep, and six dated failures.","rank_math_focus_keyword":"multisig wallet","rank_math_canonical_url":"","rank_math_breadcrumb_title":"","rank_math_facebook_title":"","rank_math_facebook_description":"","rank_math_facebook_image":"","rank_math_twitter_title":"","rank_math_twitter_description":"","rank_math_twitter_image":"","rank_math_pillar_content":"","rank_math_robots":[],"rank_math_advanced_robots":[]},"categories":[3],"tags":[],"class_list":["post-455","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-self-custody"],"_links":{"self":[{"href":"https:\/\/getbitcoin.guide\/articles\/wp-json\/wp\/v2\/posts\/455","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/getbitcoin.guide\/articles\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/getbitcoin.guide\/articles\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/getbitcoin.guide\/articles\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/getbitcoin.guide\/articles\/wp-json\/wp\/v2\/comments?post=455"}],"version-history":[{"count":4,"href":"https:\/\/getbitcoin.guide\/articles\/wp-json\/wp\/v2\/posts\/455\/revisions"}],"predecessor-version":[{"id":461,"href":"https:\/\/getbitcoin.guide\/articles\/wp-json\/wp\/v2\/posts\/455\/revisions\/461"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/getbitcoin.guide\/articles\/wp-json\/wp\/v2\/media\/452"}],"wp:attachment":[{"href":"https:\/\/getbitcoin.guide\/articles\/wp-json\/wp\/v2\/media?parent=455"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/getbitcoin.guide\/articles\/wp-json\/wp\/v2\/categories?post=455"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/getbitcoin.guide\/articles\/wp-json\/wp\/v2\/tags?post=455"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}