Relacja Solidity Compiler i EVM
Kiedy kompiluję poniższy kod w wersji 0.6.6, nie kompiluje się (wymaga publicznego), ale w wersji 0.7.3 kompiluje się.
Jeśli uczynię poniższy kod kompilowalnym (dodając publiczny) w wersji 0.6.6, mogę z powodzeniem wdrożyć na Rinkeby. Jeśli skompiluję poniższy kod w 0.7.3, będę mógł pomyślnie wdrożyć na Rinkeby. Sugerowałoby to, że nie ma żadnych zmian w Rinkeby EVM, zmienił się tylko sposób, w jaki wersje kompilatora wymuszają układ kodu bajtowego?
Czy to oznacza, że mógłbym używać standardów kompilatora 0.6.6 przez wiele lat w przyszłości, a mój kod się nie zepsuje? Liczne iteracje kompilatora to dla mnie nowe doświadczenie i próbuję się tym zająć.
Dziękuję Ci
contract A { constructor () payable {} }
Odpowiedzi
Masz rację. Częste są zmiany wersji Solidity
Zmiany składniowe (uczynienie języka bezpieczniejszym)
Zmiany ABI (patrz Inteligentny kontrakt Ethereum ABI v2
Zmiany EVM dodają nowe instrukcje, takie jak te dla, revert(string)a catchnastępnie są one przyjmowane do Solidity jako konstrukcje językowe, ale te zmiany są rzadsze.