EIP-8243 소스 단계 어테스테이션 배칭 (Batching Attestations at Source)
Hegota 포함 제외 (DFI) · 합의·스테이킹 · 원문 상태 Draft · 2026-05-01 작성
같은 커미티에 배정된 여러 검증자를 운영하는 운영자가 N개의 개별 어테스테이션 대신 미리 합쳐진 배치 어테스테이션 하나를 가십에 전파할 수 있게 합니다. 온체인 형식은 바뀌지 않습니다.
왜 필요한가
이더리움에는 현재 약 100만 개의 활성 검증자가 있고 전원이 참여하면 슬롯마다 약 3만 1천 개의 어테스테이션(attestation, 검증자 투표)이 64개 서브넷으로 퍼집니다. 대형 운영자는 많은 검증자를 돌리는데 이들은 대개 같은 체인 상태를 보고 똑같이 투표합니다. 그런데 지금 프로토콜은 검증자마다 개별 메시지 하나만 허용합니다. 중복 집계를 풀어 주면 공격자가 남의 어테스테이션을 모아 지수적으로 많은 부분집합 조합을 만들어 네트워크를 스팸으로 덮을 수 있기 때문입니다. 슬롯을 더 짧게 하고 최종 확정(finality)을 더 빠르게 하려면 어테스테이션 양을 크게 줄여야 합니다. 잔고 통합으로 검증자 수를 줄이는 EIP-7251이 있지만 선택 사항이라 확산이 느립니다. 이 제안은 운영자가 아무 조치를 하지 않아도, 여러 검증자 클라이언트를 관리하는 비콘 노드가 같은 커미티에 배정된 검증자들의 투표를 출발점에서 미리 하나로 합쳐 보내게 해서 통합과 비슷한 효과를 네트워크 차원에서 얻습니다.
무엇이 바뀌나
지금
- 검증자마다 개별 어테스테이션을 하나씩 보내, 완전 참여 시 슬롯마다 약 3만 1천 개의 메시지가 전파됩니다
- 같은 운영자의 검증자들이 같은 내용의 투표를 각각 따로 서명해 보냅니다
- 중복 집계 스팸을 막기 위해 가십에서는 개별 메시지만 허용합니다
EIP-8243 이후
- 같은 커미티에 배정된 검증자들의 투표를 배치 하나로 묶어 전파할 수 있습니다
- 각 검증자의 사전 동의 서명(batch_seal)과 배처의 구성 서명이 배치를 보호해, 스팸은 커미티 크기 수준으로 묶입니다
- 온체인 어테스테이션 형식과 상태 전이는 그대로이고 가십 구간만 바뀝니다
- 실을 미리 서명하지 않은 검증자는 지금처럼 개별 어테스테이션으로 자동 폴백합니다
누구에게 영향이 있나
- 대형 운영자·스테이킹 풀: 같은 커미티에 걸린 다수 검증자의 투표를 메시지 하나로 묶어 대역폭을 줄입니다. 별도 조치 없이 비콘 노드가 투명하게 처리할 수 있습니다.
- 솔로 검증자: 기존 SingleAttestation 경로가 그대로 유지되고 배치에 참여하지 않아도 불이익이 없습니다.
- 클라이언트 팀: 가십 토픽 메시지 타입 변경, 새 서명 검증, 투표 단위 중복 제거 캐시를 구현해야 하며 포크 경계에서 동시 업그레이드가 필요합니다.
- 프로토콜 설계: 바이트당 전달되는 투표 정보가 늘어, 서브넷 통합이나 에폭 단축 같은 합의 처리량 설계 공간이 넓어집니다.
심층 설명
전송 형식: WireAttestation 유니온
가십 토픽 beacon_attestation_{subnet_id}의 메시지 타입이 SingleAttestation에서 SSZ 유니온 WireAttestation으로 바뀝니다. 1바이트 선택자가 앞에 붙어 0x00이면 SingleAttestation, 0x01이면 BatchAttestation입니다. 포크 이전 노드는 접두사 없는 원시 SingleAttestation 바이트를, 이후 노드는 선택자 접두사를 기대하므로 포크 경계에서 모든 노드가 동시에 업그레이드해야 합니다. 검증은 선택자에 따라 분기하며 잘못된 SSZ나 알 수 없는 선택자는 REJECT 처리합니다.
BatchAttestation 구조와 세 가지 서명
BatchAttestation은 committee_index, aggregation_bits, data와 세 서명을 담습니다. signature는 포함된 검증자들의 표준 BLS 집계 서명으로, DOMAIN_BEACON_ATTESTER 아래 data에 서명한 것이라 기존 집계 서명과 동일합니다. batch_seal은 aggregation_bits가 가리키는 모든 검증자가 BatchSealPreimage(slot, committee_index, batcher)에 대해 새 도메인 DOMAIN_BATCH_ATTESTER('0x0B000000')로 서명한 것의 집계입니다. batcher_signature는 배처가 BatcherPreimage(slot, committee_index, aggregation_bits)에 대해 DOMAIN_BATCHER('0x0B0000FF')로 서명한 것입니다. 뒤의 두 서명은 가십 전용으로, 검증 후 폐기되며 체인에는 올라가지 않습니다.
실을 (slot, committee_index, batcher)에만 바인딩하는 이유
실을 aggregation_bits까지 묶으면 슬롯마다 배처와 구성원이 동기적으로 추가 서명을 주고받아야 해서 상태를 가진 상호작용이 생기고 어테스테이션 지연 예산을 깎아먹습니다. 바인딩을 느슨하게 한 덕분에 검증자는 최종 확정 상태일 때 의무 슬롯용 실을 에폭 시작에 미리 서명해 둘 수 있고 임의의 검증자 클라이언트 장애도 견딥니다. 주 배처와 예비 배처 양쪽에 실을 미리 서명해 두면 주 배처가 멈춰도 추가 서명 지연 없이 예비가 이어받으며 예비 배처는 자신의 구성 서명만 새로 만들면 됩니다. 어떤 활성 배처의 실도 없으면 SingleAttestation으로 자동 폴백하고 불이익이 없습니다.
가십 검증 규칙
is_valid_batch_attestation은 먼저 aggregation_bits에 비트가 2개 이상 켜져 있는지 확인합니다(1개면 SingleAttestation을 써야 합니다). batcher는 어테스터 집합에 포함되어야 합니다. 이후 세 서명을 검증합니다. data에 대한 집계 어테스테이션 서명과 BatchSealPreimage에 대한 집계 실은 bls.FastAggregateVerify로, BatcherPreimage에 대한 배처 서명은 bls.Verify로 확인합니다. 어느 하나라도 실패하면 REJECT입니다. 그 밖에 커미티에 없는 검증자 포함, 허용 슬롯 윈도 밖, 해당 커미티와 다른 서브넷 수신도 REJECT 사유입니다.
중복 제거: 새 투표가 하나라도 있으면 수락
노드는 (slot, committee_index, data_root)별로 seen_attesters와 seen_batchers 캐시를 유지합니다. 원칙은 하나입니다. 이전에 보지 못한 투표를 하나라도 담은 메시지만 수락합니다. 이미 본 단일 어테스테이션, 같은 배처의 두 번째 배치, 모든 구성원이 이미 알려진 배치는 IGNORE로 조용히 버립니다. 그 결과 k개의 커미티 키를 쥔 공격자는 의무당 최대 k개의 메시지만 통과시킬 수 있고 각 메시지에 유효한 어테스테이션·실·배처 서명이 모두 필요하므로 소모시키는 대역폭이 공격자 자신의 서명 비용에 비례합니다. O(2^k) 부분집합 폭발은 전파되지 않습니다. 배치에 묶인 검증자의 단일 어테스테이션이 먼저 새어 나가도, 배치는 나머지 구성원의 미확인 투표 덕분에 억제되지 않고 어떤 순서로 도착해도 투표는 유실되지 않습니다.
상태 전이 변경도 새 슬래싱도 없음
BatchAttestation.signature는 도메인과 메시지가 표준 집계 어테스테이션 서명과 동일해서 애그리게이터가 compute_on_chain_aggregate에 바로 투입합니다. 온체인 Attestation 컨테이너와 process_attestation은 바뀌지 않아 블록 유효성 규칙과 과거 블록 처리에 영향이 없습니다. 새 슬래싱 조건도 추가하지 않습니다. 동의 없는 포함과 서명 도용은 실이 별도 도메인·별도 메시지에 대한 서명이라 구조적으로 불가능합니다. 같은 배처의 구성 번복은 seen_batchers로 가십에서 걸러지며 배처 간 중복은 집계 단계에서 수렴합니다. 배처 서명이 슬래싱 가능한 증거를 남기지만 실제 슬래싱 도입은 열린 질문으로 남겨 둡니다.
처리량과 프라이버시로 열리는 설계 공간
네트워크 바이트당 담기는 어테스테이션 정보가 늘어나므로, 트래픽을 그대로 두면 효율 배수만큼 서브넷과 커미티를 통합하고(예: 4배 효율이면 64에서 16으로) 에폭을 같은 비율로 줄일 수 있어(예: 32에서 8슬롯) 더 빠른 L1 최종 확정이 부수 효과로 따라온다고 원문은 설명합니다. 얼마나 공격적으로 갈 수 있을지는 미지수로 남깁니다. 또 아무 커미티 동료나 배처로 골라 투표를 그쪽으로 흘리면 k-익명성 방식의 어테스터 프라이버시 원시 기능이 되고 배치에 빠지면 개별 발행으로 폴백하면 됩니다. 반대로 배치는 어떤 검증자들이 같은 운영자 아래 있는지 드러내는 프라이버시·효율 트레이드오프가 있습니다. 원문은 이 메커니즘이 128K 상한(strawmap) 같은 물리적 검증자 축소의 대체물이 아니라 기존 여유분을 활용하는 것이라고 명시합니다.
진행 상황: Draft, 헤고타 후보에서는 제외
이 EIP는 Draft 상태이고 테스트 케이스와 레퍼런스 구현이 아직 없다고 원문에 표시되어 있어 명세가 바뀔 수 있습니다. 가십 토픽 메시지 타입이 바뀌는 변경이라 노드들이 포크 경계에서 동시에 업그레이드해야 하므로 실제 적용은 하드포크 포함 여부에 달려 있습니다. 콜 기록에 따르면 09.17 ACDC #187에서 EIP-8237, 8341, 8367, 8321, 8243, 8146, 8375 일곱 건이 헤고타(Hegota) 후보에서 제외(DFI)되었고 이 EIP-8243도 여기에 포함되었습니다.