작성자 케브 및 줄리안. 토니와 프란체스코의 피드백에 감사드립니다.
지연 실행은 가스 한도를 높이는 데 도움을 주는 이더리움의 제안된 업그레이드입니다. 블록을 증명하기 전에 실행할 필요 없이, 지연 실행에서는 증명자들이 블록에 대한 간단한 검사를 통과하고 트랜잭션을 실행하기 전에 투표합니다. 현재 EVM을 zkVM으로 변경하는 것은 가스 한도를 높이기 위한 또 다른 제안된 이더리움 업그레이드입니다. zkVM에서 증명자들은 블록이 유효하게 실행되었다는 간결한 증명만 확인하면 됩니다. 이 게시물은 지연 실행과 zkVM 간의 상호작용을 탐구합니다. 지연 실행의 주요 목표 중 하나는 이더리움 L1에서 zkVM 증명을 용이하게 하는 것입니다.
우리는 블록 n의 올바른 실행 증명 책임을 해당 블록의 빌더에게 할당하고, 해당 빌더가 슬롯 n+1의 블록에 증명을 강제로 포함할 수 있도록 제안합니다.
이 제안은 특히 소위 "프로버 킬러"에 대한 인센티브 정렬을 개선합니다. 프로버 킬러는 증명하기에 비용이 많이 들지만 상대적으로 생성하기 쉬운 블록입니다. 이는 이더리움 프로토콜이 가스 단위로 부과하는 작업과 프로버가 실제로 발생시키는 비용 간의 비대칭성을 활용합니다. 만약 슬롯 n+1 빌더가 블록 n을 증명해야 한다면, 슬롯 n의 빌더는 슬롯 n+1 빌더를 괴롭히기 위해 프로버 킬러를 생성할 수 있습니다. 이 제안은 블록 n의 증명 책임을 슬롯 n 빌더에게 할당함으로써 해당 인센티브 불일치를 제거합니다.
인센티브 정렬이 도움이 되는 특별한 경우는 빌더 가용성 문제가 있을 때입니다. 대규모 블록을 생성한 후 오프라인 상태가 되는 매우 강력한 빌더(또는 이와 유사하게 행동하는 빌더 카르텔)가 있다고 가정해 보겠습니다. 이 경우 작은 백업 빌더들이 이전 블록에 대한 증명을 생성하기 어려울 수 있습니다. 이러한 지식은 (카르텔의) 빌더가 "이더리움을 몸값 요구"하고 수익을 추출할 수 있게 합니다. 슬롯 n 빌더가 슬롯 n의 증명에 대해 책임을 지면 이러한 현상은 사라집니다. 빌더가 오프라인 상태가 되면 블록 내용은 건너뛰고(아래 설명 참조) 다음 슬롯 빌더는 자체 증명할 수 있는 블록을 빌드할 수 있습니다. 따라서 이 제안은 처리량을 로컬 빌딩에서 분리하는 데 도움을 주어 블록 생성 가용성에 이점을 제공합니다.
동일 슬롯 증명 제안
슬롯
n,t=0: 슬롯n의 빌더가 비콘 블록을 전파합니다. 실행 페이로드는 블롭으로 패키징되어 공유됩니다.슬롯
n,t=X(예: t = 2): 증명자들은 지연 실행 EIP에 outlined된 대로 비콘 블록을 정적으로 검증합니다.슬롯
n,t=Y(예: t = 9) (증명 관찰 마감 시간): 증명자들은 사전 상태 루트와 블롭의 kzg 커밋먼트를 입력으로 받아 사후 상태 루트를 출력하는 증명을 사용할 수 있는지에 대한 자신들의 관점을 고정합니다.슬롯
n+1,t=0: 슬롯n+1의 빌더는 사용 가능한 경우 이전 블록의 올바른 실행에 대한 증명을 포함합니다.슬롯
n+1,t=X: 증명자들은 블록n을 완전히 검증합니다. 각 증명자는 자신의 로컬 뷰에 대해 다음 검사를 수행합니다.- 블록
n의 증명이 증명 관찰 마감 시간에 사용 가능했는가? - 그렇다면, 증명이 올바른가?
- 그렇다면, kzg 커밋먼트에 해당하는 블롭을 사용할 수 있는가.
증명자가 모든 질문에 대해 '예'라고 대답하면, 증명이 포함된 슬롯
n+1에 투표합니다. 첫 번째 질문에 '아니오'라고 대답하면 다음 두 조건 중 하나가 충족되면 블록에 투표합니다:- 증명이 블록에 포함되지 않았다.
- 사용 가능한 블롭에 해당하는 kzg 커밋먼트와 함께 올바른 증명이 포함되었다.
- 블록
블록 n에 대한 증명이 블록 n+1에 포함되지 않았거나 증명에 해당하는 블롭 데이터를 사용할 수 없는 경우, 블록 n+1은 블록 n의 실행을 무효 작업으로 처리해야 하며, 이는 블록 n+1의 사전 상태가 블록 n의 사전 상태와 동일함을 의미합니다. 이 메커니즘은 증명과 페이로드 데이터를 모두 사용할 수 있도록 보장하여 보안과 가용성을 보장합니다. 토니와 프란체스코가 여기에서 주장하듯이, 블록을 무효 작업으로 처리해도 무료 데이터 가용성을 노출하지 않습니다. 블록 생성자는 "무료" 데이터 가용성을 얻기 위해 실행 보상을 포기합니다.
슬롯 n의 증명자들은 블록 n-1도 완전히 검증하고, 슬롯 n+1의 증명자들은 블록 n+1도 정적으로 검증합니다. 완전한 검증은 위에 설명된 대로 증명의 정확성과 적시성을 확인하는 것으로 구성됩니다.
추가 고려사항
동일 슬롯 증명 아키텍처는 프란체스코가 이 게시물에서 설명한 뷰 병합(view-merge) 포크 선택 가젯에 의존합니다. 뷰 병합은 네트워크 지연이 일정 상수 Δ보다 낮다고 가정합니다. 증명 관찰 마감 시간은 최대 t = 12 - Δ로 설정해야 합니다. 네트워크 지연이 Δ보다 작으면 빌더의 뷰는 증명자들의 고정된 뷰의 상위 집합이 되어, 증명자들이 증명 관찰 마감 시간 이후에 공유된 증명을 포함하도록 빌더에게 강요하지 않아 분할 뷰 공격을 방지합니다. 뷰 병합은 MEV-번과 FOCIL과 같은 설계의 기반이 되는 동일한 포크 선택 가젯입니다.
마지막으로, 동일 슬롯 증명 아키텍처는 하나 또는 여러 개의 zkVM이 내장되었는지 여부에 따라 달라지지 않습니다. 여러 zkVM 증명이 필요한 경우, 블록을 완전히 검증하는 증명자들은 필요에 따라 자신의 로컬 뷰에 따라 블록에 여러 개의 올바른 증명이 포함되었는지 확인해야 합니다.

