이더리움에서는 계정(account)의 유형이 크게 두가지로 나뉜다:
1. 외부 소유 계정(Externally Owned Account, EOA)
2. 컨트랙트 계정(Contract Account, CA)
나중에 Solidity 코드를 작성할 때 msg.sender 개념이 헷깔릴 여지가 있어 두 개의 계정을 분리해서 생각할 필요가 있다.
다음과 같이 정리해봤다.
외부 소유 계정(Externally Owned Account, EOA)
메타마스크와 같은 웹 또는 모바일 지갑에서 생성한 계정의 유형을 외부 소유 계정(EOA)이라고 한다. 앞으로는 EOA라고 통칭한다. EOA는 메타마스크를 사용해본 사람이면 알겠지만 개인키가 있는 계정이다. 이 개인키로 자금이나 컨트랙트에 대한 접근 및 제어가 가능하다.
컨트랙트 계정(Contract Account, CA)
컨트랙트 계정(CA)에는 스마트 컨트랙트가 담긴다. CA에는 개인키가 없으며, 작성된 스마트 컨트랙트 코드의 로직으로 제어한다.
계정 간의 거래 유형
CA는 개인키가 없으므로 트랜잭션을 시작(initiate)할 수 없고 EOA만 트랜잭션을 시작할 수 있다.
EOA로부터 전달 받은 메세지를 수행하기 위해 CA는 자신의 컨트랙트 혹은 다른 컨트랙트와 교류하여 계약이 발동된다.
즉, 모든 트랜잭션은 EOA로부터 시작되며 거래 유형은 다음과 같이 구분지을 수 있다.
'Coding(코딩) > Blockchain 이론 정리' 카테고리의 다른 글
[Blockchain 개념 정리] - Block의 해시(Hash)값은 어떻게 생성될까? (0) | 2022.09.20 |
---|---|
[Blockchain 개념 정리] - 블록체인 api 사용법 (1) | 2022.09.19 |
[Blockchain 개념 정리] - 블록생성, 채굴 어떻게 되는걸까? (4) | 2022.09.16 |