Solidity Compiler e relazione EVM

Oct 19 2020

Quando compilo il codice seguente in 0.6.6 non compila (richiede public) ma in 0.7.3 compila.

Se rendo compilabile il codice seguente (aggiungendo pubblico) in 0.6.6 posso distribuire con successo su Rinkeby. Se compilo il codice seguente in 0.7.3 posso distribuire con successo su Rinkeby. Ciò suggerirebbe che non ci sono modifiche a Rinkeby EVM, è cambiato solo il modo in cui le versioni del compilatore applicano la disposizione dei Bytecode?

Questo implica che potrei usare gli standard del compilatore 0.6.6 per molti altri anni lungo la strada e il mio codice non si romperà? Le numerose iterazioni del compilatore sono una nuova esperienza per me e sto cercando di capirlo.

Grazie

contract A { constructor () payable {} }

Risposte

1 MikkoOhtamaa Oct 19 2020 at 17:44

Hai ragione. Le modifiche alla versione di Solidity sono spesso

  • Modifiche sintattiche (rendere la lingua più sicura)

  • Modifiche ABI (vedi Ethereum smart contract ABI v2

Le modifiche EVM aggiungono nuove istruzioni, come quelle per revert(string)e catchpoi queste vengono adottate in Solidity come costrutti del linguaggio, ma queste modifiche sono più rare.