이더리움은 각 블록 블롭 기반 수수료를 업데이트할 때 상수 BLOB_BASE_FEE_UPDATE_FRACTION
사용하며, 수수료의 비례적 변화는 다음과 같이 계산됩니다.
math.exp((blob_gas_used - TARGET_BLOBS * GAS_PER_BLOB) / BLOB_BASE_FEE_UPDATE_FRACTION)
이 상수에 대한 새로운 값이 각 이더리움 개선 제안(EIP) 에 포함되어 대상 블롭 가스를 변경합니다. 이더리움 개선 제안(EIP)-4844 와 이더리움 개선 제안(EIP)-7691 에 설정된 값과 일치하는 상수 계산을 위한 간단한 일반화가 있으며, 이는 이더리움 개선 제안(EIP)-7892 의 블롭 매개변수 전용(BPO) 하드포크에 적합합니다. 여기에 명시된 이 일반화된 업데이트 비율 계산은 다음과 같습니다.
BLOB_BASE_FEE_UPDATE_FRACTION = round (MAX_BLOBS * GAS_PER_BLOB / ( 2 * math.log( 1.125 )))
수학적으로 우리는 이상적인(반올림되지 않은) 값을 다음과 같이 표현할 수 있습니다.
여기서 m m 은 블록 당 최대 블롭 가스입니다. 이것이 이더리움 개선 제안(EIP)-4844와 이더리움 개선 제안(EIP)-7691을 모두 일반화하는 이유를 알아보기 위해, 이제 이 EIP들이 사용하는 방정식을 설정하고 이를 통해 일반화된 공식을 도출해 보겠습니다.
박람회
t t 를 블록 당 목표 블롭 가스로 정의합니다. 이더리움 개선 제안(EIP)-4844에 따르면 목표는 최대값의 절반입니다. t = m/2 t = m / 2 이며, 블롭 기본 수수료는 블롭 사용량이 최대 또는 최소일 때 블록 당 최대 1.125와 1/1.125만큼 증가 또는 감소하도록 설계되었습니다 . 블롭 가스가 최대로 소비될 때 수수료의 비례적 변화 방정식은 다음과 같습니다.
양변의 자연로그를 취하고 b b 에 대해 재배열한 다음 t=m/2 t = m / 2 를 대입하면 지정된 방정식이 생성됩니다.
이더리움 개선 제안(EIP)-7691에 따르면 BLOB_BASE_FEE_UPDATE_FRACTION
은 "풀 블롭과 블롭 없음에 대한 응답성을 일정하게 유지하는 중간 지점"으로 정의됩니다. "풀 블롭"에 대한 응답성을 일정하게 유지하는 b b는 다음과 같습니다.
"no blob"에 대한 응답을 일정하게 유지하는 b b는 다음과 같습니다.
대수 법칙을 통해: \ln(1/x) = -\ln(x) ln ( 1 / x ) = − ln ( x ) 는 다음과 같습니다.
"중간점" (b_\text{full}+b_\text{empty})/2 ( b full + b empty ) / 2 는 일반화된 방정식으로 단순화됩니다.
애플리케이션
일반화된 방정식은 어떤 비율에서도 만족스러운 백분율 변화를 제공합니다. 표 1에 몇 가지 예가 나와 있습니다.
최대:대상 | 가득한 % | 비어 있는 % | 전체 인자 1.125^k 1.125 k | 공허 인자 1.125^k 1.125 k |
---|---|---|---|---|
5{:}4 5 : 4 | +4.82\% + 4.82 % | -17.18\% − 17.18 % | k = \tfrac{2}{5} k = 2 5 | k = -\tfrac{8}{5} k = − 8 5 |
4{:}3 4 : 3 | +6.07\% + 6.07 % | -16.19\% − 16.19 % | k = \tfrac{1}{2} k = 1 2 | k = -\tfrac{3}{2} k = − 3 2 |
3{:}2 3 : 2 | +8.17\% + 8.17 % | -14.53\% − 14.53 % | k = \t분수{2}{3} k = 2 3 | k = -\tfrac{4}{3} k = − 4 3 |
2{:}1 2 : 1 | +12.50\% + 12.50 % | -11.11\% − 11.11 % | k = 1 k = 1 | k = -1 k = − 1 |
3{:}1 3 : 1 | +17.00\% + 17.00 % | -7.55\% − 7.55 % | k = \tfrac{4}{3} k = 4 3 | k = -\tfrac{2}{3} k = − 2 3 |
4{:}1 4 : 1 | +19.32\% + 19.32 % | -5.72\% − 5.72 % | k = \tfrac{3}{2} k = 3 2 | k = -\tfrac{1}{2} k = − 1 2 |
5{:}1 5 : 1 | +20.74\% + 20.74 % | -4.60\% − 4.60 % | k = \tfrac{8}{5} k = 8 5 | k = -\tfrac{2}{5} k = − 2 5 |
표 1. 일반화된 업데이트 분수를 사용하여 다양한 최대:대상 비율에 따른 전체 블록과 빈 블록의 영향.
4열과 5열에서 기본 수수료는 1.125^k 1.125 k 의 계수로 변경되며, 여기서 k k는 소비된 블롭 가스 g g 의 함수입니다.
2:1 주변에는 보완 비율 대칭이 있습니다. k k 의 크기는 대상이 중간 지점 위 또는 아래로 동일한 거리만큼 이동했을 때 유지됩니다( m/2 m / 2 ). 구체적으로, k_\text{full}(m{:}t) = -k_\text{empty}(m{:}(mt)) k full ( m : t ) = − k empty ( m : ( m − t ) ) 및 k_\text{full}(m{:}(mt)) = -k_\text{empty}(m{:}t) k full ( m : ( m − t ) ) = − k empty ( m : t ) 이며 , 이는 예를 들어 보완 비율 3{:}1 3 : 1 및 3{:}2 3 : 2 뿐만 아니라 4{:}1 4 : 1 및 4{:}3 4 : 3 에도 적용됩니다.
가스 정규화 확장
일반화된 방정식은 이더리움 개선 제안(EIP)-7999 에 설명된 가스 정규화 접근법으로 자연스럽게 확장됩니다. 이 접근법은 더 직접적으로 특정 리소스 제한에서 업데이트 비율을 분리합니다. 실행 중인 excess_gas
업데이트할 때 가스 델타 (게이트체인(GT)) ( g - t ) 를 최대 가스 m m ( 이더리움 개선 제안(EIP)-7999에서는 제한으로 지칭)으로 나누어 정규화합니다. 이를 통해 m m 과 무관한 단일 범용 업데이트 비율을 개별 제한에 관계없이 모든 리소스에 사용할 수 있습니다.
두 접근법은 m m 으로 나누는 시점만 다릅니다. 일반화된 방정식에서 m m 은 업데이트 분수 b b 의 분자에 위치합니다. b b 자체가 수수료 업데이트 지수 ((게이트체인(GT))/b ( g − t ) / b) 의 분모로 사용되므로, 사실상 m m 이 전체 계산의 분모에 위치하게 됩니다.
궁극적으로 최종 수수료 변경 요인은 다음과 같습니다.
동일하게 유지됩니다. 그러나 정규화를 통해 아키텍처가 더욱 견고해져 리소스 한도가 변경되더라도 가격이 안정적으로 유지됩니다. 해당 한도는 정규화된 excess_gas
업데이트의 일부이기 때문입니다.
결론
이 게시물의 목적은 다음과 같습니다.
- 제안된 방정식이 왜 이전 EIP를 일반화하는지 설명합니다.
- 다양한 최대:목표 비율에 걸쳐 제안된 방정식의 효과를 제시하고, 합리적인 백분율 변화와 보완 비율 대칭을 설명합니다.
- 이더리움 개선 제안(EIP)-7999에서 추가 최적화를 위한 토대를 마련합니다. 퍼즐의 마지막 조각은 방정식의 일반화 특성을 활용하되,
excess_gas
업데이트할 때 더 이른 단계에서 m m 을 적용하는 것입니다. - 지난 ACDE 에서 몇몇 참가자들은 토론이 끝난 후(채팅을 통해) 일반적인 속성을 인식했습니다. 이 게시물은 제안된 방정식을 향후 업데이트 분율의 기본값으로 설정하는 것에 대한 보다 자세한 논의를 위한 장이 될 수 있습니다.