EIP-7934 RLP 실행 블록 크기 상한 (RLP Execution Block Size Limit)
최종 확정 · 네트워크·노드 · 원문 상태 Final · 2025-04-16 작성
블록을 RLP로 인코딩했을 때의 크기에 프로토콜 차원의 상한을 둡니다. 전체 한도 10 MiB에서 비콘 블록 몫 2 MiB를 뺀 크기를 넘는 블록은 무효로 처리합니다.
왜 필요한가
지금 이더리움은 블록의 인코딩된 크기에 엄격한 상한을 두지 않습니다. 그래서 아주 큰 블록이 만들어지면 네트워크에 퍼지는 속도가 느려지고 일시적인 체인 분기(포크)와 리오그 위험이 커집니다. 악의적인 행위자가 일부러 거대한 블록을 만들어 네트워크 성능을 떨어뜨리는 서비스 거부(DoS) 공격에 쓸 수도 있습니다. 게다가 합의 계층(CL)의 가십 프로토콜은 10 MiB를 넘는 블록을 아예 전파하지 않아서 큰 블록이 네트워크 단절이나 서비스 거부 상황을 일으킬 수 있습니다. 이 제안은 블록 크기에 프로토콜 수준의 상한을 두어 블록 검증 시간을 노린 공격에 대한 저항력을 높이고 비콘 블록 크기를 위한 2 MiB 여유분을 명시해 네트워크 구성 요소 사이의 호환성을 지킵니다.
무엇이 바뀌나
지금
- 블록의 인코딩된 크기에 프로토콜 차원의 엄격한 상한이 없습니다
- 아주 큰 블록이 전파를 늦추고 일시적 포크와 리오그 위험을 키웁니다
- 10 MiB를 넘는 블록은 합의 계층 가십으로 전파되지 않아 네트워크 단절 위험이 있습니다
EIP-7934 이후
- RLP 인코딩 크기가 상한(10 MiB에서 2 MiB 여유분을 뺀 값)을 넘는 블록은 무효가 됩니다
- 검증자는 블록을 만들 때 이 크기 한도를 지켜야 합니다
- 모든 노드가 블록 검증과 전파 과정에서 크기 검사를 수행합니다
누구에게 영향이 있나
- 검증자: 블록을 만들 때 RLP 인코딩 크기가 MAX_RLP_BLOCK_SIZE를 넘지 않도록 블록 구성 로직을 지켜야 합니다.
- 클라이언트 팀: 모든 이더리움 클라이언트가 블록 검증과 전파에 이 크기 검사를 넣어야 합니다.
- 네트워크 전체: 일부러 만든 거대 블록 공격에 대한 기본 방어가 생기고 합의 계층 가십 한도와 어긋나 생길 수 있는 네트워크 단절 위험이 줄어듭니다.
심층 설명
상수 정의
세 개의 상수를 도입합니다. MAX_BLOCK_SIZE는 10 MiB(10,485,760바이트), SAFETY_MARGIN은 2 MiB(2,097,152바이트)이고 MAX_RLP_BLOCK_SIZE는 MAX_BLOCK_SIZE - SAFETY_MARGIN으로 계산합니다. RLP 인코딩 크기가 MAX_RLP_BLOCK_SIZE를 넘는 블록은 모두 무효로 간주해야 합니다. 2 MiB 여유분은 비콘 블록 크기를 명시적으로 감안한 것입니다.
검증 함수
프로토콜에 추가되는 검사는 exceed_max_rlp_block_size(block) 형태로, len(rlp.encode(block)) > MAX_RLP_BLOCK_SIZE이면 참을 반환합니다. 참이면 그 블록은 무효이며 거부되어야 하고 블록 생성 단계에서도 그런 블록을 만들지 않아야 합니다.
프로토콜 동작 변경
두 가지가 바뀝니다. 첫째, 블록 생성에서 검증자는 자신이 만드는 블록의 RLP 인코딩 총 크기가 MAX_RLP_BLOCK_SIZE를 넘지 않도록 보장해야 합니다. 둘째, 블록 검증에서 노드는 RLP 인코딩 크기가 MAX_RLP_BLOCK_SIZE를 넘는 블록을 거부해야 합니다. 모든 클라이언트 구현이 이 검사를 블록 검증과 전파 과정에 통합해야 하며 이 한도는 가스 관련 지표와 무관하게 독립적으로 적용됩니다.
왜 10 MiB인가
10 MiB 상한은 이더리움 합의 계층 가십 프로토콜의 제약과 맞춘 값입니다. 10 MiB를 크게 넘는 블록은 합의 계층이 방송하지 않아 네트워크 단절이나 서비스 거부 상황으로 이어질 수 있습니다. 여기에 2 MiB 여유분을 더해 비콘 블록 크기를 명시적으로 반영함으로써 네트워크 구성 요소 전반에서 일관된 블록 전파와 호환성을 보장합니다.
하위 호환성과 보안
이 변경은 새 한도보다 큰 블록과는 하위 호환되지 않습니다. 검증자와 채굴자는 블록 구성 로직이 이 한도를 엄격히 지키도록 해야 합니다. 보안 측면에서는 최대 블록 크기를 제한하는 것 자체가 의도적인 거대 블록 공격에 대한 기본적인 방어가 됩니다. 이 EIP의 상태는 Final로, 명세가 확정되었습니다.