이 문서에서는 사용자가 예산의 50%를 상태 생성에 사용하지 않으려는 경우 이더리움 개선 제안(EIP)-8037 에서 발생하는 두 가지 균형 실패 모드를 검토하고, 이에 대응하여 배포할 수 있는 상태 가스 확장 조치를 제시합니다. 극단적인 경우, 사용자가 현재와 같이 일반 가스 단위당 많은 상태 바이트를 계속 생성하고 이더리움의 가스 한도가 10배로 확장되면 균형 상태에서 일반 블록 공간의 약 6.2%만 사용되게 됩니다. 이는 ePBS와 BAL을 통해 얻은 확장성 이점의 상당 부분을 상실하게 됩니다. 수요가 50/50 지출 분배를 만들어내지 못하는 경우, 두 가지 직접적인 조정이 가능합니다. (1) 상태 가스 한도를 자동으로 확장 및 축소하는 이더리움 개선 제안(EIP)-8075 가격 정책을 채택하거나, (2) 일반 하드 포크(Fork) 또는 "상태 가스 매개변수만"(SGPO) 하드 포크를 통해 상태 가스 한도를 수동으로 확장/축소하는 것입니다.
고장 모드
이더리움은 Glamsterdam에 포함될 예정인 주요 이더리움 개선 제안(EIP)-7732 (ePBS) 및 이더리움 개선 제안(EIP)-7928 (BALs)을 통해 레이어 1의 확장에 집중하고 있습니다. 상태 생성에 필요한 가스 비용이 조정되지 않으면 상태는 가스 제한이 확장되는 것과 거의 같은 비율로 증가할 가능성이 높습니다. 따라서 이더리움 개선 제안(EIP)-8037은 상태 생성에 필요한 가스 비용을 상당히 인상합니다. 이 변경과 관련된 우려 사항( 1 , 2 , 3 )은 상태 생성에 사용되는 전체 가스의 비율이 증가하여 일반 가스를 압도할 수 있다는 것입니다. 예를 들어, ePBS와 BALs를 컴퓨팅 재가격 책정과 함께 적용하여 가스 제한을 6억으로 설정한다고 가정해 보겠습니다. 이는 여기서 논의된 수치의 중간값입니다. 현재 이더리움 개선 제안(EIP)-8037 사양은 이더리움 개선 제안(EIP)-8011 계량 규칙에 기반하고 있는데, 만약 사용자들이 상태 가스 비용 증가에 민감하지 않고 현재처럼 일반 가스 소비량 대비 상태 가스를 많이 생성한다면, 평형 상태에서는 일반 블록 공간의 약 6.2%만 활용될 것입니다. 이 경우 ePBS, BAL, 컴퓨팅 가격 재조정을 통한 확장성 향상 효과는 대부분 사라지게 됩니다.
물론, 상태 생성 비용이 증가하면 사용자들이 일반 가스 단위당 생성하는 상태 바이트 수가 줄어들기를 기대할 수 있지만, 상태 생성 수요의 가격 탄력성은 알려지지 않았으며 신뢰할 수 있는 방식으로 예측하는 것은 불가능해 보입니다. 예를 들어 사용자들이 현재보다 일반 가스 단위당 상태 바이트를 절반으로 줄이기 시작한다면 상황이 다소 개선되어 블록 가스 한도의 12.3%를 활용할 수 있습니다. 이상적인 시나리오는 사용자들이 현재보다 일반 가스 단위당 상태 바이트를 8.1배 적게 소비하는 것입니다. 이 경우 상태 가스와 일반 가스를 50/50 비율로 사용할 수 있습니다( 이더리움 개선 제안(EIP)-8011 가격 책정에서 최대 연산자를 사용하는 경우 현실적으로는 40/40에 더 가까울 수 있습니다). 상태 생성 소비량이 이보다 더 감소하면 반대 효과가 발생하여 사용자들이 원하는 연간 100GiB의 상태 바이트보다 적게 생성하게 됩니다.
그림 1은 이더리움 개선 제안(EIP) -8011 가격 책정 방식에서 발생할 수 있는 두 가지 균형 실패 모드, 즉 생성되는 상태 바이트 수가 너무 적거나 소비되는 일반 가스량이 너무 적은 경우를 보여줍니다. 현재 설계는 사용자가 예산의 50%를 일반 가스에, 나머지 50%를 상태 가스에 기꺼이 사용할 경우, 두 가스의 상대적인 가격과 관계없이 최적으로 작동합니다. 만약 그렇지 않다면, 균형 상태에서 한쪽이 다른 쪽을 압도하게 됩니다.
그림 1. 이더리움 개선 제안(EIP) -8037에 적용된 이더리움 개선 제안(EIP) -8011 가격 결정 메커니즘의 두 가지 실패 모드. 상태 생성 수요가 연구자들이 예측한 것보다 상대적으로 낮으면, 균형 상태에서 생성되는 상태가 너무 적어집니다(수요에 비해 가격이 너무 높음). 상태 생성 수요가 연구자들이 예측한 것보다 상대적으로 높으면, 균형 상태에서 일반 가스 소비량이 너무 적어집니다(수요에 비해 가격이 너무 높음).
실패 방지
근본적인 문제는 이더리움 개선 제안(EIP)-8011 가격 결정 메커니즘이 시간 경과에 따른 상태 생성(또는 더 일반적으로 말해서, 상태 운영과 비상태 운영 간의 수요 균형을 반영하는 어떤 값)을 추적하지 않는다는 것입니다. 따라서 상태 자원과 일반 자원 모두 목표 수요에 도달하도록 상태 가스 비용을 조정할 수 없습니다. 결과적으로 균형 상태에서 상태 자원 또는 다른 모든 자원이 상당히 활용도가 낮아질 수 있습니다. 이를 완화할 수 있는 두 가지 옵션이 있습니다.
- 이더리움 개선 제안(EIP)-8075에서 제안된 바와 같이 헤더 변수를 사용하여 시간에 따른 상태 생성 과정을 추적하고 상태 가스와 일반 가스 간의 균형을 자동으로 조정합니다.
- 불균형한 분포가 관찰된 후 상태 가스와 일반 가스 간의 균형을 수동으로 재조정하기 위해, 상태 가스(또는 상태 성장) 매개변수만 사용하는 하드포크를 활용할 수 있습니다.
(1) 이더리움 개선 제안(EIP) -8075를 통한 고장 모드 방지
이더리움 개선 제안(EIP) -8037에 이더리움 개선 제안(EIP) -8075 가격 책정 메커니즘을 적용하면 원칙에 입각한 방식으로 문제를 해결할 수 있습니다. 이더리움 개선 제안(EIP)-8075에서는 상태 생성에 필요한 가스 비용이 수요에 따라 변동되므로, 시간이 지남에 따라 원하는 수의 상태 바이트가 생성됩니다. 상태 가스 목표치와 제한치는 가스 비용에 따라 자동으로 확장 및 축소됩니다(가격 책정 메커니즘이 상태 바이트를 기반으로 작동하기 때문입니다). 계량 가스는 일반 가스와 정규화된 상태 가스 측정값의 평균으로 계산됩니다. 이를 통해 일반 가스는 목표 수준으로 소비되는 동시에 프로토콜은 목표 수량의 상태 바이트 생성을 보장합니다.
그림 2. 이더리움 개선 제안(EIP)-8075는 장기적으로 목표 상태 바이트 생성량을 보장하기 위해 수요에 따라 가스 비용을 자동으로 조정합니다. 이를 위해 이더리움 개선 제안(EIP) 가스 목표량과 제한량을 확장 및 축소하면서 가스 비용을 조정하여 목표 상태 바이트 수를 소비합니다.
(2) 일반/SGPO 하드포크에서 수동으로 오류 모드 방지
두 번째 옵션은 이더리움 개선 제안(EIP)-8075의 아이디어를 반영하되 수동으로 조정하는 것입니다. 이 경우 상태 가스 목표치와 제한치는 이더리움 개선 제안(EIP)-8075(그림 2)에서처럼 확장 및 축소될 수 있도록 하는 것이 이상적이며, 이를 통해 계량 방정식은 일반 가스와 상태 가스 모두에 반응할 수 있습니다. SGPO 하드포크로 구현하는 경우, 다음과 같이 stateSchedule 도입하고 시작할 수 있습니다.
{ "stateSchedule" : { "gloas" : { "target" : 107374182400 , "scale" : 100 } } , "gloasTime" : "TBD" } scale 매개변수를 사용하면 블록 가스 제한에 비해 상태 가스 제한을 확장하거나 축소할 수 있으며, target 매개변수는 최대 활용 시 연간 상태 증가량을 설정합니다. state_gas_limit 은 state_gas_limit = gas_limit * stateSchedule.scale // 100 으로 계산되며, cost_per_state_byte 는 다음 표현식에서 gas_limit state_gas_limit 으로 대체하여 계산합니다.
cost_per_state_byte = state_gas_limit * 7200 * 365 // (stateSchedule.target * 2 ) 계량 함수 F 최종적으로 적용될 때(여기서 F max 또는 여기에 설명된 다른 함수일 수 있음), 이는 이더리움 개선 제안(EIP) -8075에서 정규화된 상태 가스 측정값에 적용된 것과 동일합니다: F(regular_gas, state_gas * 100 // stateSchedule.scale) . 수요 탄력성이 알려져 있지 않기 때문에 한 번의 수동 수정으로는 완벽하게 맞추지 못할 수 있습니다. 따라서 평형 상태에서 일반 가스 소비량이 너무 적을 경우, 스케일링을 유지하기 위해 약간 초과하는 것이 합리적입니다. 또한 여기에 설명된 대로, 제한값 대비 상태 가스의 비율을 0.5보다 높게 설정하여 더 일반적으로 "초과"시키는 것도 가능합니다.
SGPO 하드포크를 추가하는 핵심 이유는 바로 scale 매개변수 때문이라는 점에 유의해야 합니다. scale 매개변수가 없다면 이더리움은 그림 1의 실패 모드 2에 진입하여 ePBS와 BAL이 제공하는 확장성 이점을 일부 포기하게 될 위험이 있습니다. target 성장률을 조정할 수 있는 기능 또한 환영할 만하지만, 그것만으로는 구현의 복잡성을 정당화할 수는 없습니다. 다시 말해, target 과 scale 일반 하드포크를 통해 설정하고 조정할 수 있지만, scale 매개변수가 없는 경우에만 SGPO 하드포크가 필요할 수 있습니다.
양식화된 균형
이더리움 개선 제안(EIP) -8037에서 이더리움 개선 제안(EIP) -8011 가격 책정 하의 균형 결과는 두 자원 간의 상대적 수요 탄력성에 초점을 맞춰 기본적인 분석을 할 수 있습니다( 여기 및 여기 참조, 수요 탄력성에 대한 일반적인 설명은 여기 에서도 확인할 수 있습니다).
고정된 가스 비용이 있으며 두 리소스 모두 동일한 기본 요금을 적용받습니다. 이더리움 개선 제안(EIP)-8037 구현 이전에는 전체 가스의 70%가 일반 가스( G_1 = 0.7 ) 로 청구되는 작업에 사용되고, 30%는 상태 생성( G_2 = 0.3 ) 에 사용됩니다. 이더리움 개선 제안(EIP)-8037에서 지정한 고정 가스 비용 하에서 특정 가스 한도에서 일반 가스와 상태 생성 가스에 대한 수요가 균형을 이루어 사용자가 두 리소스에 동일한 양의 가스를 사용하게 되면, 이 메커니즘은 의도한 대로 완벽하게 작동합니다. 이때 두 리소스에 사용되는 가스 의 비율 은 1:1이 됩니다.
상태 생성에 드는 가스 비용이 p 만큼 증가한다고 가정하고, 이 비용 증가에 따라 사용자들이 일반 가스 단위당 생성하려는 상태 바이트 수 를 d로 나타낸다고 하자 . 그러면 일반 가스와 상태 가스 소비량의 새로운 비율은 다음과 같다.
이더리움 개선 제안(EIP)-8037에서처럼 최대 함수를 사용하고 블록 변동성이 평형 비율을 낮추는 방식을 무시할 때 평형 상태에서는 계량된 차원(일반 가스와 상태 가스 중 더 큰 값)이 목표값에 있게 됩니다. 그러면 사용자는 일반 가스를 가스 한도의 G^*_1 = \min(0.5, 0.5r) 비율 로 소비 하고 상태 가스 는 G ^ * _ 2 = \ min ( 0.5 , 0.5 / r ) 비율 로 소비 하게 됩니다 .
기준 이더리움 개선 제안(EIP)-8037의 가스 비용 증가는 6천만 개 기준으로 스토리지 슬롯의 경우 1.17배, 계정의 경우 3.29배, 코드의 경우 3.67배입니다. 현재 성장 추세(스토리지 스냅샷, 계정 스냅샷, 컨트랙트 코드)를 기반으로 블록 17,165,429와 블록 21,000,000 사이에서 이 세 가지 지표에 대한 가중 평균 가스 비용 증가는 약 1.89배입니다. 현재 가중 평균의 불확실성을 충분히 인지하고 있습니다.
BAL, ePBS 및 가격 재조정을 통해 10배 확장을 조사하면 이더리움 개선 제안(EIP)-8037 사양에 따른 가중 평균 가스 비용 증가는 18.9배가 됩니다. 따라서 p= 18.9 로 설정 하고 사용자가 현재 사용 패턴을 변경하지 않는다고 가정하면( d = 1 ) , 비율은 다음과 같습니다.
그러면 사용자들은 일정 비율만큼만 일반 가스를 소비하게 될 것입니다.
평형 상태에서의 가스 제한. 사용자가 일반 가스 단위당 상태 생성량을 절반으로 줄이면 평형은 G^*_1 = 0.123이 됩니다 . 일반 가스 단위당 상태 바이트 소비량의 최적 감소는 균형을 복원( r=1 ) 함으로써 얻어 지며, 이는 다음을 의미합니다.
앞으로 나아가며
이더리움의 확장성이 증가함에 따라 가스 지출과 균형을 이루는 상태 가스 비용을 예측하는 것이 점점 더 어려워지고, 최악의 장애 발생 시 심각성도 커집니다. 예를 들어, L1 확장이 30배에 도달하면, 사용자들이 일반 가스 사용량에 따른 상태 바이트 생성량을 변경하지 않는다고 가정할 때, 평형 상태에서는 일반 가스에 필요한 블록 공간의 2.1%만 사용됩니다. (하지만 이 시점에서는 높은 가스 비용으로 인해 사용자들이 상태 생성량을 상당히 조정해야 할 것입니다.) 30배 확장에 도달할 시점에는 이 문제에 대한 보다 포괄적인 해결책이 마련되어 있어야 합니다. 이러한 해결책에는 이더리움 개선 제안(EIP)-7999 에서 제시된 것과 같은 완전한 다차원 수수료 시장과 상태 증가를 더 효율적으로 처리하기 위한 엔지니어링 노력(잠재적으로 상태의 일부를 만료시키는 방식)이 포함됩니다.







