블록체인/레벨 II · 작동 원리/2.3 블록과 체인/수업 5
2016블록마다 난이도 조정
시계가 멈추지 않게 하는 2주 주기의 조절 장치
준비물난이도 변화 기록을 보여주는 블록 탐색기 인터페이스비율 계산을 위한 계산기
호기심
- 왜 네트워크는 각 블록이 생성된 후가 아닌 2주마다 난이도를 조정할까요?
- 중앙 기관이 업데이트를 발표하지 않고도 분산형 시스템은 수학적 수정 사항에 대해 어떻게 합의할 수 있을까요?
- 전 세계 해싱 파워가 급격히 감소한 직후 며칠 동안 블록 생성 속도는 어떻게 되나요?
탐구
- 비트코인의 보안 모델은 블록이 약 10분 간격으로 생성되는 규칙적인 리듬에 의존합니다. 이러한 주기는 거래의 확정성과 네트워크 혼잡 및 자원 소비 사이의 균형을 유지해 줍니다. 하지만 채굴 하드웨어는 빠르게 발전하고 있으며, ASIC의 효율성은 시간이 지날수록 기하급수적으로 향상됩니다. 개입이 이루어지지 않는다면 고정된 연산 난이도로 인해 컴퓨팅 성능이 향상됨에 따라 블록은 분 단위가 아닌 초 단위로 생성될 것입니다. 이러한 변동성은 체인의 보안성을 해치고, 거래 확인 시간에 대한 사용자들의 기대를 복잡하게 만들 것입니다.
- 이러한 리듬을 유지하기 위해 비트코인은 ‘리타겟팅’이라는 자동 피드백 루프를 적용합니다. 평균 14일에 해당하는 2,016개의 블록마다 각 노드는 독립적으로 작업증명 목표값을 재계산합니다. 2,016이라는 숫자는 14일에 하루당 144개의 10분 단위 시간대를 곱한 값에서 유래했습니다. 이러한 주기는 해시레이트의 큰 변화에 신속하게 대응할 수 있을 만큼 짧으면서도, 네트워크 참여율의 일시적인 변동이나 이상 현상을 완화할 수 있을 만큼 충분히 길어 적절한 균형을 이룹니다.
- 이 계산은 이전 2,016개 블록을 채굴하는 데 실제로 걸린 시간과 예상되는 20,160분을 비교합니다. 공식은 ‘새 목표값 = 기존 목표값 × (실제 시간 / 목표 시간)’입니다. 채굴자들이 평균적으로 10분보다 빠르게 블록을 찾아낼 경우 실제 시간이 짧아져 1보다 작은 값이 되고, 이로 인해 목표값은 낮아지면서 채굴 난이도는 상승합니다. 반대로 블록을 찾는 데 더 많은 시간이 걸리면 퍼즐의 난이도를 완화하기 위해 목표값이 상승합니다. 이러한 비례적 조정을 통해 평균 채굴 시간이 10분 수준으로 돌아가도록 합니다.
- 단기적인 충격으로 인한 극심한 변동성을 방지하기 위해, 각 주기마다 양방향 모두에서 조정 폭은 4배로 제한됩니다. 해시레이트의 변화가 아무리 커도 한 번의 조정으로는 난이도를 최대 4배만큼 높이거나 낮출 수 있습니다. 이러한 상한선은 왜곡된 타임스탬프로 인한 영향을 제한하고, 급격한 시장 변동이나 하드웨어 교체 시에도 변화가 점진적으로 일어나도록 합니다.
- 주목할 만한 사례는 2021년 7월 중국이 암호화폐 채굴을 금지하면서 발생했습니다. 전 세계의 해시레이트가 급격히 하락하여 블록이 생성되는 속도가 10분보다 훨씬 느려졌습니다. 이에 따라 이루어진 난이도 조정은 비트코인 역사상 가장 큰 하락폭을 기록했으며, 컴퓨팅 파워의 감소를 반영하여 약 28%나 낮아졌습니다. 이러한 빠른 조정 덕분에 평균 블록 생성 시간은 단 한 번의 주기 안에 목표치로 돌아왔으며, 이는 해당 메커니즘이 실제 경제적·규제적 충격에 얼마나 빠르게 대응하는지를 보여줍니다.
- 조정 기간 사이에는 네트워크가 고정된 난이도로 작동합니다. 이 2주간의 기간 동안 해시레이트가 변하면, 다음 재조정이 이루어지기 전까지 블록 생성 시간은 10분에서 벗어나게 됩니다. 이러한 지연은 주기적 조정의 필연적인 타협점입니다. 반면 다른 일부 체인들은 매 블록마다 재조정을 수행함으로써 비트코인의 단순성과 예측 가능성을 희생하고 더 빠른 반응 속도를 얻습니다. 사용자와 채굴자들은 어떤 블록 탐색기든 활용하여 이러한 주기를 확인할 수 있으며, 해당 도구는 다음 조정까지 남은 블록 수와 현재 채굴 속도에 따른 예상 변화율을 표시해 줍니다.
핵심 사실
- 난이도는 약 2주에 해당하는 2,016블록마다 재조정됩니다.
- 조정 공식은 실제 경과 시간과 예상되는 20,160분의 비율을 이용해 기존 목표값을 조절합니다.
- 극단적인 변동을 방지하기 위해 난이도의 변화는 한 주기당 4배로 제한됩니다.
- 원본 코드의 오프바이원 오류로 인해 계산에 2,015개의 구간이 사용되어, 난이도가 더 높은 쪽으로 미미한 편향이 생깁니다.
- 2021년 7월의 조정은 비트코인 역사상 가장 큰 하락폭으로, 약 28%에 달했습니다.
- 모든 노드가 이 계산을 독립적으로 수행하므로, 중앙의 조율 없이도 합의가 보장됩니다.
연습 아홉, 여섯, 셋, 하나
9모으기블록 탐색기의 기록에서 과거 난이도 조정 9건을 골라 각각의 날짜와 변동률을 함께 나열하세요.
6묶기9건을 크기와 방향에 따라 6개 그룹으로 묶으세요: 큰 상승, 중간 상승, 작은 상승, 작은 하락, 중간 하락, 큰 하락.
3추리기6개 그룹을, 가장 큰 조정을 일으키는 3가지 유형의 사건으로 줄이세요.
1결정화비트코인의 2주 주기가 탈중앙화된 환경에서 신속한 대응과 안정성 사이의 균형을 어떻게 맞추는지 한 문장으로 쓰세요.
팩트 체크
날짜, 수치 및 주장은 아래에 명시된 출처들을 통해 확인되었습니다.
- Bitcoin Core source code, pow.cpp (CalculateNextWorkRequired)
- A. M. Antonopoulos & D. A. Harding, Mastering Bitcoin, 3rd ed. (2023), ch. 12
- Bitcoin difficulty history, block 689,472 (July 2021)