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