Compiler
Solidity 編譯器和 EVM 的關係
當我在 0.6.6 中編譯以下程式碼時,它不會編譯(需要公共),但在 0.7.3 中它會編譯。
如果我在 0.6.6 中使以下程式碼可編譯(添加公共),我可以在 Rinkeby 上成功部署。如果我在 0.7.3 中編譯以下程式碼,我可以在 Rinkeby 上成功部署。這表明 Rinkeby EVM 沒有變化,只是編譯器版本強製字節碼排列的方式發生了變化?
這是否意味著我可以在未來多年使用 0.6.6 編譯器標準並且我的程式碼不會中斷?無數的編譯器迭代對我來說是一種新的體驗,我正在努力解決它。
謝謝
contract A { constructor () payable {} }
你是對的。Solidity 版本更改經常
- 語法更改(使語言更安全)
- ABI 變更(參見乙太坊智能合約ABI v2
EVM 更改添加了新指令,例如 for
revert(string)
和catch
然後這些被作為語言結構採用到 Solidity 中,但這些更改更為罕見。