Transactions

無需檢查即可創建簡單安全的交易?

  • December 19, 2018

根據我之前提出的問題(P2SH 安全支出。如何?)在沒有簽名檢查的情況下創建交易可能不安全。

反正我看到很多交易

(for ex.:40eee3ae1760e3a8532263678cdf64569e6ad06abc133af64f735e52562bccc8)

與 scriptpubkey 類似:OP_HASH160 [pubkey] OP_EQUAL

與非常相似

OP_SHA256 [hash] OP_EQUAL (from my prev. question)

而且scriptsig沒有OP_CHECKSIG

PUSHDATA(72)[3045022100ad0851c69dd756b45190b5a8e97cb4ac3c2b0fa2f2aae23aed6ca97ab33bf88302200b248593abc1259512793e7dea61036c601775ebb23640a0120b0dba2c34b79001] 

PUSHDATA(69)[5141042f90074d7a5bf30c72cf3a8dfd1381bdbd30407010e878f3a11269d5f74a58788505cdca22ea6eab7cfb40dc0e07aba200424ab0d79122a653ad0c7ec9896bdf51ae]

我不能相信這筆交易是不安全的。但是這和這些有什麼區別呢?

該交易實際上確實有簽名檢查。它不是 OP_CHECKSIG,而是 OP_CHECMULTISIG,因為該腳本是一個多重簽名腳本。這種情況下的腳本是輸入本身提供的redeemScript。要查看此 OP_CHECKMULSITIG,您需要解碼redeemScript。

贖回腳本是:

5141042f90074d7a5bf30c72cf3a8dfd1381bdbd30407010e878f3a11269d5f74a58788505cdca22ea6eab7cfb40dc0e07aba200424ab0d79122a653ad0c7ec9896bdf51ae

解碼後,這個redeemScript是:

1 042f90074d7a5bf30c72cf3a8dfd1381bdbd30407010e878f3a11269d5f74a58788505cdca22ea6eab7cfb40dc0e07aba200424ab0d79122a653ad0c7ec9896bdf 1 OP_CHECKMULTISIG

如您所見,其中有一個 OP_CHECKMULTISIG 用於進行簽名檢查。OP_CHECKMULTISIG 檢查n列出的公鑰是否提供簽名。n是腳本開頭的數字。在這種情況下,n是 1,公鑰是042f90074d7a5bf30c72cf3a8dfd1381bdbd30407010e878f3a11269d5f74a58788505cdca22ea6eab7cfb40dc0e07aba200424ab0d79122a653ad0c7ec9896bdf。所以這個腳本正在尋找與該公鑰對應的簽名。

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