[Blockchain] 이더리움 가상머신 EVM (Ethereum Virtual Machine) / Geth
EVM / 솔리디티 / Geth / 바이트코드
EVM(Ethereum Virtual Machine)
👉 이더리움 가상머신(EVM)은 스마트 컨트랙트를 처리해주는 컴퓨터
-
EVM은 작성한 코드와 이더리움 블록체인 사이에 있는 ‘가상 머신’이다
-
블록체인에서 코드가 실행될 수 있도록 한다
-
이더리움 스마트 컨트랙트에 기반한 ‘dApp’은 솔리디티 라는 언어로 작성된다
-
솔리디티로 작성된 dApp을 이더리움 네트워크에 올려야 한다
‘솔리디티’ 언어는 고급 언어이기 때문에 EVM은 솔리디티를 읽을 수 없다
그래서 작성한 솔리디티 코드를 ‘solc’를 이용해 컴파일하여 EVM이 읽을 수 있는 ‘바이트코드 형태’로 만든다
이 바이트코드를 ‘Geth’ 를 이용해 이더리움 네트워크에 올린다
솔리디티 코드 👉 바이트코드 👉 Opcode 흐름이다
스마트 컨트랙트를 생성하고 사용가능하게 하기 위한 과정 순서
스마트 컨트랙트 코딩 👉 소스 코드 컴파일 👉 ABI 로부터 스마트 컨트랙트 객체 생성 👉 스마트 컨트랙트 배포 👉 채굴
Geth (Go Ethereum)
👉 이더리움 가상머신(EVM) 을 만들 수 있는
‘Go 언어’ 로 개발된 이더리움 클라이언트 소프트웨어이다
바이트코드
‘Opcode’ 를 효율적으로 저장하기 위해,
‘Opcode’ 는 바이트코드(Bytecode)로 인코딩된다
모든 Opcode에는 1바이트가 할당된다
https://wavescats.github.io/blockchain/2022/05/17/bc32.html
(👆 바이트코드 분석)