Opcodes

OP_HASH160 與 OP_SHA256

  • December 16, 2019

為什麼我要使用 OP_HASH160 而不是 OP_SHA256,反之亦然?為什麼有兩種選擇?在什麼情況下我應該使用其中一種?

解鎖腳本範例:

來自 BIP199:(其中 HASHOP 可能是其中之一)

   OP_IF
       [HASHOP] <digest> OP_EQUALVERIFY OP_DUP OP_HASH160 <seller pubkey hash>            
   OP_ELSE
       <num> [TIMEOUTOP] OP_DROP OP_DUP OP_HASH160 <buyer pubkey hash>
   OP_ENDIF
   OP_EQUALVERIFY
   OP_CHECKSIG

從 miniscript 收到的 HTLC 展示中

<key_remote> OP_CHECKSIG OP_NOTIF
 <key_revocation> OP_CHECKSIG
OP_ELSE
 OP_IF
   OP_DUP OP_HASH160 <HASH160(key_local)> OP_EQUALVERIFY OP_CHECKSIGVERIFY
   OP_SIZE <20> OP_EQUALVERIFY OP_HASH160 <h> OP_EQUAL
 OP_ELSE
   <f003> OP_CHECKSEQUENCEVERIFY
 OP_ENDIF
OP_ENDIF

我認為 HASH160 是鎖定/解鎖腳本中 SHA-256 的標準/首選,因為它的摘要更小(20 字節摘要而不是 SHA-256 的 32 字節),因此它在區塊鏈中佔用的空間更少。由於佔用的空間更少,您支付的挖礦費用更少,而且沒有安全成本(160 位遠高於 128 位門檻值)

請記住,使用 HASH160,您已經進行了兩次散列(HASH160 = RIPEMD160(SHA-256)),因此與兩輪 SHA-256 相比,安全優勢很小並不能彌補額外的費用/區塊鏈空間。

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