💡 핵심 인사이트
이더리움 블록체인 위에는 두 가지 종류의 통장(계정, Account)이 존재합니다.
사람이 직접 긴 비밀번호(개인키)를 들고 조종하는 멍청하지만 권력이 있는 **EOA(Externally Owned Account)**와, 사람이 아니라 컴퓨터 코드(스마트 컨트랙트)가 심어져 있어 스스로 톱니바퀴처럼 돌아가는 똑똑한 자판기인 **CA(Contract Account)**입니다.
Ⅰ. EOA (Externally Owned Account, 외부 소유 계정) - "사람의 지갑"
우리가 흔히 코인 거래소에서 돈을 빼서 개인적으로 보관할 때 쓰는 메타마스크(MetaMask), 카이카스 같은 지갑들이 전부 100% EOA입니다.
EOA의 3대 특징
- 개인키(Private Key)로 통제됨:
- 이 계정의 진짜 주인은 '개인키(12개의 니모닉 단어)'를 쥔 사람입니다. 이 키가 없으면 절대 이 지갑의 코인을 1원도 움직일 수 없습니다.
- 네트워크의 심장 (트랜잭션의 유일한 시발점) ★:
- 블록체인 네트워크에서 모든 거래(송금, 스마트 컨트랙트 실행)를 최초로 발생시키는 방아쇠 역할은 오로지 이 EOA만이 할 수 있습니다. 가스비(수수료)를 지불할 현금(ETH)을 쥐고 있는 것도 EOA뿐입니다.
- 멍청한 깡통 통장:
- EOA 내부에는 어떠한 로직(코드)도 들어있지 않습니다. 그냥 잔고(Balance) 숫자만 달랑 적혀있는 순수한 보관용 금고일 뿐입니다.
Ⅱ. CA (Contract Account, 컨트랙트 계정) - "코드로 도는 자판기"
개발자가 이더리움 네트워크에 스마트 컨트랙트(솔리디티 코드)를 배포하면, 이더리움은 그 코드 덩어리에게 고유한 주소(0x123... 같은 통장 번호)를 하나 파주는데 이것이 바로 CA입니다. 유니스왑이나 NFT 발행 컨트랙트가 모두 CA 주소입니다.
CA의 3대 특징
- 개인키가 없음 (코드로 통제됨):
- CA에는 주인이 쥐고 흔들 개인키가 아예 존재하지 않습니다. 이 안의 코인과 기능은 오직 미리 짜여진 '스마트 컨트랙트 로직(코드)'의 조건이 맞았을 때만 기계적으로 동작합니다.
- 스스로 먼저 움직일 수 없음 (수동성):
- 자판기(CA)는 동전이 들어올 때까지 백 년이고 천 년이고 가만히 잠들어 있습니다. 누군가 밖에서 사람(EOA)이 트랜잭션을 날려서 자판기 버튼을 눌러주어야만 비로소 코드가 깨어나 동작을 시작합니다. CA 스스로 트랜잭션을 최초로 생성해서 남에게 쏠 수는 없습니다.
- 상태(State)와 코드(Code)의 보관소:
- 일반 지갑과 달리 이 계정의 뱃속에는 '데이터 저장소(누가 코인을 몇 개 가졌는지)'와 '실행 가능한 프로그램 코드'가 가득 들어차 있습니다.
Ⅲ. EOA와 CA의 상호작용 메커니즘 (돈의 흐름)
이더리움 생태계는 결국 EOA가 CA를 찌르고, CA가 다른 CA를 찌르는 도미노 게임입니다.
- 스텝 1: 철수(EOA)가 유니스왑(CA 1번)에 "내 이더리움을 테더로 바꿔줘!"라며 수수료와 함께 트랜잭션을 쏩니다. (EOA ➔ CA 호출).
- 스텝 2: 유니스왑(CA 1번)의 코드가 깨어납니다. 철수의 돈을 받고, 환율을 계산하기 위해 옆 동네 오라클(CA 2번)의 코드를 또 호출(내부 통신)하여 가격 데이터를 받아옵니다. (CA ➔ CA 통신, 이를 Internal Transaction이라 부름).
- 스텝 3: 계산이 끝나면 유니스왑(CA 1번)이 철수 지갑(EOA)으로 테더 코인을 쏴주며 거래가 끝납니다.
📢 섹션 요약 비유: EOA는 오락실에 온 **'동전(가스비)을 쥔 초등학생(사용자)'**입니다. 뇌가 있고 움직일 수 있지만, 스스로 게임을 만들어내진 못합니다. CA는 오락실 구석에 전원이 꺼진 채 박혀있는 엄청난 그래픽의 **'스트리트 파이터 오락기(스마트 컨트랙트)'**입니다. 혼자서는 100년이 지나도 게임이 켜지지 않지만, 초등학생(EOA)이 다가와 동전 100원(트랜잭션)을 구멍에 넣는 그 순간, 기계(CA) 안의 코드가 미친 듯이 돌아가며 화려한 스킬과 결과를 눈앞에 쏟아냅니다.