Relation Solidity Compiler et EVM

Oct 19 2020

Lorsque je compile le code ci-dessous en 0.6.6, il ne compile pas (nécessite public) mais en 0.7.3 il compile.

Si je rends le code ci-dessous compilable (en ajoutant du public) dans la version 0.6.6, je peux réussir le déploiement sur Rinkeby. Si je compile le code ci-dessous en 0.7.3, je peux réussir à déployer sur Rinkeby. Cela suggérerait qu'il n'y a pas de changements à Rinkeby EVM, seule la façon dont les versions du compilateur appliquent l'arrangement Bytecode a changé?

Cela signifie-t-il que je pourrais utiliser les normes de compilateur 0.6.6 pendant de nombreuses années plus tard et que mon code ne cassera pas? Les nombreuses itérations du compilateur sont une nouvelle expérience pour moi et j'essaie de comprendre.

Merci

contract A { constructor () payable {} }

Réponses

1 MikkoOhtamaa Oct 19 2020 at 17:44

Vous avez raison. Les changements de version de Solidity sont souvent

  • Changements de syntaxe (rendre la langue plus sûre)

  • Modifications ABI (voir contrat intelligent Ethereum ABI v2

Les changements EVM ajoutent de nouvelles instructions, comme celles pour revert(string)et catch, puis celles-ci sont adoptées dans Solidity en tant que constructions de langage, mais ces changements sont plus rares.