안녕하세요, 블록체인 기술에 깊은 관심을 가진 블로거입니다. 오늘은 비트코인과 이더리움의 근본적인 차이에 대해 이야기해 보려 합니다.
비트코인은 UTXO(Unspent Transaction Output)라는, 마치 영수증과도 같은 형태로 잔액을 관리합니다. 반면에 이더리움은 우리가 일상적으로 사용하는 은행 계좌 모델과 매우 흡사한 ‘상태(State)’ 모델을 채택하고 있습니다.
이 때문에 이더리움 생태계에서는 모든 것이 **‘계좌(Account)’**를 중심으로 움직입니다. 그래서 이더리움 생태계에서는 모든 것이 계좌를 중심으로 움직입니다. 그리고 이 계좌는 크게 두 가지 종류로 나뉩니다. 바로 **‘외부 소유 계정(EOA)’**과 **‘컨트랙트 계정(CA)’**입니다.
이름만 들어도 생소하고 어렵게 느껴지실 수 있습니다. 이 두 개념을 여러분이 쉽게 이해할 수 있도록 명확하게 설명해 드리겠습니다.
1. EOA, 당신의 개인 지갑이 계좌가 된 이야기
1-1.우리가 비트코인 지갑을 ‘통장’이라 부를 수 없었던 이유
비트코인은 잔액을 UTXO라는 개념으로 관리합니다. 앞서 말씀드린 영수증 비유처럼, 100만 원짜리 영수증(UTXO)이 있으면 그 영수증을 통째로 써서 50만 원을 결제하고 남은 50만 원을 새로운 영수증으로 돌려받는 방식이죠. 그래서 비트코인에는 ‘계좌’라는 개념이 없고, 그저 “어떤 영수증이 누구의 것인지”만 중요합니다.
1-2.이더리움은 ‘계좌’를 만들었습니다
하지만 이더리움은 다릅니다. 이더리움은 비트코인의 UTXO 모델을 버리고, 우리의 은행 계좌처럼 ‘잔액(Balance)’이라는 개념을 도입했습니다. 마치 은행이 고객의 계좌에 잔액을 기록하듯이, 이더리움 블록체인에는 각 계좌의 현재 상태(잔액, 논스, 코드, 저장 공간)가 기록됩니다. 그리고 이 계좌는 두 가지 종류로 나뉩니다.
2. EOA: 당신의 지갑, 그 자체가 계좌입니다
EOA(Externally Owned Account)는 외부 소유 계정의 약자입니다. 이름 그대로 ‘외부’, 즉 사람이 소유하고 관리하는 계정을 의미합니다. 가장 쉽게 비유하자면, EOA는 바로 여러분이 사용하는 은행 계좌입니다.
- 은행 계좌에는 고유한 계좌번호가 있죠? 이더리움 EOA도 고유한 주소를 가집니다.
- 은행 계좌에 돈(잔액)이 있듯이, EOA에는 이더(ETH)나 다른 토큰들이 들어있습니다.
- 은행 계좌에 있는 돈을 사용하려면 비밀번호를 입력해야 합니다. EOA도 마찬가지입니다. EOA의 주인은 ‘프라이빗 키(Private Key)’라는 비밀번호를 가지고 있습니다. 이 프라이빗 키가 있어야만 EOA에 있는 자금을 사용하거나 다른 거래를 시작할 수 있습니다.
EOA의 주요 특징은 아래와 같습니다.
- 사람만 관리할 수 있습니다. EOA는 사람이 소유한 프라이빗 키로만 제어할 수 있습니다.
- 다른 계좌로 거래를 보낼 수 있습니다. EOA는 이더리움 네트워크에서 거래(Transaction)를 시작하는 유일한 주체입니다. EOA가 거래를 만들고 서명해야만 비로소 블록체인에서 일이 벌어집니다.
- 코드가 없습니다. EOA는 말 그대로 지갑 역할만 합니다. 스스로 어떤 로직을 실행하거나 조건을 충족시키는 등의 코드를 가지고 있지 않습니다.
3. CA: 스스로 작동하는 스마트 컨트랙트 계정: 자판기 혹은 미니 은행
CA(Contract Account)는 컨트랙트 계정의 약자입니다. EOA가 사람이 관리하는 계정이라면, CA는 코드가 소유하고 관리하는 계정입니다.
가장 쉽게 비유하자면, CA는 미리 정해진 규칙에 따라 스스로 작동하는 ‘자판기’입니다. 자판기는 동전을 넣으면 정해진 음료를 제공해주듯이, CA도 마찬가지입니다. 누군가 CA로 거래를 보내면, CA 안에 담긴 ‘스마트 컨트랙트(Smart Contract)’ 코드가 자동으로 실행됩니다.
자판기에는 누가 동전을 넣었는지 기록되지 않습니다. CA도 마찬가지입니다. CA는 프라이빗 키가 없기 때문에 스스로 거래를 시작하거나 다른 계정으로 자금을 보낼 수 없습니다. 오직 외부(EOA)의 호출에 의해서만 작동합니다.
CA의 주요 특징은 아래와 같습니다.
- 사람이 아닌 코드로 제어됩니다. CA는 프라이빗 키가 없습니다. 대신, 개발자가 미리 짜놓은 코드가 모든 권한을 가지고 있습니다.
- 스스로 거래를 시작할 수 없습니다. CA는 EOA가 거래를 보내서 코드를 실행해야만 작동합니다. 예를 들어, 토큰 전송은 EOA가 CA(토큰 컨트랙트)에 "나 100 토큰 보낼게"라고 명령하는 거래를 보내야만 이루어집니다.
- 코드가 있습니다. CA는 이더리움 네트워크 위에 존재하는 코드 덩어리입니다. 코드가 어떤 기능을 수행할지, 어떤 규칙을 따를지 모두 미리 정의되어 있습니다. 따라서, CA로 잘못 송금할 경우, 해당 컨트랙트가 자금을 반환하는 기능이 포함되어 있지 않다면 돌려받을 수 없습니다. 자판기에 잘못 투입된 돈을 되찾을 수 없는 것과 같습니다.
4. EOA와 CA, 서로 어떻게 상호작용할까요?
EOA와 CA는 서로 다른 역할을 하지만, 이더리움 생태계는 이 둘의 상호작용으로 돌아갑니다.
가장 흔한 시나리오를 통해 이해해 보겠습니다.
- 시나리오: 민수가 게임 아이템을 구매하고 싶어합니다.
- EOA (민수 지갑): 민수의 지갑입니다. 민수는 이 지갑에 프라이빗 키를 가지고 있습니다.
- CA (게임 컨트랙트): 게임 아이템을 판매하고 거래를 기록하는 스마트 컨트랙트입니다. 이 컨트랙트는 특정 이더(ETH)를 받으면 아이템을 지급하도록 프로그래밍되어 있습니다.
- 거래 시작: 민수(EOA)가 게임 아이템을 사기 위해, 자신의 지갑에서 게임 컨트랙트(CA)로 이더를 보내는 거래를 생성합니다.
- 거래 서명: 민수는 자신의 프라이빗 키로 이 거래에 서명합니다.
- 거래 전파: 서명된 거래는 이더리움 네트워크에 전파됩니다.
- CA 작동: 채굴자들이 이 거래를 블록에 포함시키면, 게임 컨트랙트(CA)의 코드가 자동으로 실행됩니다. 코드는 민수로부터 이더를 받고, 민수에게 아이템을 지급하는 로직을 수행합니다.
이처럼, EOA가 거래를 시작하는 ‘방아쇠’ 역할을 하고, CA는 그 거래에 반응하여 ‘자판기’처럼 정해진 로직을 실행합니다.
5. 팩트 체크: 뉴스 속 그 사건들, EOA vs CA로 이해하기
이더리움 관련 뉴스들을 보면 “지갑이 해킹당했다”, “스마트 컨트랙트에 버그가 있었다”는 이야기가 자주 나옵니다. 이 모든 사건들이 EOA와 CA의 특성과 밀접하게 관련되어 있습니다.
1. 이더리움 ‘더 다오(The DAO)’ 해킹 사건 (2016년):
2016년 6월, 이더리움 역사상 가장 큰 해킹 사건 중 하나인 더 다오 해킹이 발생했습니다. 이 사건은 스마트 컨트랙트(CA)의 버그 때문에 일어난 일입니다. 더 다오 스마트 컨트랙트는 투자금을 모아 분산 투자하는 분산형 자율 조직(DAO)이었습니다. 하지만 이 컨트랙트 코드에 재진입 공격(Re-entrancy Attack) 취약점이 있었죠. 해커는 이 취약점을 이용해 컨트랙트에 예치된 수백억 원 상당의 이더(ETH)를 인출했습니다. 이 사건은 EOA의 프라이빗 키가 털린 것이 아니라, CA의 코드 자체에 결함이 있었기 때문에 발생한 일입니다. 결국 커뮤니티 투표로 하드포크(블록체인 분리)를 결정했고, 새로운 이더리움(ETH)과 이더리움 클래식(ETC)이 탄생하는 계기가 되었습니다. 이 사건은 스마트 컨트랙트 코딩의 중요성을 전 세계에 알린 사건으로 기록되었습니다.
2. 솔라나 지갑 해킹 사건 (2022년):
2022년 8월, 솔라나 지갑 해킹 사건이 발생했습니다. 이 사건은 솔라나 생태계의 여러 지갑 서비스(Phantom, Slope) 사용자들이 피해를 입은 사건으로, 블록체인 보안 회사 오터세크(OtterSec)와 슬로프 파이낸스(Slope Finance)의 조사 보고서에 따르면, 해커들이 슬로프 모바일 앱 서버에 사용자들의 프라이빗 키가 평문으로 저장된 것을 발견하고 이를 탈취한 것으로 밝혀졌습니다. 이 사건은 스마트 컨트랙트의 문제가 아니라, 사용자(EOA)의 프라이빗 키가 외부에서 유출되어 발생한 일입니다. 즉, 은행 계좌 비밀번호가 해킹당해 돈이 빠져나간 것과 같은 원리입니다. 이 사건은 개인키 관리의 중요성을 다시 한번 강조한 사례입니다.
이 두 사건의 차이를 이해하면, EOA는 개인의 관리 소홀로 인한 해킹에 취약하고, CA는 코드의 취약점으로 인해 해킹에 취약하다는 것을 명확히 알 수 있습니다.
결론: EOA와 CA, 핵심만 정리하면?
특징 | 외부 소유 계정 (EOA) | 컨트랙트 계정 (CA) |
주인 | 사람 | 코드 |
관리 방식 | 프라이빗 키 | 코딩된 규칙 |
기능 | 거래 시작만 가능 | 거래를 받아 코드 실행 |
비유 | 은행 계좌, 개인 지갑 | 자판기, 미니 은행 |
프라이빗 키 | 있음 (거래 서명용) | 없음 |
잔액 | 이더(ETH) 보유 가능 | 이더(ETH)와 토큰 보유 가능 |
EOA는 비트코인의 ‘통장’ 비유에서 한 단계 더 나아가, 당신의 개인 계좌입니다. 오직 당신만이 프라이빗 키를 통해 거래를 시작할 수 있습니다. 반면에 CA는 이더리움 블록체인 위에 존재하는 자율적으로 작동하는 프로그램입니다. 이더리움 생태계는 바로 이 두 가지 계정이 서로 상호작용하며 돌아가는 거대한 분산 시스템입니다.
[Q&A]
Q1: 제 지갑 주소는 EOA인가요, 아니면 CA인가요?
A1: 99.9%의 경우 EOA입니다. 대부분의 사람들이 사용하는 메타마스크, 월렛 등은 모두 EOA를 생성합니다. CA는 개발자가 코드를 배포할 때만 만들어집니다.
Q2: EOA는 토큰을 보낼 수 없다고 했는데, 그럼 어떻게 토큰을 보내죠?
A2: 정확히 말하면 EOA는 자체적으로 토큰을 보내는 기능이 없습니다. EOA는 토큰을 보내기 위해 해당 토큰의 스마트 컨트랙트(CA)에 "0x00... 주소로 토큰 10개를 보내달라"는 명령을 담은 거래를 보냅니다. 그러면 CA가 이 명령을 받아 내부 로직에 따라 토큰을 전송합니다.
Q3: 왜 EOA가 거래의 유일한 시작점인가요? CA는 스스로 거래를 시작할 수 없나요?
A3: 네, CA는 스스로 거래를 시작할 수 없습니다. 이는 이더리움의 설계 원칙과 관련이 있습니다. 만약 CA가 스스로 거래를 시작할 수 있다면, 네트워크에 무한 루프를 일으켜 시스템 전체를 마비시킬 수 있기 때문입니다. EOA가 거래를 시작하고 서명하는 ‘비용’을 지불함으로써 네트워크의 안정성이 유지됩니다.
'블록체인' 카테고리의 다른 글
코인을 교환하기, 스왑(Swap)이란? (6) | 2025.08.29 |
---|---|
내 코인을 다른 블록체인으로? 브릿지(Bridge) (5) | 2025.08.29 |
코인 거래, 거래소 없이도 가능하다?! 탈중앙화 거래소(DEX)와 중앙화 거래소(CEX) (3) | 2025.08.28 |
블록체인 수수료(Gas)는 어떻게 정해질까? (7) | 2025.08.28 |
비트코인은 계좌가 없다? UTXO로 이해하는 비트코인 지갑의 작동 원리 (4) | 2025.08.27 |
내 코인, 어떻게 안전하게 기록될까? 블록(Block) 구조 파헤치기 (4) | 2025.08.27 |
100조 원짜리 방패? 해시 파워(Hash Power)가 비트코인을 지키는 원리 (4) | 2025.08.27 |
하루 1000억 원의 비용! 51% 공격이 비트코인을 뚫지 못하는 이유 (5) | 2025.08.26 |