Script

為什麼 CHECKLOCKTIMEVERIFY 和 CHECKSEQUENCEVERIFY 操作碼必須通過 DROP 操作碼成功?

  • March 20, 2019

以 VERIFY 結尾的操作碼通常不會在堆棧上留下任何東西。在設計這些操作碼時,CHECKLOCKTIMEVERIFY 和 CHECKSEQUENCEVERIFY 操作碼會在堆棧上留下一些東西,因此必須使用 DROP 操作碼成功,有什麼不同和推理?

這是因為 CSV 和 CLTV 是在軟分叉中重新定義的 NOP 操作碼。

由於軟分叉只能將交易的有效性從有效更改為無效,因此允許重新定義的唯一效果是使腳本在某些情況下中止,否則繼續像 NOP 一樣行事。

NOP 不會從堆棧中彈出任何內容,因此,CLTV 和 CSV 也不能。否則,像“0 n CSV 0 EQUAL”這樣的腳本將從無效變為有效。

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