Solidity

我們如何編譯帶有 pragma solidity 0.5.7 的合約以使用硬分叉“istanbul”?

  • March 9, 2020

我正在使用 Truffle 編譯合約,預設情況下它將合約編譯pragma solidity 0.5.7為 evm version petersburg。是否可以為 evm 版本編譯相同的契約istanbul

第二個問題是,當我們使用較舊的 evm 版本編譯合約byzantium並將它們部署到執行istanbul硬分叉的主網時,伊斯坦布爾硬分叉是否真的執行由byzantiumevm 版本編譯的字節碼?如果不是,那麼它究竟是如何工作的?

謝謝

是否可以為 evm 版本的伊斯坦布爾編譯相同的契約?

  • 不可以。您不能將使用 v0.5.7 編寫的合約編譯為 evm 版本的伊斯坦布爾。
  • 這樣做會產生一個錯誤Invalid EVM version requested。
  • 為什麼會出現上述錯誤?
    • 由於在 v0.5.7 的 Solidity 文件中指定的 EVM 版本(目標版本)是直到petersburgistanbul在 v0.5.12 中添加

要回答你的第二個問題,是的。

引用自:https://ethereum.stackexchange.com/questions/80438