Evm
jumpdest背後的原因是什麼?
我知道,它背後的實際原因只是增加了額外的安全層。
但是為什麼 EVM 甚至需要它呢?Asm 沒有它並且工作得很好。
EVM不需要它。就像你說的,它只是一個額外的安全層。
如果存在編譯器錯誤,堆棧上的程序計數器可以被任意值替換,則該
JUMPDEST
要求可能會或可能不會防止潛在的漏洞利用。我不相信它的用處,因為如果發生這種情況,那麼在測試你的合約時事情就會出錯,而且你永遠不會在公共場合使用你的程式碼。此外,利用者可以很容易地看到所有
JUMPDEST
’s 在哪裡,並且仍然可以跳轉到任意任意JUMPDEST
.更正@2019-04-06:
‘s的存在
JUMPDEST
使得編寫將 EVM 字節碼轉換為 Solidity 程式碼的反編譯器變得稍微容易一些。