Compilador de solidez e relacionamento EVM

Oct 19 2020

Quando eu compilo o código abaixo em 0.6.6 ele não compila (requer público), mas em 0.7.3 ele compila.

Se eu tornar o código abaixo compilável (adicionando público) em 0.6.6, posso implantar com êxito no Rinkeby. Se eu compilar o código abaixo no 0.7.3, posso implantar com sucesso no Rinkeby. Isso sugere que não há mudanças no Rinkeby EVM, apenas a maneira como as versões do compilador reforçam o arranjo do Bytecode mudou?

Isso implica que eu poderia usar os padrões do compilador 0.6.6 por muitos anos mais tarde e meu código não quebraria? As inúmeras iterações do compilador são uma experiência nova para mim e estou tentando entender isso.

Obrigado

contract A { constructor () payable {} }

Respostas

1 MikkoOhtamaa Oct 19 2020 at 17:44

Você está certo. Mudanças na versão do Solidity são frequentes

  • Mudanças sintáticas (tornar o idioma mais seguro)

  • Alterações de ABI (consulte Ethereum smart contract ABI v2

As alterações do EVM adicionam novas instruções, como aquelas para revert(string)e, em catchseguida, são adotadas no Solidity como construções de linguagem, mas essas alterações são mais raras.