EVM의 구조 - 스택영역 : 연산에 필요한 데이터를 저장하기 위한 공간
256비트 크기의 값들이 저장, 스택의 최대크기 1024개
- 콜 데이터 영역: 이더리움에 트랜잭션을 요청했을 때 전송되는
데이터들이 기록되는 저장 공간
- 로그 : 스마트 컨트랙트가 실행될 때 부가적인 정보를 기록하기 위한 공간
로그영역에 기록된 데이터를 읽으려면 web3.js를 이용해서 DApp을
개발해야 조회 및 검색이 가능
- 스토리지 : 블록체인에 영구적으로 기록하기 위한 저장 공간
키/값 매핑구조이며 256비트 크기 사용
모든 어카운트는 독자적으로 스토리지를 보유하고 있으며,
다른 어카운트 스토리지에서 데이터를 읽거나 기록할수 없음
- 메모리 : 함수를 호출하거나 메모리 연산을 수행할 때 임시로 사용되는 영역
이더리움에서 메시지 호출 시 깨끗하게 초기화된 메모리 영역을 제공
바이트 단위로 메모리 주소 접근가능 읽을때는 256비트단위로 제한
컨트랙트 함수의 가시성 - external : EOA나 다른 컨트랙트에서 호출 가능하지만 동일한 내부에
서는 불가능, 매개변수들이 콜데이터 영역에 기록
-public : EOA나 다른 컨트랙트에서 호출 가능, 매개변수가 항상 메모리
에 기록
-internal : 함수를 선언한 컨트랙트와 상속받은 컨트랙트에서 호출가능
-private : 함수를 선언한 컨트랙트에서만 호출가능
컨트랙트 함수의 상태 변경성 - pure : 읽기X, 상태변경X, 이더전송X
- view : 읽기O, 상태변경X, 이더전송X
- payable : 읽기O, 상태변경O, 이더전송O
- 기본(non-payable) : 읽기O, 상태변경O, 이더전송X
References
박재현,오재훈,박혜영. "코어 이더리움 프로그래밍"
'Ethereum' 카테고리의 다른 글
Private Network 구축하기 (0) | 2018.07.28 |
---|---|
이더리움 플랫폼 구성 (1) | 2018.07.28 |