Signature

簽署多個輸入原始交易 - 算法和 sighash 類型

  • November 24, 2020

我有一個未簽名的原始交易:

01000000020dcc23ccdb3665779a7657577cd33c5c0660e969ea2ffaf5438c58306ebc9dd20100000000ffffffff49508924c21b25ee2ff6aed61ccc202793aa992d3e033f12f2bf4a94d6346d010000000000ffffffff0240420f00000000001976a9140d7ca1e17524d6c96209cf503fb053613cecf8f688aca0f703000000000017a91452636ce984783dac880e139fa3b69b4d9be39ab68700000000

我已閱讀以下主題:

如何兌換基本 Tx?

需要逐步兌換原始交易範例

這些執行緒解釋了使用 1 個輸入簽署原始交易。

問題

我是否正確理解兩個輸入都將分別簽名?

所以首先,我們簽署第一個,然後簽署第二個。為了簽署一個輸入,我們用scriptPubKey替換這個輸入的scriptSig,它會鎖定這個輸入。另一個的ScriptSig保持空白。

這對嗎?

但是在步驟 13 的兩個執行緒中,事務結束時都附加了一些東西。它被稱為雜湊碼類型

這是什麼?這與附加到簽名的**sighash 類型字節有關嗎?**如果不是如何確定這個值?

對於我上面描述的場景(單獨簽署輸入),正確的 sighash 類型是什麼?這是:0x81(SIGHASH_ALL | SIGHASH_ANYONECANPAY)?還是應該是 0x01 (SIGHASH_ALL)?

我不知道哪個是正確的,因為要簽名的交易包含另一個輸入(沒有設置 scriptSig,但它仍然包含它)。

我是否正確理解兩個輸入都將分別簽名?

是的

所以首先,我們簽署第一個,然後簽署第二個。為了簽署一個輸入,我們用 scriptPubKey 替換這個輸入的 scriptSig,它會鎖定這個輸入。另一個的 ScriptSig 保持空白。這對嗎?

是的

但是在步驟 13 的兩個執行緒中,事務結束時都附加了一些東西。它被稱為雜湊碼類型。這是什麼?這與附加到簽名的 sighash 類型字節有關嗎?

是的

對於我上面描述的場景(單獨簽署輸入),正確的 sighash 類型是什麼?這是:0x81(SIGHASH_ALL | SIGHASH_ANYONECANPAY)?還是應該是 0x01 (SIGHASH_ALL)?

使用 0x01 (SIGHASH_ALL)

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