SolidityCompilerとEVMの関係
Oct 19 2020
以下のコードを0.6.6でコンパイルすると、コンパイルされません(publicが必要です)が、0.7.3ではコンパイルされます。
以下のコードを0.6.6でコンパイル可能(パブリックを追加)にすると、Rinkebyに正常にデプロイできます。以下のコードを0.7.3でコンパイルすると、Rinkebyに正常にデプロイできます。これは、Rinkeby EVMに変更がなく、コンパイラバージョンがバイトコード配置を強制する方法のみが変更されたことを示唆しますか?
これは、0.6.6コンパイラ標準を今後何年にもわたって使用でき、コードが壊れないことを意味しますか?コンパイラを何度も繰り返すことは私にとって新しい経験であり、頭を包み込もうとしています。
ありがとうございました
contract A { constructor () payable {} }
回答
1 MikkoOhtamaa Oct 19 2020 at 17:44
あなたは正しいです。Solidityバージョンの変更はしばしば
構文の変更(言語をより安全にする)
ABIの変更(EthereumスマートコントラクトABI v2を参照)
EVMの変更はのためのもののように、新しい命令を追加revert(string)し、catchその後、これらは言語構造としてソリディティに採用されておりますが、これらの変更は、より稀です。