為什麼使用多重簽名的網路錢包需要 N 個密鑰中的 1 個?
我一直在研究多重簽名交易,我想知道,正如標題所說,為什麼像 blockchain.info 這樣提供多重簽名交易(例如 2-of-3)的網路錢包需要你的任何私鑰. 據我了解,看起來多重簽名 2-of-3 地址需要三個公鑰才能生成,並且是通過原始交易花費的。
那麼為什麼這些服務不允許您保留所有三個密鑰呢?
是否有某些原因必須由錢包提供商保留其中一個密鑰?似乎不需要任何密鑰在提供者的錢包中,只要它們可以在發送之前簽署原始交易——理論上原始交易可以由客戶端在瀏覽器中創建並送出用於通過 sendrawtransaction 進行傳輸,除了與網路的原始連接之外,不涉及任何其他意義上的提供者。
我錯過了什麼?
據我了解,看起來多重簽名 2-of-3 地址需要三個公鑰才能生成
要求是私鑰,公鑰很好,公開:每個人都知道它們。2 of 3 腳本要求需要上述三個鍵中的任意兩個,您可以使用其變體,例如 2 of 2、3 of 3、1 of 3 等。
通過原始交易花費
同樣毫無價值的是,“原始交易”只是比特幣核心中使用的一個術語,用於處理任何不是 Pay to Pubkey Hash 的事情,除非你談論的是客戶端本身,否則它是毫無意義的。
那麼為什麼這些服務不允許您保留所有三個密鑰呢?
多重簽名錢包的目的是您可以要求多方授權交易。在此模型的情況下,您將有一個 2-of-2 系統,其中有兩個參與方,並且都需要簽署才能使用相關資金。這具有以下屬性:
- 該服務不能直接從使用者那裡竊取資金,因為使用者也需要簽署交易。
- 使用者可以受到第三方對他們的限制,例如,他們不會簽署每天花費超過 10 美元的交易,或者不需要額外授權。
- 可以通過這樣一種方式編寫事務,即如果服務拒絕簽署任何事務(隨機使用者或停業),經過大量時間後,要求會減少到使用者的單個簽名。
使用這些屬性,您可以創建具有任意支出要求的非常強大的系統,而不會冒著將您的全部資金提供給其他任何人的風險。
然而,在網路錢包的情況下,這個系統幾乎完全是蛇油密碼學,因為第三方也是向使用者提供程式碼的人。他們可以隨時將其更改為不同的程式碼,這些程式碼只是將私鑰發回給他們,或者盲目地簽署他們想要的任何交易。鑑於此屬性,絕對沒有辦法讓網路錢包安全。
那麼為什麼這些服務不允許您保留所有三個密鑰呢?
那麼在一方持有所有密鑰的情況下進行多重簽名交易將毫無意義,僅使用正常交易成本會低得多。與正常交易相比,多重簽名腳本的使用成本往往要高得多。