Solidity
在部署合約時如何判斷使用哪個版本的 Solidity?
我在各種智能合約教程中註意到,不同版本的 Solidity 聲明在頂部。我會假設您只會使用最新的,但我注意到某些合約似乎在一個平台上執行而在另一個平台上不起作用,即通過 Remix & MetaMask vs Mist 部署相同的合約?
這是一個安全功能。
solc
將編譯器視為可能的缺陷來源可能會有所幫助。這是一種說明在開發和測試中使用的編譯器版本的方式。考慮一個團隊花費巨資進行艱苦測試的情況。然後,一系列不幸的情況導致使用更新的編譯器進行編譯。他們錯誤地認為它已經過徹底的測試,但實際上它是不同的並且被破壞了。哎呀!
如果與源文件要求的內容不匹配,編譯器將拋出錯誤。
pragma solidity 0.4.11; // version 0.4.11. Nothing else will do. pragma solidity ^0.4.11; // version 0.4.11 or newer
在我看來,^ 符號便於非正式的開發。在進行廣泛的測試或發布之前,需要精確的符號。
它基本上說“這段程式碼是用 0.4.11 編譯的”,人們可以自己編譯原始碼並查看它是否完全匹配。隱含地,如果測試的版本是用其他東西編譯的,那麼“這個”字節碼根本沒有經過真正的測試。
希望能幫助到你。