비트코인의 블록 타임스탬프 보호 규칙

요약: 저희 비트멕스 리서치 팀은 거의 알려지지 않은 비트코인의 두 가지 규칙을 살펴 볼 예정이며, 이는 비도덕적인 마이너들이 블록 타임스탬프를 조작하고 부당하게 높은 채굴 보상을 얻는 것을 방지하기 위해 고안되었습니다. 저희는 2시간 MAX_FUTURE_BLOCK_TIME 값과 같은 상수를 선택한 이유와 이 값이 비트코인 캐시에 특별한 영향을 미칠 수 있는지에 대해 면밀히 분석할 예정입니다. 저희는 비트코인의 시간 보호 규칙이 구현되었을 때 작동하는 네트워크가 없다는 점을 고려할 때, 이러한 규칙이 상당히 효과적이며 인상적인 업적으로 결론짓는 바입니다.

(출처: Pexels)

비트코인의 시간 문제

각 블록은 이전 블록의 해시를 참고함에 따라 이미 순차적인 순서를 가지고 있기 때문에 시간은 비트코인 네트워크에 있어 중요한 고려사항이 아닌 것으로 생각할 수 있습니다. 비트코인 블록은 또한 작업 증명에 사용되는 거래 (입력, 산출 및 다른 값들), 블록 헤더로 이어지는 머클 트리 및 블록 해시 자체를 포함합니다. 이는 표면적으로 거래와 합의 시스템에 충분해 보일 수 있습니다. 그러나 여기에는 난이도 조정 문제가 존재합니다 – 너무 많은 마이너들이 네트워크에 합류하는 경우 블록생성 시간이 급격히 빨라지거나 너무 많은 마이너들이 떠나는 경우 블록생성 시간이 급격히 저하되어 네트워크를 신뢰할 수 없게 될 수도 있습니다. 이 문제를 해결하기 위해 2주마다 채굴 난이도가 10분 단위의 목표시간을 목표로 조정됩니다. 불행하게도 2주동안의 기간을 계산하기 위해서는 시간 개념을 블록체인에 도입하고 시간 개념은 합의 시스템의 일부가 되어야 합니다. 따라서 블록에는 타임스탬프가 포함되어야 하며, 누군가는 비트코인을 세계 최초의 분산형 전자 시계로 생각할 수도 있습니다.

블록 타임스탬프 보안 규칙

비트코인 블록이 생성될 시 본질적으로 두 개의 시간이 관여됩니다:

  1. 마이너가 배치한 블록 헤더 내의 타임스탬프
  2. 블록이 생성된 실제 시간.

물론 이 두 개의 시간은 거의 동일합니다. 결국 마이너들은 합리적으로 정확한 시계를 보유 중에 있고 따라서 이들이 굳이 시간에 대해 거짓으로 제공할 이유가 있을까요?

공교롭게도 마이너들이 해당 시간을 거짓으로 제공하는 것과 관련하여 몇 가지 인센티브가 존재합니다. 예를 들어 악의적인 마이너들은 미래에 존재하는 타임스탬프를 추가할 수 있습니다. 예를 들어 블록을 생성하는 데에 10분이 걸린 경우, 마이너들은 5분의 타임스탬프를 미래에 추가하여 15분이 소요된 것으로 주장할 수 있습니다. 만일 2주 간의 난이도 조정 기간 동안 5분을 추가하는 패턴이 지속되는 경우, 평균 블록생성 시간은 15분으로 보이지만 실제로는 이보다 짧습니다. 그 후 해당 난이도는 다음 기간에 하향 조정되어 더 빨라진 블록생성 시간으로 인해 마이닝 수익이 증가할 수 있습니다. 물론 이러한 접근방식의 문제는 비트코인 시계가 지속적으로 실시간과 일치하지 않게 움직인다는 점입니다.

상기 언급된 문제를 해결 혹은 완화하기 위해 비트코인은 타임스탬프를 조작하는 마이너들로부터 보호하는 두 가지 메커니즘을 보유하고 있습니다:

  1. 평균 소요시간 (MPT) 규칙 – 해당 타임스탬프는 마지막 11개 블록의 평균 소요시간보다 앞서 있어야 합니다. 11개 블록의 평균 소요시간은 6개의 블록이 리오그될 수 있고 시간은 여전히 뒤로 이동하지 않는다는 것을 시사하며, 이는 Meni Rosenfeld의 2012년 보고서에서 제시되었던 바와 같이 네트워크 해시래이트의 10%를 보유한 공격자의 성공 확률을 0.1% 이하로 낮추기 위해 6번의 확인이 필요하다는 주장과 일치될 수 있습니다.
  2. 향후 블록생성 시간 규칙 – 해당 타임스탬프는 노드 사용자의 평균 시간과 관련하여 MAX_FUTURE_BLOCK_TIME 상수를 기반으로 2시간 이상 앞서 있을 수 없습니다. 노드가 제공하는 시간과 로컬 시스템 시계 사이의 최대 허용 간격은 90분이며 이는 또 다른 안전장치입니다. 위에 언급한 MPT 규칙과 달리 이는 완전한 합의 규칙이 아니라는 점에 유의해 주시기 바랍니다. 시간대적으로 타임스탬프가 너무 앞서 있는 블록은 당장 유효하지 않으며 이는 시간이 지남에 따라 유효할 수 있습니다.

첫 번째 규칙은 블록체인이 시간 내에 계속 앞으로 이동하도록 하고 두 번째 규칙은 해당 체인이 너무 앞으로 이동치 않도록 보장합니다. 이러한 시간 보호 규칙은 완벽하지 않습니다. 예를 들어 마이너들은 여전히 향후 2주 내에 타임스탬프를 생성함으로써 이를 앞으로 이동시킬 수 있지만, 이러한 조작 행위가 미치는 영향의 범위는 다소 제한적입니다.

위의 비율에서 알 수 있듯이, 2시간은 2주 중 극히 일부에 불과하기 때문에 이러한 조작이 네트워크 신뢰성 및 마이닝 수익성에 미치는 영향은 제한적일 수 있습니다. 이는 난이도 조정 후 2주 동안 블록 사이의 시간을 10분에서 9분 54초로 단축시키는 것과 같습니다. 또한 이는 2시간의 시간 이동이 발생하면 우선 뒤로 가지 않고서는 다시 발생할 수 없기 때문에 일회성 변화일 뿐입니다. 동시에 마이너는 네트워크에서 블록이 거부될 위험을 축소하기 위해 2시간 앞으로 이동하기 전 안전 마진을 포함하는 것을 희망할 수 있습니다.

이러한 규칙들은 마이너들이 비트코인의 타임스탬프를 악의적인 방식으로 조작하는 것을 방지하는 데에 상당히 효과적인 것으로 입증되었습니다.

비트코인 캐시의 이론적 블록생성 시간 문제

지난 2017년 9월, 저희가 처음 언급했던 바와 같이 비트코인 캐시는 2017년 8월 비트코인에서 분할된 알트코인으로써 본 코인의 주요 목적은 블록 크기 한도를 증가시키는 것이었습니다. 당시 비트코인 캐시 개발자들이 가지고 있었던 우려 중 하나는 많은 마이너들이 비트코인 캐시를 채굴하지 않을 수 있어 블록 간 시간 간격이 너무 클 수 있다는 점이었습니다. 그 결과 이러한 우려를 완화하기 위해 비상 난이도 조절 (EDA)이라는 기능이 구현되었습니다. 저희는 자세한 내용은 살펴보지 않을 예정이지만 본 매커니즘은 매우 복잡하고 본질적으로 결함이 있는 것으로 판명되었습니다. 이 알고리즘은 특정 시간 내에 특정 수의 블록이 발견되지 않으면 난이도가 감소한다는 것을 의미했습니다. 해당 정책은 블록 사이의 시간 간격이 길수록 하향 난이도 조정이 커짐을 의미했기 때문에 특히 공격적이었습니다. 마이너들은 큰 규모의 시간 간격을 의도적으로 남겨두고 네트워크를 조작하여 큰 규모의 난이도 변화를 초래했으며, 뒤이어 매우 높은 빈도로 블록이 생성되는 저난이도 기간이 이어졌습니다. 그 후 해당 네트워크는 신뢰성을 잃게 되었습니다.

이러한 결함의 결과로 예상보다 더 많은 비트코인 캐시가 생성되었으며 이 기간 동안 마이너의 수익이 증가했습니다. 비트코인 캐시는 비트코인을 상대로 5,000개의 블록 우위를 선점했으며 이는 오늘 날까지도 유지되고 있습니다. 하지만 두 달 후인 2017년 11월에 수정안이 결국 공개되었습니다. EDA (비상 난이도 조정) 기능은 제거되고 이는 보다 간편한 24시간 구동 시스템인 신규 난이도 조정 시스템으로 교체되었습니다. 하지만 이는 비트코인의 2주 창 시스템과는 여전히 다릅니다. 비트코인 캐시의 시스템은 더 활발하고 조정이 빠르게 이루어집니다. 이는 비트코인 캐시가 단기적으로 더 높은 변동성의 난이도를 가질 수 있음을 의미하지만, 본 코인은 어떠한 변화에도 더 빠르게 조정 가능한 반면 비트코인의 모든 블록생성 시간 관련 차이를 수정하는 데에는 더 오랜 시간이 소요될 수 있습니다.

비트코인 및 비트코인 캐시의 난이도 조정 시스템 개요

 코인 산출 기간 난이도 조정 의견
비트코인 2주 격주
  • 블록생성 시간 관련 차이 발생 가능성이 낮음
  • 발생하는 모든 차이를 수정하는 데에 더 많은 시간이 소요됨
비트코인 캐시 1일 각 블록
  • 블록생성 시간 관련 차이 발생 가능성이 높음
  • 발생하는 모든 차이 수정이 빠르게 이루어짐

(출처: BitMEX Research)

비트코인 캐시의 새로운 난이도 조정 알고리즘에서 많은 사람들이 간과했을지도 모르는 한 가지는 2시간 동안의 시간 보호 규칙과의 상관성입니다. 저희가 인지하고 있는 바로는 비트코인 캐시는 2시간에 대한 상수를 유지했습니다.

2시간의 기간은 현재 산출 기간의 8.3%입니다. 이는 블록 간 시간을 10분에서 9분 10초로 단축한 것과 상응합니다. 이는 또한 잠재적으로 중요한 요소로 보이며 악용될 경우 마이너의 수익에 변화를 초래할 수 있습니다. 따라서 비트코인 캐시는 타임스탬프를 조작하는 마이너들에게 다소 취약할 수 있으며, 적어도 비트코인보다는 취약성이 높을 수 있습니다.

반면 비트코인 캐시는 비트코인보다 마이너들의 타임스탬프 조작 공격에 더 취약할 수 있지만, 이로 인해 발생하는 모든 문제는 더 빠르게 해결될 것입니다.

결론

아마도 악용되지 않은 비트코인 캐시의 시간 보호 규칙과 관련된 취약점은 비트코인의 시간 보호 규칙이 얼마나 세심하게 계획되어 공개되었는지를 보여주고 있습니다. 저희가 인지하고 있는 바로는 이러한 시간 보호 규칙은 2009년 비트코인이 출시된 이후부터 존재하기 시작했습니다. 해당 시스템 고안 시에 사토시는 최소 3개의 깊은 층을 혁신해야 했습니다:

작업증명 시스템 난이도 조정 시스템 → 견고한 시간 보호 규칙

이는 지금 저희에게 특별히 기발해 보이지는 않지만 저희는 이러한 시스템과 관련하여 약 11년 간의 경험을 보유하고 있습니다. 따라서 사토시가 이러한 네트워크가 존재하기 전 이 모든 것을 생각해냈다는 사실은 저희의 견해로는 상당히 주목할 부분입니다.