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その後、これらは言語構造としてソリディティに採用されておりますが、これらの変更は、より稀です。