Relacja Solidity Compiler i EVM

Oct 19 2020

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

1 MikkoOhtamaa Oct 19 2020 at 17:44

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.