Transactions
在 m-of-n 交易中,發送方如何知道接收方的公鑰?
假設 Alice 正在控制一個需要多重簽名才能花費比特幣的地址。有人想向 Alice 發送比特幣,這個發送者需要創建一個
scriptPubKey
作為輸出的一部分來支付 Alice。發送方
scriptPubKey
交易中的 應該如下所示:m pubKey_1, pubkey_2, ...pubKey_m n OP_CHECKMULTISIGVERIFY
發送者如何知道向 Alice 發送資金的公鑰?更進一步,發送者如何知道 的值
m
?Alice 確定最小簽名數是不是更合乎邏輯?如果我理解正確,則不再使用此輸出格式,但我仍然想了解它是如何工作的。
支出者將發送到的任何地址都由接收者提供。作為地址的所有者,接收者知道這些詳細資訊,並能夠向支出者提供正確的發送指令。即使對於要求支出者知道公鑰的過時的原始多重簽名結構也是如此,但今天大多數多重簽名交易實際上都使用付費腳本雜湊(p2sh),因此接收者只需提供一個標準的 p2sh 地址即可花錢的人。
在現代,這個問題是使用 P2SH(以及後來的 P2WSH)解決的。這意味著發送者只需要知道接收者想要使用的實際腳本的雜湊值,它有自己的地址格式,因此很容易傳達。
如果您的問題是在 P2SH 之前這是如何完成的:答案很簡單,在實踐中沒有使用多重簽名。請注意,P2SH 是在 2012 年推出的;比特幣當時相對年輕,並沒有那麼多建立在上面。可能有一些使用多重簽名的實驗,但我懷疑任何實用性。