Script

為什麼 OP_DUP 而不是在 P2PKH 中提供兩次 PubKey?

  • August 1, 2021

我們知道 P2PKH 腳本如下所示:

scriptPubKey: OP_DUP OP_HASH160 <PubKeyHash> OP_EQUALVERIFY OP_CHECKSIG
scriptSig: <Signature> <PubKey>

由於完整的節點都維護著 UTXO 集,是否會節省空間來省略OP_DUP並讓使用者兩次提供他們的公鑰,就像這樣?這會產生任何類型的安全問題嗎?

scriptPubKey: OP_HASH160 <PubKeyHash> OP_EQUALVERIFY OP_CHECKSIG
scriptSig: <Signature> <PubKey> <PubKey>

不幸的是,這並不安全。想像一下帶有 scriptPubkey 的輸出OP_HASH160 <hash(P1)> OP_EQUALVERIFY OP_CHECKSIG。現在任何人都可以通過生成自己的密鑰P2並使用 scriptSig來花費這樣的輸出<sig with P2> <P2> <P1>

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