Opcodes
OP_HASH160 與 OP_SHA256
為什麼我要使用 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 相比,安全優勢很小並不能彌補額外的費用/區塊鏈空間。