EIP-8369 FOCIL 적격성 VOPS 프로필 (VOPS Profiles for FOCIL Eligibility)

Hegota 포함 제안 (PFI) · 합의·스테이킹 · 원문 상태 Draft · 2026-08-05 작성

검열 저항 장치인 FOCIL이 어떤 트랜잭션의 누락까지 강제로 막아 줄지 정하는 두 가지 적격성 기준(VOPS 프로필)을 설명하는 정보성 EIP입니다.

왜 필요한가

이더리움은 검열 저항을 강화하려고 FOCIL(EIP-7805)을 준비하고 있습니다. 여러 검증자가 뽑은 인클루전 리스트의 트랜잭션을 블록 제작자(빌더)가 빼면, 그 누락이 정당한지 다른 검증자들이 검사하는 구조입니다. 지금 규칙은 단순합니다. 페이로드 끝에 붙였을 때 무효이거나 남은 가스가 모자라면 빼도 됩니다. 이 검사는 보내는 계정의 가스, 논스, 잔액만 보면 되므로 저렴합니다. 그런데 계정 추상화의 프레임 트랜잭션(EIP-8141)은 검증 로직을 직접 프로그래밍할 수 있어서 유효성이 키드 논스, 대납자 상태, 최근 루트, 계정 스토리지에 따라 달라집니다. 어떤 트랜잭션까지 싸게 검사해서 포함을 강제할 수 있는지 경계가 없으면, 노드들이 같은 인클루전 리스트를 보고도 누락 판정에서 갈릴 수 있습니다. 이 EIP는 그 경계를 두 가지 프로필로 정리해 설명합니다.

무엇이 바뀌나

지금

EIP-8369 이후

누구에게 영향이 있나

심층 설명

두 프로필의 경계

프로필 1(Base VOPS)은 레거시, EIP-2930, EIP-1559, EIP-7702 트랜잭션을 다루고 검증 상태 표면을 추가하지 않습니다. Base VOPS는 모든 계정의 (address, nonce, balance, codeFlag)를 유지하며 codeFlag는 코드가 비면 0, 아니면 1입니다(EIP-7702 위임 표시자 포함). 프로필 2(FOCIL AA-VOPS)는 blob_versioned_hashes가 빈 EIP-8141 프레임 트랜잭션을 다루고 코드와 codeHash, 모든 계정의 첫 AA_VOPS_SLOT_COUNT개 스토리지 슬롯, 키드 논스 상태, 최근 루트 상태를 표면에 더합니다. EIP-4844 블롭 트랜잭션과 블롭을 실은 프레임 트랜잭션은 어느 프로필의 후보도 아닙니다. 공개 멤풀 승인과 FOCIL 적격성은 별개 검사라서 한쪽만 통과하는 트랜잭션도 있습니다.

프로필 1: Base VOPS

조건은 세 가지입니다. 구조적으로 유효한 해당 유형의 트랜잭션일 것, 서명이 복원된 발신자와 맞을 것, chain_id가 있다면 체인과 일치할 것입니다. 누락은 남은 페이로드 가스에 맞지 않거나, 페이로드 끝에서 sender.nonce나 sender.balance 때문에 무효일 때 정당합니다. 수수료 검사 fee_valid(tx, block)는 max_fee_per_gas >= block.base_fee_per_gas와 max_priority_fee_per_gas <= max_fee_per_gas를 요구하고 레거시와 EIP-2930에서는 gas_price가 두 필드를 대신합니다. 발신자는 EIP-3607을 만족해야 하며 EIP-7702 위임 표시자는 유효한 위임 EOA로 취급합니다. 프로필 1은 코드를 분류만 하고 실행하지 않으며 IL VERIFY 예산도 쓰지 않습니다.

프로필 2: FOCIL AA-VOPS

후보 여부는 트랜잭션만 보고 판정합니다. 정적으로 유효한 EIP-8141 프레임 트랜잭션이고 만료 검증 프레임을 뺀 형태가 self_verify, deploy | self_verify, only_verify | pay, deploy | only_verify | pay 네 가지 중 하나와 일치해야 합니다. 검증 프리픽스에 ATOMIC_BATCH_FLAG가 없고 프리픽스 뒤에 VERIFY 모드 프레임이 없어야 하며 VERIFY 예산 비용이 MAX_VERIFY_GAS_PER_TX 이하여야 합니다. 적격성은 평가 상태에서 추가로 봅니다. EIP-8250 키드 논스와 EIP-8272 최근 루트 검사를 통과하고 읽는 상태가 허용 표면 안에 머물러야 하며 프리픽스가 APPROVE_PAYMENT(0x1)나 APPROVE_EXECUTION_AND_PAYMENT(0x3)로 payer를 정해야 합니다. 표면은 sender와 payer의 계정 필드와 0번부터 AA_VOPS_SLOT_COUNT - 1번 슬롯, 서명 봉투의 최근 루트 참조, nonce_keys의 키드 논스 상태, 검증 중 도달한 모든 코드(codeHash로 인증)입니다. 매핑이나 keccak256 파생 위치 등 다른 스토리지를 읽으면 제외됩니다. EIP-8141 공개 멤풀 규칙은 sender 스토리지만 허용하므로, 프로필 2에 드는 트랜잭션 일부는 커스텀 멤풀이나 직접 제출이 필요할 수 있습니다.

상수와 VERIFY 예산

MAX_VERIFY_GAS_PER_IL의 후보 값은 2**20, 약 1.05M 가스입니다. EIP-7805의 인클루더 16명을 합치면 슬롯당 계량되는 프로필 2 예산은 2**24, 약 16.8M 가스로 묶입니다. MAX_VERIFY_GAS_PER_TX는 별도 값으로, IL 한도와 같게 잡아 한 트랜잭션이 예산을 다 쓰게 할 수도 있고 더 낮춰 여러 건이 나누게 할 수도 있습니다. AA_VOPS_SLOT_COUNT는 2에서 4 범위가 후보이며 강제력을 주는 Standards Track EIP가 벤치마크를 거쳐 값을 정하기 전에는 어떤 구현도 프로필 2를 강제용으로 분류할 수 없습니다. 예산 비용 계산은 정적입니다. EIP-8141이 계산하는 서명 검증 가스에 검증 프리픽스 모든 프레임의 선언된 가스 한도를 더하며 형태 판정에서 무시되는 만료 검증 프레임도 예산에는 포함됩니다. EIP-8141의 100_000 한도는 공개 멤풀 승인용이라 이 값들을 정하지 않습니다.

인클루더, 빌더, 어테스터의 역할

인클루더의 프로필 2 예산 채우기는 정적이며 중복 제거 전에 IL별 등장 순서대로 처리합니다. 서명 비용과 검증 프리픽스 비용의 합이 트랜잭션당 또는 남은 IL 한도를 넘으면 무시하고 서명 비용을 먼저 차감한 뒤 서명을 검사하며 서명이 실패하면 그 차감만 남깁니다. 후보 검사에 실패해도 차감은 유지됩니다. 구조는 유효하지만 서명이 틀린 트랜잭션으로 검증 작업을 유발하는 공격을 묶기 위한 규칙입니다. 빌더는 누락한 프로필 2 후보마다 [0, len(block.transactions)] 범위의 인덱스를 제시할 수 있습니다. 없거나 잘못되거나 범위를 벗어난 값은 페이로드 끝으로 처리합니다. 어테스터는 부모 VOPS 상태에 실행 전 시스템 업데이트와 인덱스 이전 트랜잭션들의 EIP-7928 BAL 변경을 적용해 상태를 재구성한 뒤, EIP-8141과 EIP-8250 APPROVE(0xaa)의 전체 의미론으로 적격성을 재실행합니다. current_slot은 블록의 EIP-7843 slotNumber를 씁니다. 로컬에 데이터가 없다는 사정은 누락의 핑계가 되지 않으며 필요한 상태와 코드는 동기화해서 받아야 합니다.

인덱스 선택권의 대가

빌더가 인덱스를 고르므로, 트랜잭션은 주장 가능한 모든 인덱스에서 유효할 때만 보호받습니다. 의존하는 상태가 페이로드 안에서 변하지 않거나 단조롭게만 변하는 위치 안정적 트랜잭션은 한 번 무효가 되면 끝까지 무효라서 EIP-7805의 페이로드 끝 규칙과 같은 보장을 받습니다. nonce_seq == 0인 새 키드 논스와 최근 루트가 그렇습니다. 반면 같은 페이로드의 선행 트랜잭션이 필요한 대기열 트랜잭션이나 예약 없이 공유되는 대납자는 더 약한 보장을 받습니다. 다른 후원 트랜잭션이 먼저 대납자 잔액을 줄일 수 있기 때문입니다. EVM 가스는 검증이 읽어 오는 코드 바이트 총량을 직접 묶지 못하므로, 코드 본문 개수와 바이트 한도를 정하고 재구성과 재실행까지 포함한 전체 파이프라인을 어테스테이션 마감에 맞춰 벤치마크해야 합니다. BAL 커밋은 공개된 바이트를 묶을 뿐 그 내용이 옳다는 증명이 아니므로, 실행 증명이 생기기 전에는 어테스터가 페이로드를 직접 검증한 뒤에야 BAL을 쓸 수 있습니다.

발효 조건과 현재 상태

이 EIP는 정보성이라 그 자체로는 합의 규칙을 바꾸지 않습니다. 구속력 있는 규칙, 상수, 인코딩, 테스트 벡터는 EIP-7805를 확장하는 별도 Standards Track EIP가 전부 다시 적어야 하고 프로필 2 강제는 EIP-8141, EIP-8250, EIP-8272가 먼저 살아 있어야 가능합니다. 세 제안을 합친 페이로드 인코딩과 서명 해시도 발효 전에 정의해야 합니다. ePBS(EIP-7732) 아래에서는 페이로드가 비컨 어테스테이션 이후에 공개되므로, 확장이 누락 검사를 공개 이후 의무로 옮기거나 프로필 2를 꺼야 합니다. 콜 기록으로는 08.06 ACDC #184에서 헤고타(Hegota) 후보로 접수됐습니다. 원문은 Draft 상태라 내용이 아직 바뀔 수 있습니다.

EIP 원문 · ← EIPs