因為 v0.5.x 版的語法上有很大的改變,所以連編譯器都不支援向下相容了。
向下相容(downward compatibility),又稱向後相容(backward compatibility)、回溯相容,在電腦中指在一個程式、庫或硬體更新到較新版本後,用舊版本程式建立的文件或系統仍能被正常操作或使用(包括輸入資料)、在舊版本庫的基礎上開發的程式仍能正常編譯執行,或較舊版的硬體仍可在新版使用的情況 - 維基百科
v0.4.x 以下的程式,已經無法被 v0.5.0 以上編譯器編譯,需要選擇低版的的編譯器才能編譯 (0.4.x 版本以下)。
pragma solidity ^0.4.25;
contract OldContract {
function someOldFunction(uint8 a) {}
function anotherOldFunction() constant returns (bool) {}
}
pragma solidity >=0.5.0 <0.7.0;
interface OldContract {
function someOldFunction(uint8 a) external;
function anotherOldFunction() external returns (bool);
}