EIP-7918 블롭 수수료에 실행 비용 하한 도입 (Blob base fee bounded by execution cost)
최종 확정 · 수수료·가스 · 원문 상태 Final · 2025-03-25 작성
블롭 하나의 가격이 일정량의 실행 가스 가격보다 낮아지지 않도록 최저 가격을 둡니다. 블롭 수수료가 1 wei까지 떨어져 가격 조절 기능을 잃는 문제를 막습니다.
왜 필요한가
블롭 기본 수수료는 사용량이 목표보다 많으면 오르고 적으면 내리는 방식으로 자동 조정됩니다. 그런데 롤업이 내는 전체 비용에서 블롭 수수료의 몫이 아주 작아지면 이 조정이 작동하지 않습니다. 블롭 수수료를 10% 내려도 전체 비용은 0.0000001%만 움직이는 상황이 생기고 수수료는 계속 떨어져 결국 1 wei(이더의 최소 단위)에 눌러앉습니다. 이 상태에서 수요가 다시 몰리면 거의 가득 찬 블록이 한 시간 넘게 이어져야 균형 가격을 되찾습니다. 그사이 사용자는 선착순 입찰 경쟁에 내몰려 경험이 나빠집니다. 자원 사용량이 널뛰는 것도 블롭 공간 확장에 걸림돌입니다. 또 노드는 블롭마다 KZG 증명이라는 비싼 암호학적 검증을 수행하는데, 1 wei 수수료로는 블롭 사용자가 그 계산 비용을 거의 부담하지 않게 됩니다.
무엇이 바뀌나
지금
- 수요가 적으면 블롭 기본 수수료가 1 wei까지 떨어지고 이 수준에서는 수수료를 조정해도 수요가 반응하지 않습니다
- 수요가 돌아오면 거의 가득 찬 블록이 한 시간 넘게 이어져야 시장 가격이 회복됩니다
- 노드가 블롭마다 수행하는 KZG 증명 검증 비용을 블롭 사용자가 거의 부담하지 않습니다
EIP-7918 이후
- 블롭 하나의 가격이 실행 가스 8192개(BLOB_BASE_COST) 가격 아래로 내려가지 않습니다
- 수수료가 의미 있는 수준에서 출발하므로 수요 변화에 가격 조절 장치가 제때 반응합니다
- 블롭 사용자가 노드에 요구하는 계산의 시장 가격 중 일정 몫을 항상 지불합니다
누구에게 영향이 있나
- 롤업(L2): 블롭 최저 가격이 실행 기본 수수료에 연동됩니다. 블롭 기본 수수료는 실행 기본 수수료의 최소 1/16 비율을 유지합니다.
- 노드 운영자·검증자: 블롭마다 수행하는 KZG 증명 검증 등 계산 비용의 일부를 블롭 수수료로 보상받게 됩니다.
- 클라이언트 팀: EIP-4844의 calc_excess_blob_gas() 함수에 if절 하나를 추가하는 작은 변경을 구현합니다.
- 일반 사용자: 블롭 수요가 급변할 때 수수료와 자원 사용량이 널뛰는 현상이 줄어듭니다.
심층 설명
예약 가격의 정의와 BLOB_BASE_COST
상수 BLOB_BASE_COST는 2**13(8192)입니다. 예약 가격(reserve price)은 BLOB_BASE_COST * base_fee_per_gas로, 블롭 기본 수수료로 환산하면 BLOB_BASE_COST * base_fee_per_gas / GAS_PER_BLOB입니다. 블롭 기본 수수료의 하한과 실행 기본 수수료의 비율은 BLOB_BASE_COST / GAS_PER_BLOB = 1/16로 고정됩니다. 이 하한 덕분에 블롭 수수료가 전체 비용에서 차지하는 비중은 항상 최소 BLOB_BASE_COST / (BLOB_BASE_COST + execution_cost)가 되어 수수료 갱신 장치가 유의미한 가격 신호를 유지합니다.
calc_excess_blob_gas()에 추가되는 if절
EIP-4844의 calc_excess_blob_gas()에 조건이 하나 추가됩니다. BLOB_BASE_COST * parent.base_fee_per_gas > GAS_PER_BLOB * get_base_fee_per_blob_gas(parent)이면 target_blob_gas를 빼지 않고 parent.excess_blob_gas + parent.blob_gas_used * (blobSchedule.max - blobSchedule.target) // blobSchedule.max를 반환합니다. 그렇지 않으면 기존대로 parent.excess_blob_gas + parent.blob_gas_used - target_blob_gas를 반환합니다. 목표·최대 블롭 수는 EIP-7840의 blobSchedule에서 가져오며 현재 블록의 blobSchedule을 사용합니다. 따라서 포크 직후 첫 블록에서 get_base_fee_per_blob_gas(parent)를 계산할 때 fake_exponential()은 새 blobSchedule.baseFeeUpdateFraction을 써야 하고 calc_excess_blob_gas()에서도 새 blobSchedule.max와 blobSchedule.target을 써야 합니다.
수요의 비탄력성 문제
블롭 수요는 Q(b + c)로 표현할 수 있습니다. b는 블롭 기본 수수료, c는 블롭 가스당 실행 비용(execution_cost * base_fee_per_gas / GAS_PER_BLOB)입니다. 수수료 갱신 장치 입장에서 c는 고정값이므로, c > 0이면 b를 아무리 내려도 수요가 더 늘지 않는 비탄력 구간이 생깁니다. 수요 곡선이 사실상 수직이 되고 공급 곡선도 장기적으로 완전 비탄력(수직)이어서 수요나 실행 수수료의 작은 변화에도 균형 블롭 수수료가 극단적으로 흔들립니다. 실행 비용이 너무 높아 목표 공급량에서 균형이 만들어지지 못하면 블롭 수수료는 그대로 1 wei 경계까지 떨어집니다. 예약 가격은 균형점이 목표 공급 곡선과 예약 가격 곡선이 이루는 경계 위에서 형성되도록 강제해 이 문제를 풉니다.
KZG 증명 검증 비용과의 비교
노드는 블롭에 딸린 KZG 증명을 검증해 commitments가 실제 블롭과 일치하는지 확인합니다. 스마트 컨트랙트가 포인트 평가 하나에 내는 비용은 POINT_EVALUATION_PRECOMPILE_GAS(50000)입니다. PeerDAS(EIP-7594)에서는 실행 계층 노드가 블롭 하나당 CELLS_PER_EXT_BLOB(128)개의 셀 증명을 일괄 검증해 트랜잭션 풀에 넣는데, 이는 포인트 평가 하나의 약 15배 비용입니다. 풀 노드는 4개 열(column)을 보관하며 검증하고 슈퍼노드는 128개 열을 검증합니다. 노드는 매 슬롯 SAMPLES_PER_SLOT(8)개 열을 추가로 샘플링합니다. 이런 부담과 비교하면 BLOB_BASE_COST(8192)는 비교적 온건한 값이라고 원문은 평가합니다.
고정 임계값 대신 비율로 설계한 이유
데이터 서비스의 단가는 기술 발전으로 계속 내려갑니다. 이더리움이 블롭 처리량을 늘릴수록 블롭당 ETH 표시 가격도 내려가야 합니다. 블롭 수량이나 실행 수수료와 무관한 고정 임계값은 같은 효과를 유지하려면 계속 재조정해야 하므로 지속 가능하지 않습니다. 이 제안은 하한을 실행 기본 수수료에 비율로 연동해 이 문제를 피합니다. 다만 블롭만 수십 배 늘리고 블록 공간은 그대로 두는 극단적 시나리오(블록당 블롭 1000개, 실행 가스 3000만)에서는 블롭이 전부 예약 가격에 팔려도 수입의 21.5%가 블롭 가스에서 나와 BLOB_BASE_COST가 너무 높아집니다. 원문은 이더리움이 현재 그런 궤도에 있지 않으며 블록 공간과 블롭 공간을 비슷한 속도로 키우면 하한이 적정 수준을 유지한다고 봅니다.
실행 수수료 급등 시의 지연 반응
if절이 참인 실행 수수료 주도 구간에서는 블롭 수수료가 blob_gas_used * (max - target) // max에 따라 오르기만 하고 내려가지 못합니다. 블록당 최대 상승 폭은 기존과 같습니다. 실행 기본 수수료가 급등하면 블롭 수수료가 하한을 따라잡을 때까지 몇 블록이 걸릴 수 있지만 원문은 이것이 문제가 아니며 오히려 수수료가 부드럽게 따라가는 장점으로 볼 수도 있다고 설명합니다.
과거 데이터 검증과 보안
실행 기본 수수료가 평균 약 16 gwei였던 2024년 11월 3주간과 평균 약 1.3 gwei였던 2025년 3월 3주간의 실제 데이터에 예약 가격을 적용해 보면, EIP-7918은 기존 수수료 곡선과 예약 가격 곡선 중 높은 쪽을 따릅니다. 블록 번호 22075724부터 약 90만 블록(2024년 11월부터 2025년 3월까지 4개월)의 분포도 같은 방식으로 분석했습니다. 이 분석은 하한이 균형 가격 자체에 미칠 영향은 반영하지 않은 것으로, 실제로는 하한 수준에서 수요가 목표 공급을 넘으면 수수료가 그 위로 오릅니다. 보안 측면에서는 블롭 하나가 최소 BLOB_BASE_COST만큼의 실행 가스 가격으로 정착할 뿐이며 저자들이 아는 한 보안 위험은 없습니다. 이 EIP의 상태는 Final로 명세가 확정되었습니다.