이더리움 트랜잭션의 생명주기 (The Complete Lifecycle of an Ethereum Transaction)#
📌 핵심 개념#
트랜잭션은 계정 소유자가 네트워크에 특정 작업을 수행하도록 지시하는 서명된 메시지입니다. 궁극적인 목표는 블록체인의 **상태(State)**를 변경하는 것입니다.
예시:
- 초기 상태: Ciara 1 ETH, Patrick 0 ETH
- 트랜잭션: Ciara가 Patrick에게 1 ETH 전송
- 최종 상태: Ciara 0 ETH, Patrick 1 ETH
🔄 트랜잭션 6단계 과정#
Step 1: 트랜잭션 생성#
지갑(MetaMask 등)이 자동으로 트랜잭션 객체를 구성합니다.
| 필드 | 설명 |
|---|---|
| Chain ID | 대상 블록체인 식별 번호 (메인넷=1, Sepolia=111555111). 리플레이 공격 방지 |
| Nonce | 계정의 트랜잭션 카운터. 0부터 시작하며 순차적으로 증가. 중복/순서 오류 방지 |
| Max Priority Fee Per Gas | 검증자에게 주는 "팁" (우선 처리 인센티브) |
| Max Fee Per Gas | 지불 의향이 있는 최대 총 수수료 (초과분은 환불) |
| Gas Limit | 트랜잭션이 소비할 수 있는 최대 가스량 (안전장치) |
| Recipient Address (to) | 수신 계정/스마트 컨트랙트 주소 |
| Value | 전송할 ETH 양 |
| Data | 스마트 컨트랙트 호출 시 인코딩된 함수와 파라미터 |
| Access List | 가스 비용 절감을 위한 사전 선언 (고급 기능) |
Step 2: 트랜잭션 서명#
- 트랜잭션 데이터를 표준 형식으로 직렬화
- 해시 처리 → Transaction Hash 생성 (고유 식별자)
- 개인키로 서명 → 디지털 서명 생성 (소유권 증명)
Step 3: 트랜잭션 브로드캐스팅#
- 지갑이 RPC(Remote Procedure Call) 엔드포인트를 통해 이더리움 노드에 서명된 트랜잭션 전송
Step 4: 멤풀(Mempool) 진입#
노드가 수행하는 검증:
- 디지털 서명 유효성 확인
- 잔액 확인 (전송 금액 + 최대 가스비)
✅ 검증 통과 시 → 멤풀에 추가 (대기실 역할) → 네트워크 전파
Step 5: 블록 선택#
- 12초(슬롯) 마다 하나의 검증자가 블록 생산자로 선정
- 검증자는 Max Priority Fee가 높은 트랜잭션 우선 선택 (경제적 동기)
- 트랜잭션 실행 → 상태 업데이트 → 블록 구성 → 서명 후 브로드캐스트
Step 6: 증명(Attestation) 및 최종화(Finalization)#
| 단계 | 설명 |
|---|---|
| Attestation | 다른 검증자들이 블록을 검증하고 투표 |
| Inclusion | 스테이킹된 ETH의 2/3 이상 동의 시 블록이 체인에 추가 (확인됨) |
| Finalization | 전체 네트워크 검증자의 2/3 초다수 증명 후 최종화 (~12.8분, 2 에폭) |
💡 1 에폭 = 32 슬롯 ≈ 6.4분
📊 트랜잭션 상태#
| 상태 | 설명 |
|---|---|
| Pending | 멤풀에서 대기 중 |
| Confirmed (Success) | 블록에 포함됨 (~12초) |
| Finalized | 되돌릴 수 없는 상태 (~12.8분) |
| Reverted (Failed) | 실행 실패 (상태 롤백, 가스비는 소모) |
| Dropped | 멤풀에서 제거됨 (낮은 가스비 또는 동일 nonce로 대체) |
🔑 결론#
이 모든 과정은 EOA(Externally Owned Account) 에서 시작된 트랜잭션에 적용됩니다. 암호화 서명부터 네트워크 전체의 증명까지, 각 단계는 이더리움의 상태 변경이 승인되고, 유효하며, 영구적임을 보장합니다.