在多重簽名錢包設置中需要備份什麼,為什麼?
在多重簽名錢包設置中需要備份什麼,為什麼?
本考夫曼在推特上回答了這個問題。
多重簽名錢包的主要警告是,雖然您只需要一個門檻值的設備(即 3 個中的 2 個、5 個中的 3 個等)來簽署交易,但即使失去對單個設備的訪問權也可能會阻止您被能夠花費資金 - 如果您沒有正確備份!
原因是(通常)為了進行比特幣交易,僅僅能夠簽名是不夠的,還需要提供“消費條款”,即使用的腳本(程式碼)鎖定硬幣。
這是因為完整的腳本通常不直接儲存在區塊鏈上,而只是作為雜湊(它的唯一標識符)。在單個密鑰錢包中,這是微不足道的。
該腳本由您錢包的公鑰和一些標準命令組成 - 滿足它需要該密鑰的簽名,因此腳本和簽名都可以通過訪問該私鑰來建構。然後在支出時,您需要提供與該雜湊匹配的原始腳本程式碼,並滿足腳本可能包含的任何條件。
對於多重簽名,情況並非如此。多重簽名的腳本包含所有可能的共同簽名者的公鑰列表 - 這意味著它只能通過知道多重簽名中所有設備的公鑰來建構,而不僅僅是您正在簽名的設備。
為了展示,讓我們假設 2 of 3 multisig。當您想獲得多重簽名的地址時,您的錢包軟體會獲取所有 3 個共同簽名者的公鑰,在腳本中以標準方式列出它們,對其進行雜湊處理,然後使用此雜湊構造地址。
當接收到該地址的比特幣時,區塊鏈上有一個所有 3 個公鑰的“承諾”,其中需要 2 個簽名。但是公鑰本身還沒有在區塊鏈上列出——你必須在從地址消費時也提供它們。
現在假設您無法訪問一個私鑰(設備及其助記符備份),您將無法再告訴它的公鑰 - 因此您將無法重建地址的腳本。因此,即使您有足夠的簽名,您也無法獲得資金。
解決方案 - 這是多簽名備份的額外步驟 - 還保留所有 cosigners 的公鑰 (xpub) 列表的備份,您將能夠從中重新創建腳本。
由於此公鑰列表不包含簽名(私鑰)密鑰,因此即使攻擊者設法訪問它也不存在失去資金的風險,但這將是一個隱私問題,因為攻擊者將能夠看到餘額多重簽名錢包。
這就是為什麼不建議將此文件保留在某些雲備份或其他不安全選項上的原因。
建議您將其與每個共同簽名者/種子備份一起保存,以便無論您最終使用哪種簽名者組合都可以恢復。
除了公鑰列表之外,還需要知道使用的腳本類型(無論是原生 SegWit、嵌套 SegWit 還是舊版),以及為建構多重簽名腳本而選擇的門檻值。這些可以通過猜測(蠻力)知道,但最好也保留它。
您應該包括的最後一部分是用於每個設備的派生路徑。每個派生路徑都會告訴你的錢包如何將每個主公鑰轉換為用於生成每個新地址的不同的單獨“一次性”公鑰。
派生路徑的數據是標準化的,因此所有錢包預設都應該使用相同的派生路徑,但最好也保留它,特別是如果你出於某種原因使用唯一的派生路徑。
這可能聽起來像很多組件,但為了簡化使用,有一個用於儲存和恢復此類資訊的標準,稱為輸出描述符。
作為最終備份的範例,這裡有幾張從 Spectre Wallet 生成的 PDF 備份的圖片。
這包含單個設備密鑰列表,以及輸出描述符格式的所有內容(以及一些額外的數據,如錢包名稱等)
您可以通過簡單地列印 PDF、將其儲存在 SD 卡上或將其加密保存在雲備份中來保存它。你需要記住的是:
- 您需要此資訊來恢復錢包。
- 有權訪問此資訊的任何人都可以查看您的錢包歷史記錄。
所以簡單總結一下,在使用多重簽名錢包時你應該備份的額外部分是輸出描述符——錢包上包含一些數據的共同簽名者的公鑰列表。
只有通過訪問您的多重簽名中的所有設備才能獲得此資訊,並且有必要從中花費。因此,要消除無法訪問一個 cosigner 的單點故障,您應該將此備份與您的每台設備一起保存。