Opcodes
OP_DROP 的目的是什麼
據我所知, OP_DROP 是一種將非驗證數據儲存在 tx 中的方法(與在 OP_RETURN 之後使用數據分開)。
但是在bip199描述的這個解鎖腳本中,超時塊和超時操作在OP_DROP之前,這意味著它們會在驗證期間被丟棄?OP_DROP 無法描述之後發生的事情,因為那應該是支付路徑驗證 - 並且因為 afaik 比特幣腳本是基於堆棧的。
OP_DROP 的意義何在?它如何應用於以下腳本?
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
兩者
OP_CHECKSEQUENCEVERIFY
和OP_CHECKLOCKTIMEVERIFY
都是OP_NOP
通過軟分叉重新定義為目前定義的操作碼。操作碼的存在OP_NOP
對堆棧沒有任何作用(它既不彈出項目也不驗證任何內容。)軟分叉只能限制定義,不能擴展。當
OP_NOP
重新定義操作碼以滿足 TIMEOUT 的新條件時,如果不滿足 TIMEOUT 條件,則限制是使事務無效。但是,
OP_NOP
在堆棧上什麼都不做的屬性不能改變,因為這意味著擴大它的定義範圍。OP_CLTV
因此,即使在驗證之後,在或OP_CSV
繼續保留在堆棧上的數字(塊或秒) 。必須手動刪除此數字以使腳本正確執行下一項(如 ECDSA 簽名驗證),這就是我們使用OP_DROP
操作碼的原因。