Solidity
我們如何編譯帶有 pragma solidity 0.5.7 的合約以使用硬分叉“istanbul”?
我正在使用 Truffle 編譯合約,預設情況下它將合約編譯
pragma solidity 0.5.7
為 evm versionpetersburg
。是否可以為 evm 版本編譯相同的契約istanbul
?第二個問題是,當我們使用較舊的 evm 版本編譯合約
byzantium
並將它們部署到執行istanbul
硬分叉的主網時,伊斯坦布爾硬分叉是否真的執行由byzantium
evm 版本編譯的字節碼?如果不是,那麼它究竟是如何工作的?謝謝
是否可以為 evm 版本的伊斯坦布爾編譯相同的契約?
- 不可以。您不能將使用 v0.5.7 編寫的合約編譯為 evm 版本的伊斯坦布爾。
- 這樣做會產生一個錯誤Invalid EVM version requested。
- 為什麼會出現上述錯誤?
- 由於在 v0.5.7 的 Solidity 文件中指定的 EVM 版本(目標版本)是直到
petersburg
並istanbul
在 v0.5.12 中添加要回答你的第二個問題,是的。