Transactions
無需檢查即可創建簡單安全的交易?
根據我之前提出的問題(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
。所以這個腳本正在尋找與該公鑰對應的簽名。