Solidity Version과 EVM Version 사이에 상관관계가 있나요?

Solidity 버전 0.8.7로 작성한 컨트랙트를 Cypress에 테스트 해볼 겸 배포해보았는데, 정상적으로 동작을 수행하더라구요…??

Solidity v0.8.7 부터는 EVM 버전이 London으로 알고 있고, Cypress의 경우 현재 Constantinople 버전을 사용중인 것으로 알고 있었습니다.

Solidity 버전이 높고, EVM 버전이 낮은 상황에서도 상호 호환이 문제 없이 되는 것인지, 혹은 문제점이 있다면 어떠한 부분들에서 문제가 발생할 가능성이 있는지 여쭤보고 싶습니다.

감사합니다!


(+ 추가적으로, 위와 관련하여 Solidity와 EVM 간에 상관관계에 대해 나와 있는 문서같은 것들이 있다면 공유 부탁드리겠습니다 :sweat_smile: 관련된 내용을 찾기가 어렵네요ㅎㅎㅎ)

1 Like
  • Solidity버전이 높고 EVM의 버전이 낮은상황에서 문제가 되지않는지?

    • 각 하드포크별로 새로 추가된 EVM의 opcode들이 있습니다. 그 opcode들이 solidity compile을 통해 나왔고, 클레이튼에서 이 Opcode를 처리하지못한다면 문제가 발생할 수 있습니다.
  • Solidity와 EVM 버전의 상관관계

    • Solidity에서 EVM 최신버전을 지원하더라도, solc의 옵션을 보면 사용가능한 VM의 버전을 지정할 수 있습니다. 그말인 즉슨 Solidity에서 EVM의 버전에 따라 컴파일을 통해 사용가능한 EVM Opcode set을 설정할 수 있다라고 유추할 수 있습니다.
    • Using the Compiler — Solidity 0.8.12 documentation

감사합니다.

3 Likes

감사합니다 :smile:
머릿속에서 애매모호하게 그려지던 것들이 좀 더 명확해졌습니다!!

1 Like