Solidity

Solidity:最佳實踐——我應該使用哪個編譯器版本?優點缺點

  • October 29, 2021

主要區別在哪裡:

pragma solidity ^0.4.24;pragma solidity 0.4.24;

我為什麼要使用其中一個?優點缺點?

未來我將智能合約部署到區塊鏈上會有什麼影響?

將編譯指示鎖定到特定的編譯器版本

合約應該使用與它們經過最多測試的相同編譯器版本和標誌來部署。鎖定 pragma 有助於確保合約不會被意外部署,例如使用可能存在更高風險未發現錯誤的最新編譯器。契約也可能由其他人部署,並且 pragma 指示原作者預期的編譯器版本。

// bad
pragma solidity ^0.4.4;


// good
pragma solidity 0.4.4;

Solidity 文件:版本編譯指示

版本編譯指示使用如下:

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 中,所以你可以在未來部署它,而不必擔心兼容性。

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