Signature

使用 0x83 (SINGLE|ANYONECANPAY) 簽名時,tx 雜湊原像中發生了什麼?

  • January 7, 2020

我有腳本來創建 P2WPKH 到 P2WPKH 事務(1 個輸入,1 個輸出)並使用 sighash 類型 0x01 SIGHASH_ALL 對其進行簽名。

我需要在 tx 摘要原像中更改哪些欄位才能將簽名轉換為 sighash 類型為 0x83 (SINGLE|ANYONECANPAY) 的簽名?我無法理解 bip_143 中的文件。

作為參考,tx 摘要原像:

序列化的雙 SHA256:

  1. nVersion 事務(4 字節 little endian)

  2. hashPrevouts(32 字節雜湊)

  3. hashSequence(32 字節雜湊)

  4. outpoint(32 字節雜湊 + 4 字節little endian)

  5. 輸入的 scriptCode(序列化為 CTxOuts 中的腳本)

  6. 此輸入花費的輸出值(8 字節 little endian)

  7. 輸入的 nSequence(4 字節 little endian)

  8. hashOutputs ( 32 字節散列)

  9. 交易的 nLocktime(4 字節小端)

  10. 簽名的 sighash 類型(4 字節小端)

來自 BIP143:

如果未設置 ANYONECANPAY 標誌,則 hashPrevouts 是所有輸入 outpoints 序列化的雙 SHA256;

否則,hashPrevouts 是 0x0000……0000 的 uint256。

您需要的所有詳細資訊都在 BIP 中

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