Ethereum [4] (EVM)
2023. 6. 13. 18:45ㆍBlockchain/Ethereum
728x90
반응형
※ 원글 작성 : 22년 4월 27일
EVM
- Smart contrat bytecode를 실행하는 32바이트 스택 기반 실행환경
- 스택의 최대 크기는 1024
- 이더리움 각 노드는 EVM을 포함
- 바이트코드를 OP코드로 변환하고 스택 기반으로 각각의 OP코드 실행
- 구조
- Volatile(휘발성)
- Stack : OP코드 실행하는 stack영역
- Args : contract call 시 인자 저장
- Memory : 아이템을 저장하는 바이트 배열
- Non-volatile(비휘발성)
- Storage : State 저장
- code : smart contract의 컴파일된 바이트코드 저장
- Volatile(휘발성)
- 동작과정
- 바이트코드를 내부 OP코드로 재해석
- e.g.
- 1+2 ?
- 1+2를 계산하는 바이트코드 '6001600201'
- 바이트코드를 치환하여 OP코드 분리시 '0x60, 0x01, 0x60, 0x02, 0x01'
- 0x60 = PUSH OPCODE/0x01, 0x02 = 1, 2/last 0x01 = ADD OPCODE
- 특성
- 임시저장소/영구저장소 구분
- 임시저장소 value : 해당 인스턴스만 유효 / 영구저장소 value : 컨트랙트 전체에 유효
- 메모리 크기 가변적, 스택 크기 제한없음
- 반복호출 횟수 제한 1024번
- 임시저장소/영구저장소 구분
참고
https://medium.com/@micheledaliessi/how-does-ethereum-work-8244b6f55297
http://wiki.hash.kr/index.php/%EB%8C%80%EB%AC%B8
https://ihpark92.tistory.com/50
728x90
반응형
'Blockchain > Ethereum' 카테고리의 다른 글
Ethereum Bootnode 기능 확인 (0) | 2023.06.14 |
---|---|
Ethereum [5] (Go-Ethereum) (0) | 2023.06.13 |
Ethereum [3] (Scalability) (0) | 2023.06.13 |
Ethereum [2] (Algorithm, Protocol) (1) | 2023.06.13 |
Ethereum [1] (Transaction, Block) (0) | 2023.06.13 |