용어집 / 채굴과 합의
채굴 난이도
별칭은 Mining difficulty, Difficulty, 난이도입니다.
- 채굴 난이도란 무엇입니까?
- 채굴 난이도는 해시레이트가 많든 적든 블록이 약 10분 간격으로 도착하도록 네트워크가 2,016개 블록마다 돌리는 다이얼입니다.
난이도는 블록을 찾는 일이 2009년 1월에 사토시가 마주했던 것보다 얼마나 더 어려운지를 나타내는 하나의 숫자입니다. 난이도는 2,016개 블록마다, 대략 2주마다, 직전 2,016개 블록이 실제로 걸린 시간을 기준으로 다시 계산되며, 한 번에 어느 방향으로든 최대 4배까지만 움직일 수 있습니다. 그래서 10분 블록은 채굴 출력이 100조 배 늘어난 뒤에도 유지되었습니다.
작동 방식
난이도는 비율이며, 프로토콜은 과정 어디에도 사람의 개입 없이 타임스탬프만으로 이를 계산합니다.
그 아래에는 목표값이 있습니다. 블록 헤더 해시가 이 값 아래로 내려와야 하는 256비트 숫자이며, 헤더에는 nBits라는 4바이트짜리 압축 필드로 저장됩니다. 난이도는 난이도 1 목표값을 현재 목표값으로 나눈 값으로 정의되므로, 난이도가 126조라는 것은 유효한 헤더가 네트워크 첫 주보다 126조 배 더 희귀하다는 뜻입니다. 노드는 실제로 난이도를 검사하지 않습니다. 노드는 헤더 해시를 목표값과 비교합니다. 난이도가 존재하는 이유는 비율은 읽을 수 있고 256비트 기준값은 그렇지 않기 때문입니다.
재조정은 블록 높이가 2,016의 배수일 때마다 일어납니다. 노드는 그 구간이 실제로 걸린 시간을 측정해 의도된 20,160분과 비교하고, 그 비율만큼 목표값을 조정합니다. 이때 한 번의 조정으로 4배 넘게 쉬워지거나 4배 넘게 어려워질 수 없도록 제한됩니다. 이 계산에는 유명한 off by one 오류가 있습니다. 시간 폭은 구간의 첫 블록과 마지막 블록 사이로 측정되는데, 이는 2,016개가 아니라 2,015개 간격에 해당하므로 네트워크는 실제로 블록당 약 10.0049분을 목표로 하게 됩니다. 이를 바로잡는 것은 반올림 오류를 위한 하드 포크가 되므로, 그대로 유지됩니다.
역사는 이 메커니즘이 양방향으로 작동함을 보여 줍니다. 난이도는 2009년 12월 30일의 블록 32,256에서 첫 재조정이 일어날 때까지 거의 1년 동안 1에 머물렀고, 그때 약 1.18로 올랐습니다. 이후 120조를 넘어섰습니다. 기록상 가장 큰 하락은 2021년 7월 3일에 있었는데, 중국이 자국 채굴 산업을 축출하면서 난이도가 한 번에 27.94% 떨어져 약 19.93조에서 14.36조로 내려갔습니다.
비트코인을 구매할 때 이것이 중요한 이유
난이도는 출금이 몇 시간이 아니라 몇 분 안에 확인되는 이유이며, 난이도가 뒤처져 있기 때문에 때로는 그렇게 되지 않는 이유이기도 합니다.
이 메커니즘은 사후에만 바로잡습니다. 해시레이트의 큰 부분이 꺼지면 블록은 이전 난이도로 계속 도착해 각각 10분보다 오래 걸리며, 다음 재조정이 최대 2주 뒤에 올 때까지 그렇게 이어집니다. 그 몇 주 동안 확인은 느려지고, 멤풀은 채워지는 속도보다 느리게 비워지며, 같은 블록 공간이 덜 자주 경매되므로 수수료율이 올라갑니다. 2021년 7월에 거래소에서 출금한 사람은 이를 직접 겪었습니다. 그 구간의 블록은 평균 약 14분이 걸렸습니다.
반대의 경우는 더 조용하지만 더 흔합니다. 새 장비가 연결되면 난이도가 따라잡을 때까지 블록이 10분보다 빨리 도착하므로, 확인은 잠시 일정이 시사하는 것보다 더 저렴하고 빠릅니다.
난이도가 하지 않는 두 가지 일을 분명히 밝힐 필요가 있습니다. 난이도는 시간이 아니라 블록을 세는 반감기 일정에 아무런 영향을 주지 않으며, 가격 신호가 아닙니다. 난이도는 채굴업자들이 몇 달 전에 수익성이 있던 장비를 샀기 때문에 오릅니다. 이를 예측으로 읽는 것은 백미러를 보는 것입니다.
2021년 7월 3일 재조정
2021년 7월 3일의 재조정은 충격이 막대했고 조정이 자동으로 이루어졌기 때문에, 이 메커니즘을 가장 명확히 보여 주는 사례입니다.
중국의 단속은 2021년 중반 몇 주 만에 세계 채굴 장비의 큰 비중을 오프라인으로 밀어냈습니다. 장비는 텍사스, 카자흐스탄, 파라과이로 향하는 컨테이너에 실렸고, 운송 중에는 아무것도 해시하지 않았습니다. 네트워크는 멈추지도, 누구에게 도움을 청하지도 않았습니다. 단지 블록을 더 느리게 생성했을 뿐입니다. 27.94% 감소는 이전 구간이 10분이 아니라 블록당 약 13.9분을 평균했음을 의미합니다. 재조정 시점에 난이도는 14.36조로 떨어졌고, 10분 페이스는 몇 시간 안에 돌아왔으며, 그해 여름의 연속 네 차례 하향 조정은 합쳐서 그 숫자에서 약 45%를 깎아냈습니다. 반대 방향의 조정들은 누구도 그래야 한다고 결정하지 않은 채 이후 몇 달에 걸쳐 하락분 전체를 지웠습니다.
채굴 난이도 vs 난이도 조정
채굴 난이도는 숫자이고, 난이도 조정은 그 숫자를 바꾸는 사건입니다. 난이도는 2,016개 블록의 한 에포크 전체에서 일정하게 유지되는 값이므로, 그 에포크의 모든 블록은 다른 모든 블록과 정확히 같은 난이도를 가집니다. 조정은 에포크 경계에서 일어나는 재계산이며, 채굴업자들이 주시하는 대상입니다. 장비당 수익이 바뀌는 순간이기 때문입니다. 화요일에 난이도가 올랐다고 말하는 것은 그 화요일에 조정이 일어났다고 말하는 줄임말입니다.
채굴 난이도 vs 목표 기준값
채굴 난이도는 사람을 위한 편의이고, 소프트웨어가 강제하는 것은 목표값입니다. 목표값은 블록 해시가 그 아래로 내려와야 하는 실제 256비트 상한이며, 모든 블록 헤더에 nBits 필드로 압축되어 나타납니다. 난이도는 이를 나눠서 도출되며 블록 어디에도 나타나지 않습니다. 어떤 기사 제목이 난이도가 5% 올랐다고 말할 때, 그 바탕의 변화는 목표값이 약 5% 작아진 것이고, 지구상의 모든 채굴업자가 블록당 약 5% 더 많은 시도를 조용히 필요로 하게 된 것입니다.