Multi-Signature
是否有相當於 Xpub/Zpub 的多重簽名錢包?
當我有一個典型的錢包時,我可以將我的 Xpub 提供給某人,以便在他們需要時生成地址。(此處的“他們”可能是 BTCPAY 伺服器的實例或我不想向其公開私鑰的其他應用程序)。
當我有一個多重簽名方案/錢包時。地址是如何生成的?是否有我可以生成並放入我的 btcpay 伺服器的等效密鑰(Xpub、zpub 等)?
謝謝
多重簽名地址是組合多個單獨鍵的腳本的雜湊。換句話說,它的目的是要求來自獨立儲存(並且通常生成)的多個密鑰的多個簽名。因此,它不能從單個擴展公鑰 (xpub) 生成。
您可以做的是擁有多個擴展密鑰,並為每個地址從同一路徑上的每個 xkey 派生一個公鑰,並將這些公鑰組合起來以獲取您的地址。
例如,Alice 和 Bob 之間的 2 of 2 方案將像這樣工作:
- Alice 生成一個主私鑰,將其儲存在一個安全且私密的地方。
- Bob 生成一個主私鑰,將其儲存在安全私密的地方。
- 愛麗絲獲取特定路徑的主公鑰,例如:
m/44'/0'/0'/0
* 並與鮑勃共享。- Bob 獲取他的特定路徑的主公鑰,例如:
m/44'/2'/1'/0
* 並與 Alice 共享。- 他們都同意 Alice 公鑰必須排在第一位**並從索引 0 開始。
- 為了獲得一個地址,他們每個人都獨立地從他們擁有的兩個擴展公鑰中派生出相同的公鑰,將它們組合起來(
OP_2<AlicePubKey><BobPubKey><OP_2><OP_CheckMultiSig>
)散列並獲得相應的地址。- 每次他們想要一個新地址時,他們都會獲得下一個索引並重複第 6 步。
*。這些路徑是可選的,但從這些擴展公鑰派生的密鑰只能具有非強化路徑。
**。請注意,在第 5 步中,順序很重要,他們必須先達成一致。否則地址
OP_2<BobPubKey><AlicePubKey><OP_2><OP_CheckMultiSig>
不同,這樣的錯誤可能會導致損失。
以大篷車為例。法定人數中每個簽署者的 xpub 是共享的,而不是共享一個單獨的 xpub。約定是使用每個簽名者的相同派生路徑生成地址。關於生成贖回腳本和地址的順序,通常每個簽名者的公鑰是按字典順序排列的,這基本上意味著按字母順序。這些約定簡化了多重簽名,因此對於每個法定人數的 xpub 密鑰,每個派生路徑都有一個規範地址。