Bitcoind
RPC addmultisigaddress 呼叫
我通過調試視窗嘗試了以下 RPC 呼叫:
addmultisigaddress 2 '["0304a7aadeb1ae96482a10fa634825d86d80dbad8d43cd9177664eaf6f0ff7d890", "022426f087fd017db9f29759efb9d7ff6101a075e46fb591466208a6a6beb321c7"]'
輸出是:
3MGYcBNapbmYkvfj9CD4hBykzWxukEE61w
這是一個 P2SH 地址,對吧?
不過,RPC 呼叫只是提供了公鑰,所以我的錢包實際上無法花費發送到該地址的任何資金,對嗎?
為什麼還要在這裡進行 RPC 呼叫,讓使用者創建一個他們無法使用的地址?如果不知道私鑰,這種方法是否只是一個實用程序,並且結果根本不會在實際錢包中使用?
我想只是對’addmultisigaddress’的解釋比通過控制台的幫助更具描述性會有所幫助。
您的理解是正確的:RPC呼叫的參數只是公鑰(或地址,是公鑰的雜湊),如果您不持有所有對應的私鑰,您將無法花費硬幣發送到結果地址。
但這遠非無用。多重簽名地址的主要應用是需要多個人的批准才能使用它們,就像在一張支票上需要兩個簽名一樣。在這種情況下,不希望任何人或電腦擁有所有相應的私鑰(因為任何有足夠權限訪問該電腦的人都可以單方面花費硬幣)。相反,當需要花費硬幣時,密鑰持有者會一一簽署他們的簽名,而不會彼此共享他們的私鑰。所以事實上,如果
addmultisigaddress
要求所有私鑰都可用,那幾乎是沒有用的。有關多重簽名地址以及如何使用它們的更多詳細資訊,請參閱 almel 對多重簽名地址如何工作的相當廣泛的回答?與任何開源軟體一樣,最終的文件是原始碼。