본문 바로가기
  • 개발 / 공부 / 일상
BlockChain

(BlockChain) EVM & Solidity

by JJeongHyun 2023. 2. 27.
반응형

EVM : Ethereum Virtual Machine의 약자

  • Smart Contract를 실행하기 위한 가상의 컴퓨터
    • JVM(Javascript Virtual Machine)과 유사
  • 블록체인 네트워크 (peer)에 포함되어 항상 실행
    • 노드(peer)끼리의 합의에 사용
    • ByteCode 실행에 사용
  • 네트워크의 모든 노드는 블록 검증을 위해서 동일한 계산을 수행하며 같은 값을 저장
  • Ethereum 전체를 작동하는 엔진
    • EVM byteCode 언어 사용
  • Turing complete state machine
    • Turing complete : 조건문과 반복문을 사용할 수 있다는 뜻
    • state machine : 한번에 하나의 상태를 가진다. 즉, 여러 상태를 동시에 가질 수 없다

 

EVM의 동작 원리

  • Smart Contract 의 코드는 Solidity 언어로 작성
  • 작성된 코드를 컴파일하면 byteCode형태로 전환
    • solidity → 고급언어 → byteCode
  • byteCode는 EVM이 해석이 가능한 기계어
  • EVM이 OPCODE단위로 해석하여 실행
    • 컴퓨터 구조와 매우 흡사
      • C, JAVA 등으로 작성된 고급언어를 컴파일
      • CPU가 해석할 수 있는 기계어 형태 전환
      • CPU는 그걸 해석하여 연산처리를 한다

solidity / byteCode / EVM

 

 

Solidity

  • Smart Contract  프로그래밍 언어
  • 컴파일하여 ByteCode를 생성
    • ByteCode는 트랜잭션의 data로 저장되어 Smart Contract  실행 시 사용
      • Smart Contract  : 계약의 이행을 자동으로 해주는 코드
  • 한마디로 Smart Contract라는 라는 계약서를 만드는 언어
    • EVM에서 작동하게끔 설계된 언어라고 쉽게 생각할 수 있다
  • 특징
    • C++, Python, JS의 영향을 받은 정적타입의 프로그래밍 언어
      • 정적타입 : 변수에 들어갈 값의 형태로 따라 자료형을 지정해 준다
    • EVM에서 작동 가능한 byteCode로 컴파일되어 Smart Contract을을 개발하기 수월하다