개요
이더리움 PoS에서 한 트랜잭션이 네트워크에 전파되고 블록에 포함된 뒤 최종화되기까지의 핵심 흐름 정리 노드별 로컬 mempool, 슬롯 기반 제안자 선정, 검증자 attestation, 포크 선택, 최종화 순서로 진행 현실적으로 일부 제안자는 외부 빌더를 사용할 수 있으나 프로토콜 관점의 기본 흐름을 기준으로 설명
전체 흐름
1 트랜잭션 발생 및 전파
- 사용자가 서명된 트랜잭션 전송
- 여러 노드가 트랜잭션을 수신하고 각자 로컬 mempool에 저장
- mempool은 전역 공유가 아닌 노드 로컬 데이터 구조
2 슬롯과 제안자 선정
- 시간은 슬롯 단위로 진행되며 슬롯들은 에포크로 묶임
- 매 슬롯마다 지분 가중 무작위로 1명의 검증자가 제안자로 선정됨
- 제안자는 검증자 집합에서만 나옴 일반 노드는 선정 대상이 아님
- 검증자 입장에서는 자기 차례 개념이 존재하지만 모든 노드의 차례는 아님
3 블록 생성과 제안
- 제안자는 자신의 로컬 mempool에서 트랜잭션을 선택해 블록을 구성
- 상태 전이 규칙을 적용해 블록을 만들고 서명 후 네트워크에 브로드캐스트
- 현실에서는 일부 제안자가 외부 빌더를 통해 블록을 공급받기도 하나 기본 모델은 제안자가 직접 선택
4 검증자 검증과 attestation
- 다른 검증자들은 수신한 블록의 구조 유효성 트랜잭션 유효성 가스 사용량 계산 부모 해시 등을 점검
- 문제가 없으면 해당 슬롯에 대한 attestation을 생성해 전파
- 문제가 있거나 더 적합한 체인 헤드가 있으면 해당 블록을 무시하고 다른 후보에 가중치 부여
5 포크 선택과 체인 반영
- 노드는 수신된 attestations을 가중치로 사용해 포크 선택 규칙을 적용해 헤드 블록 결정
- 충분한 가중치가 모이면 제안된 블록이 canonical chain의 헤드로 채택되어 연결
- 이후 에포크 경계를 통과하며 정당화와 최종화가 진행되며 최종화 이후에는 되돌리기 어려움
6 최종화와 재구성 가능성
- 일반적으로 두 개의 연속된 에포크 조건이 충족되면 관련 블록들이 최종화 상태에 도달
- 최종화 이전에는 네트워크 지연이나 가중치 분포 변화에 따라 짧은 재구성 발생 가능성이 존재
중요한 오해 정리
- 노드가 순서를 기다리다 블록을 만든다 아님 검증자만 가능하며 매 슬롯 한 명의 제안자만 블록을 제안
- 모든 노드가 승인해야 블록이 올라간다 아님 지분 기반 다수 검증자의 attestation이 합의에 충분하면 포함
- mempool이 하나만 존재한다 아님 노드마다 로컬 mempool 유지
역할 요약
- 일반 노드 트랜잭션 수신과 로컬 mempool 유지 블록과 attestation 검증 포크 선택 수행
- 검증자 슬롯에 따라 블록 제안 또는 attestation 수행 스케줄에 따라 역할이 정해짐
- 제안자 로컬 mempool 기준 트랜잭션 선택 블록 구성 및 서명 후 전파
- attester 블록 유효성 검토 후 투표 가중치 제공
- 빌더 선택적 오프체인 역할 제안자가 위임해 블록을 공급받는 경우가 존재하나 프로토콜 필수 요소는 아님
핵심 요약
- 모든 노드가 블록을 만드는 구조가 아님 검증자 집합에서 슬롯별 1명이 제안
- 나머지 검증자는 검증과 attestation으로 가중치 제공
- 충분한 가중치가 모이면 체인에 반영되고 에포크 진행을 통해 최종화 도달