Segregated-Witness

如何使用 ECDSA 簽署比特幣交易?

  • June 22, 2022

我非常熟悉 secp256k1 ECDSA 的工作方式以及使用的方程式。但是,我不知道這個 ECDSA 如何適用於簽署比特幣(SegWit 格式)並將其轉移到另一個錢包地址。

例如,如果我的錢包中有一些比特幣輸入,如何使用 secp256k1 曲線以便我可以解鎖(驗證我擁有)該比特幣並將其轉移給 Bob。那麼,鮑勃如何使用曲線簽署他收到的這個比特幣。

您說您熟悉 secp256k1 和 ECDSA 的工作原理,但從您稍後所說的內容來看,我不確定您是否熟悉。SegWit v0 沒有改變簽名算法(ECDSA)和曲線(secp256k1)。SegWit v1 (Taproot)確實改變了簽名算法 (Schnorr)。SegWit v0 (bech32) 的地址格式確實發生了變化,但這與簽名無關。除了要簽名的消息(或交易數據)之外,簽名部分與 pre-SegWit 完全相同。簽名的內容由 sighash 標誌定義,該標誌確實隨著 SegWit 升級(BIP 143)而改變。

例如,如果我的錢包中有一些比特幣輸入,如何使用 secp256k1 曲線以便我可以解鎖(驗證我擁有)該比特幣並將其轉移給 Bob。那麼,鮑勃如何使用曲線簽署他收到的這個比特幣。

使用 SegWit v0,您可以生成見證人(通常包括使用 ECDSA 簽名算法生成的簽名)以將比特幣轉移到新目的地。引入 SegWit 的關鍵是見證人的儲存位置,而不是簽名的生成方式。然而,接收者(在這種情況下是鮑勃)沒有簽署任何東西。資金被鎖定到他的公鑰/地址,但他只需要在他從這個地址轉移資金時產生簽名。

引用自:https://bitcoin.stackexchange.com/questions/114189