Solidity
Solidity:最佳實踐——我應該使用哪個編譯器版本?優點缺點
主要區別在哪裡:
pragma solidity ^0.4.24;
和pragma solidity 0.4.24;
我為什麼要使用其中一個?優點缺點?
未來我將智能合約部署到區塊鏈上會有什麼影響?
合約應該使用與它們經過最多測試的相同編譯器版本和標誌來部署。鎖定 pragma 有助於確保合約不會被意外部署,例如使用可能存在更高風險未發現錯誤的最新編譯器。契約也可能由其他人部署,並且 pragma 指示原作者預期的編譯器版本。
// bad pragma solidity ^0.4.4; // good pragma solidity 0.4.4;
版本編譯指示使用如下:
pragma solidity ^0.4.0;
這樣的源文件不能用 0.4.0 之前的編譯器編譯,也不能在 0.5.0 開始的編譯器上工作(這第二個條件是用 ^ 添加的)。
根據文件的版本編譯指示部分:
版本編譯指示使用如下:
pragma solidity ^0.4.0;
這樣的源文件不能用 0.4.0 之前的編譯器編譯,也不能在 0.5.0 開始的編譯器上工作(這第二個條件是用 ^ 添加的)。
所以在你的例子中,
pragma solidity 0.4.24;
可以在任何編譯器0.4.24
上工作,而
pragma solidity ^0.4.24;``0.4.24
將在從(含)到0.5.0
(不含)的任何編譯器上編譯。但是,請注意,這只是為了編譯器兼容性。一旦你編譯了你的合約,它就不再存在於 Solidity 中,所以你可以在未來部署它,而不必擔心兼容性。