EIP-7883 ModExp 가스 비용 인상 (ModExp Gas Cost Increase)

최종 확정 · 수수료·가스 · 원문 상태 Final · 2025-02-11 작성

큰 수의 거듭제곱 나머지를 계산하는 ModExp 프리컴파일의 가스 계산식을 바꿔 최소 비용을 200에서 500으로 올리고 일반 비용을 약 3배로 올립니다.

왜 필요한가

이더리움에는 자주 쓰이는 복잡한 계산을 클라이언트가 미리 구현해 둔 '프리컴파일(precompile)'이 있습니다. 그중 ModExp는 큰 수의 거듭제곱을 다른 수로 나눈 나머지를 구하는 연산을 맡습니다. 그런데 벤치마크 결과, 일부 입력에서는 실제로 노드가 쓰는 계산 자원에 비해 수수료(가스)가 지나치게 싸게 책정되어 있었습니다. 블록 하나가 담을 수 있는 작업량의 상한인 블록 가스 한도는 가장 느린 연산을 기준으로 안전하게 정해야 하는데, 값싸고 무거운 ModExp 호출이 그 한도를 올리는 데 걸림돌이 됩니다. 이 EIP는 EIP-2565에서 정한 가격 공식의 파라미터를 조정해 저평가된 경우들을 바로잡고 블록 가스 한도 인상의 여지를 만들려는 제안입니다.

무엇이 바뀌나

지금

EIP-7883 이후

누구에게 영향이 있나

심층 설명

최소 비용과 일반 비용 인상

가스 계산의 마지막 단계가 max(200, math.floor(multiplication_complexity * iteration_count / 3))에서 max(500, math.floor(multiplication_complexity * iteration_count))로 바뀝니다. 최소 가스가 200에서 500으로 오르고(150% 인상), 3으로 나누던 부분이 사라져 일반 비용이 3배(200% 인상)가 됩니다. 인터페이스나 연산 알고리즘 자체는 바뀌지 않고 가격 공식만 바뀝니다.

32바이트 초과 지수의 비용 2배

지수(exponent)가 32바이트보다 길 때의 iteration_count 계산에서 초과 길이에 곱하는 계수가 8에서 16으로 오릅니다. 바뀐 식은 iteration_count = (16 * (exponent_length - 32)) + ((exponent & (2**256 - 1)).bit_length() - 1)입니다. 긴 지수를 쓰는 호출일수록 비용이 더 가파르게 오릅니다.

곱셈 복잡도의 최소값 도입과 대형 입력 가중

calculate_multiplication_complexity가 바뀝니다. 기존에는 words**2를 그대로 반환했지만 새 공식은 복잡도를 기본 16으로 두고 max(base_length, modulus_length)가 32바이트를 넘을 때만 2 * words**2로 계산합니다. 즉 밑(base)과 모듈러스(modulus)의 길이를 최소 32바이트로 간주하고, 32바이트를 넘으면 복잡도를 2배로 칩니다. words는 math.ceil(max_length / 8)로 구합니다.

실제 호출에 미치는 영향

2025년 1월 4일 기준 과거 ModExp 호출의 약 99.69%는 200에서 500으로 오르는 150% 인상이나, 약 1360가스에서 3배가 되는 200% 인상을 겪습니다. 다만 에지 케이스는 인상 폭이 훨씬 큽니다. 테스트 벡터 기준으로 modexp_marcin_1_exp_heavy는 215에서 16624가스로 7632%, modexp_guido_4_even은 1026에서 94448가스로 9105% 오릅니다. 기존 테스트 벡터는 그대로 재사용할 수 있습니다.

조정의 근거와 하위 호환성

벤치마크에서 ModExp의 가스 비용이 크게 저평가된 시나리오들이 확인되었고 이 조정은 기존 가격 공식의 파라미터를 바꿔 그 저평가를 바로잡는 방식입니다. 목표는 모든 실행 레이어 클라이언트에서 가장 무거운 에지 케이스조차 블록 가스 한도 인상을 막지 않게 만드는 것입니다. 이 변경은 하위 호환성이 없는 가격 인상이지만 원문은 비슷한 가스 재조정이 이더리움에서 여러 번 있었고 그 효과가 잘 이해되어 있다고 설명합니다. 제안의 실증 분석과 영향받는 주체별 분석 자료가 원문에 링크되어 있습니다.

보안 관점

이 EIP는 새 기능을 추가하거나 기존 연산을 싸게 만들지 않으므로, 새로운 공격 벡터나 비용 하락에 따른 직접적인 보안 우려는 없습니다. 남는 위험은 일부 ModExp 시나리오가 반대로 과대 책정될 가능성인데, 원문은 이를 현재의 저평가 문제보다 작은 위험으로 평가합니다. 이 EIP의 상태는 Final로 확정되어 있습니다.

EIP 원문 · ← EIPs