EIP-5133 난이도 폭탄 2022년 9월 중순으로 연기 (Delaying Difficulty Bomb to mid-September 2022)

최종 확정 · 합의·스테이킹 · 원문 상태 Final · 2022-06-01 작성

난이도 계산에 쓰는 블록 번호를 11,400,000블록 낮춘 가짜 블록 번호로 바꿔, 난이도 폭탄이 체감되는 시점을 2022년 9월 중순으로 미룹니다.

왜 필요한가

난이도 폭탄(difficulty bomb)은 블록 번호가 커질수록 작업증명(PoW) 채굴 난이도를 기하급수적으로 올려 블록 생성 시간을 점점 늘리는 장치입니다. 폭탄이 예정보다 일찍 켜지면 블록이 느려져 네트워크 사용성이 떨어집니다. 이 제안이 작성된 2022년 6월 시점에는 그대로 두면 폭탄이 너무 이르게 나타날 상황이었습니다. 폭탄의 효과를 잘못 가늠하면 다음 하드포크가 나올 때까지 예상보다 긴 블록 시간을 감수해야 합니다. 특히 더 머지(The Merge)를 앞두고 네트워크 해시레이트가 크게 떨어지면 폭탄이 체감되는 시점이 더 앞당겨질 수도 있었습니다. 그래서 이 EIP는 난이도 계산에 쓰는 블록 번호를 11,400,000블록 낮춰, 폭탄이 2022년 9월 중순쯤부터 서서히 나타나도록 미룹니다.

무엇이 바뀌나

지금

EIP-5133 이후

누구에게 영향이 있나

심층 설명

가짜 블록 번호로 폭탄을 미루는 방식

난이도 계산 함수 calc_difficulty의 지수적 빙하기(exponential ice age) 항에서 block.number 대신 가짜 블록 번호를 씁니다. 공식은 fake_block_number = max(0, block.number - 11_400_000) if block.number >= FORK_BLOCK_NUMBER else block.number 입니다. 포크 블록 이후 클라이언트는 실제보다 11,400,000블록 이른 시점에 있는 것처럼 폭탄을 계산하므로 폭탄의 작동이 그만큼 뒤로 밀립니다. max(0, ...) 덕분에 뺄셈 결과가 음수가 되는 일은 없습니다.

체감 시점 예측: 15530314번 블록

원문은 predict_bomb_block 함수로 폭탄이 눈에 띄기 시작하는 블록을 예측합니다. 계산식은 block_adjustment + 100000 * (2 + log2(diff_adjust_coeff * current_difficulty // 2048)) 을 반올림한 값입니다. 2022년 6월 1일 기준 난이도 13891609586928851, 계수 0.1(역사적으로 폭탄이 체감되기 시작하는 수준), 지연량 11400000을 넣으면 15530314번 블록이 나오고 이 블록은 9월 중순쯤 채굴될 것으로 예상됐습니다.

예상되는 블록 시간 지연 폭

폭탄이 체감된 뒤의 블록 시간 증가를 정확히 예측하기는 매우 어렵습니다. 다만 과거 폭탄이 나타났던 사례를 근거로, 9월 중순에는 약 0.1초, 10월 초에는 0.6초에서 1.2초 수준의 지연을 예상할 수 있다고 적었습니다.

보안 고려사항: 해시레이트 변수

폭탄의 효과를 잘못 판단하면 하드포크가 나올 때까지 예상보다 긴 블록 시간을 겪게 됩니다. 난이도가 크게 출렁이면 이 시점이 심하게 달라질 수 있고 장기적인 난이도 조정에 따른 블록 시간 변화도 폭탄 에포크의 타이밍에 영향을 줍니다. 원문은 이것이 네트워크 사용성 문제이지 보안 문제로 이어질 가능성은 낮다고 봅니다. 이번 사례에서는 더 머지 전에 네트워크 해시레이트가 크게 떨어져 폭탄이 블록 시간에 체감되는 일정이 앞당겨질 가능성이 있었고 11,400,000이라는 오프셋 값은 이를 감안해 정했다고 밝힙니다.

하위 호환성과 상태

알려진 하위 호환성 문제는 없습니다. 이 EIP는 Standards Track의 Core 범주이며 상태는 Final로 확정됐습니다.

EIP 원문 · ← EIPs