Solidity Compiler e relazione EVM
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
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.