비트코인 언리미티드는 2015년 말에 도입된 비트코인 코어 소프트웨어 포크 중 하나로, 최근 몇 달 동안 많은 주목을 받았습니다. 이 프로젝트는 ViaBTC, GBMiners 및 BTC.TOP을 포함한 여러 새로운 비트코인 채굴 풀로부터 해시 파워 지원을 받았으며, 노드 채택도 증가하는 것으로 보입니다.
비트코인 언리미티드의 핵심 아이디어는 “비트코인 언리미티드 개선 제안 001” (BUIP001)에서 명시된 바와 같이 비트코인의 블록 크기 제한을 사용자와 채굴자에게 넘기는 것입니다. 또는 더 정확하게 말하자면, 이 제어를 더 명확하고 쉽게 다룰 수 있도록 만드는 것입니다.
하지만 이러한 제어는 비트코인의 강력하고 자동화된 합의 메커니즘의 대가를 치르게 됩니다. BUIP001에 따르면, 서로 다른 사용자들이 서로 다른 체인에 끝나는 여러 시나리오가 존재합니다 — 일시적이거나 영구적일 수 있습니다.
여기 (아마도 불완전한) 개요가 있습니다.
모두가 비트코인 언리미티드로 전환하지 않는다면
첫 번째 예시는 가장 명백한 것입니다.
현재 비트코인 코어, 리비트코인, BTCD 또는 Bcoin과 같은 서로 다른 비트코인 구현이 BUIP001 또는 호환 가능한 것을 채택할 가능성은 매우 낮아 보입니다. 이는 특히 비트코인 언리미티드 팀이 BUIP001을 교차 구현 비트코인 개선 제안(BIP) 프로세스에 제출하지 않았기 때문입니다; 따라서 대부분의 구현은 이 제안을 고려조차 하지 않습니다.
하지만 모든 주요 비트코인 구현이 BUIP001 또는 호환 가능한 솔루션을 채택하지 않는다면, 블록체인은 비트코인 언리미티드 지지자들이 구상하는 방식으로 수렴할 수 없습니다. 대신, 해시 파워 기준으로 다수의 채굴자가 최대 생성 크기(MG)와 과도한 블록 크기(EB)를 증가시켜 1메가바이트보다 큰 블록을 생성하면, 비트코인은 두 개의 호환되지 않는 네트워크와 통화로 분할될 것입니다. 이는 이더리움과 이더리움 클래식과 유사합니다.
그러나 이러한 분할은 조정되지 않거나 안전 예방 조치를 포함하지 않기 때문에, 그 결과는 이더리움과 이더리움 클래식 간의 분할보다 훨씬 나쁠 수 있습니다.
1메가바이트 사용자들은 불편을 겪게 되며, 특히 그들의 해시 파워가 처음에는 더 작은 소수일 경우 더욱 그러합니다. 여기에는 (훨씬) 느린 블록 확인이 포함되며, 아마도 그들의 체인이 거의 사용 불가능해질 정도로 느려질 수 있습니다 (최소한 일시적으로). 또한 그들은 “비트코인 언리미티드 체인”을 사용하려고 할 경우 재생 공격의 위험에 처할 수 있습니다.
비트코인 언리미티드 사용자들도 유사한 불편을 겪겠지만, 그들의 초기 블록 확인은 느리지 않을 것입니다. 왜냐하면 그들은 해시 파워 다수의 지원을 받기 때문입니다.
하지만 그에 반해, 비트코인 언리미티드 사용자들은 “그들의” 체인이 과연 계속 존재할지에 대해 확신이 없을 것입니다. 만약 1메가바이트 체인이 “비트코인 언리미티드 체인”보다 길어지게 된다면 (실제로는: 총 작업 증명), 비트코인 언리미티드 노드는 자동으로 1메가바이트 체인으로 전환될 것입니다. 따라서 그들은 분할 이후 전체 “비트코인 언리미티드 체인”을 버리게 될 것이며, 그 체인이 수천 개의 블록 깊이일지라도 말입니다. 그들의 모든 거래는 잊혀질 것이며, 이는 많은 사람들에게 큰 금전적 손실을 초래할 수 있습니다.
하드코어 1메가바이트 지지자들과 투기꾼들이 이 시나리오를 조금이라도 그럴듯하게 만들 수 있다면, 자기 실현적 예언의 역학은 “비트코인 언리미티드 체인”에 존재론적 위협을 가할 수 있습니다: 아무도 버려질 수 있는 체인에서 가치를 보유하고 싶어하지 않습니다.
모두가 비트코인 언리미티드로 전환한다면
하지만 BUIP001으로의 전환이 원활하게 진행된다고 가정해 봅시다. 모든 주요 비트코인 구현이 새로운 구성 가능한 옵션을 채택하고, 모든 사용자와 채굴자가 그에 따라 소프트웨어를 업데이트합니다.
다시 말하지만 — 이 시나리오에서도 — 모든 사용자가 의미 있는 방식으로 단일 체인에 수렴할 기술적 이유는 없습니다. 서로 다른 사용자들은 자신의 노드를 구성하여 평생 동안 합의에서 벗어나 있을 수 있습니다.
간단한 예로, 소수의 채굴자는 MG와 EB를 1메가바이트로 설정할 수 있으며, 과도한 수용 깊이(AD)를 10,000,000으로 설정할 수 있습니다. 즉, 이러한 노드는 나머지 네트워크가 무엇을 하든 약 200년 동안 현재의 1메가바이트 블록 크기 제한을 모방할 것입니다.
한편, 다수의 채굴자는 MG와 EB를 설정하여 최대 2메가바이트의 블록을 생성하고 수용할 수 있습니다.
이제 한 채굴자가 2메가바이트 블록을 채굴하자마자, 다수의 채굴자는 이 블록을 기반으로 체인을 확장할 것입니다. 그러나 소수의 채굴자는 사실상 영원히 이 체인을 무시합니다: 이전 섹션에서 설명한 대로입니다.
그리고 이전에 설명한 것과 동일한 위험이 포함됩니다. 만약 1메가바이트 체인이 2메가바이트 체인보다 길어지게 된다면, 2메가바이트 체인은 완전히 버려집니다. 수천 개의 블록이 지나간 후에도 마찬가지입니다.
모두가 AD를 네 번의 확인으로 제한한다면
비트코인 언리미티드 사용자는 AD 설정을 상대적으로 낮게 유지하면 단일 체인에 대한 더 강한 수렴을 이룰 수 있습니다. 비트코인 언리미티드의 기본 설정은 네 번입니다: 과도한 블록은 유효하다고 간주되기 위해 그 위에 네 개의 블록이 채굴되어야 합니다.
하지만 이것은 문제를 일으킵니다.
첫 번째 문제는 이 낮은 기본 설정에도 불구하고, 다섯 번의 확인이 없는 거래는 현재보다 훨씬 덜 안전하다는 것입니다. 사용자의 지갑에 세 번의 확인이 표시된 거래가 있다고 가정해 봅시다. 그 사용자는 대체 블록체인이 경쟁하는 (이중 지출) 거래로 채굴되고 있으며, 이미 네 번의 확인을 받은 거래가 있는지 알 방법이 없습니다. 이는 언제든지 발생할 수 있습니다.
만약 그 대체 체인이 먼저 다섯 번째 확인에 도달한다면, 사용자의 체인은 버려지고, 그의 들어오는 거래는 잃게 됩니다 — 비록 그것이 세 번의 확인을 받았더라도 말입니다.
물론, “고아 블록”은 이미 존재하며, 더 많은 보안을 요구하는 사용자는 더 많은 확인을 기다려야 합니다.
하지만 이국적이고 비싼 유형의 악의적인 공격을 제외하면, 현재 세 개의 고아 블록은 정말로 우연의 일치로만 발생할 수 있습니다. 서로 다른 채굴자 그룹이 거의 정확히 같은 시간에 세 개의 블록을 우연히 찾아야 하며, 세 번의 별개의 우연의 일치가 발생해야 네트워크가 그렇게 많은 고아를 경험할 수 있습니다.
반면 비트코인 언리미티드는 새로운 요소를 추가하여 네트워크가 세 개의 고아 블록을 경험할 이유를 추가합니다. 채굴자들은 가장 긴 유효 체인을 확장하기 위해 경쟁할 뿐만 아니라, 체인 간의 프로토콜 규칙에 대해 투표합니다. 이 과정은 공격자에게도 가시적이고 예측 가능하므로 쉽게 악용될 수 있습니다.
두 번째 문제는 보안상의 이유로 AD를 기본값인 네 번으로 유지해야 한다는 것이 사실상 BUIP001의 목적을 무력화한다는 것입니다. 비트코인 언리미티드는 블록 크기 제한을 사용자와 (모든) 채굴자에게 넘기도록 되어 있지만, 낮은 AD 수준은 가장 작은 다수의 채굴자가 단순히 더 큰 블록을 채굴함으로써 항상 지역 블록 크기 설정을 무시할 수 있도록 보장합니다. 이는 MG와 EB를 다른 모든 사람에게 무의미하게 만듭니다: “플라시보 제어.”
실제로 AD는 이상한 선택을 제안합니다: 노드와 채굴자가 상대적 자율성을 위해 높은 AD를 설정하지만, 잠재적으로 해로운 결과로 네트워크가 분할될 위험을 감수하거나, 이러한 노드와 채굴자가 수렴 수준을 개선하기 위해 낮은 AD를 선택하지만, 이는 효과적으로 다수의 채굴자에게 제어권을 포기하는 것입니다. (그리고 만약 의도가 다수의 채굴자에게 제어권을 포기하는 것이라면, 더 간단한 솔루션이 있습니다.)
적대적 조건 하에서
적대적 조건 하에서는 상황이 악화됩니다.
모두가 비트코인에 최선의 것을 원하지 않고, 대신 어떤 주체들이 — 어떤 이유로든 — 비트코인이 실패하기를 원한다면, BUIP001의 보안 가정은 더욱 악화됩니다. 그리고 적이 혼란을 일으킬 수 있는 자금을 더 많이 보유할수록, 비트코인 언리미티드의 수렴 메커니즘은 더 나쁘게 작동할 것입니다.
우선, 노드 신호는 쉽게 스푸핑될 수 있습니다. “가짜” (경제적으로 무관한) 노드를 생성할 수 있는 자원을 가진 사람은 특정 블록 크기 제한 수준에 대한 광범위한 사용자 지원이 있는 것처럼 가장할 수 있으며, 실제로는 그렇지 않습니다. 채굴자들이 이러한 신호를 따르다면, 그들은 예상보다 적은 사용자 지원을 가진 체인으로 포크할 수 있습니다.
또한, 악의적인 채굴자는 종종 네트워크를 분할할 수 있습니다. 이러한 채굴자는 다른 채굴자들이 신호한 EB 수준을 모니터링할 수 있으며 (이것은 쉽게 스푸핑되지 않음), 의도적으로 이러한 채굴자들이 수용할 수 있는 것 사이에 해당하는 블록을 채굴할 수 있습니다. 만약 해시 파워의 50%가 최대 2메가바이트 블록을 수용하고, 나머지 50%가 더 큰 블록을 지원한다면, 2.01메가바이트 블록은 첫 번째 50%에 의해 무시되고, 나머지 50%에 의해 수용될 것입니다.
기본 AD가 네 번으로 유지된다면, 체인은 한 시간 이상 분할될 수 있습니다. 이전 섹션에서 설명한 바와 같이, 이 기간 동안 비트코인 네트워크는 매우 신뢰할 수 없게 될 것입니다. 분할의 양쪽에 있는 체인은 버려질 수 있습니다.
전 세계 해시 파워의 0.7%만을 제어하는 적이 이 정도의 혼란을 하루에 한 번 정도 일으킬 수 있습니다. 그리고 만약 압도적인 다수의 채굴자들이 이미 그들의 EB에 동의하지 않는다면, 네트워크를 남용할 수 있는 그 달콤한 지점은 항상 존재해야 합니다.
게다가, 이 공격의 결과로 모든 채굴자의 절반이 AD 임계값에 도달하게 되어 “끈적한 게이트”를 열게 됩니다. 이는 두 번째 공격의 물결을 허용할 수 있습니다. 이제 악의적인 채굴자는 훨씬 더 큰 블록을 채굴할 수 있는 약 24시간의 시간이 있으며, 아이러니하게도 처음에는 더 작은 블록 측의 체인만 수용할 것입니다. 왜냐하면 그들의 끈적한 게이트가 열려 있기 때문입니다. 처음에는 더 큰 블록 측의 체인은 이를 거부할 것입니다. 이는 또 다른 분할을 초래할 것입니다.
마지막으로, 이 새로운 “끈적한 게이트 체인”이 나머지 노드의 AD 임계값에 도달하면, 모든 끈적한 게이트가 열리게 되고, 블록 크기 제한이 전혀 없게 됩니다. 이제 적은 너무 큰 블록을 채굴할 수 있으며, 이는 모든 노드가 따라잡을 수 없게 되어 체인이 단편화될 수 있습니다 — 아마도 대역폭 제약, 지연 또는 다른 기계적 한계로 인해.
출현 합의
비트코인 언리미티드는 사용자에게 더 많은 개인 자율성을 제공한다고 주장할 수 있지만, 기술적 블록체인 수렴을 보장하지는 않습니다. 하지만 이는 새로운 것이 아닙니다. 어느 정도는 비트코인 언리미티드의 FAQ에서도 언급되고 있습니다.
그럼에도 불구하고 비트코인 언리미티드 지지자들은 사용자가 단일 블록체인에 수렴할 것으로 기대합니다. 이는 아마도 비트코인 언리미티드의 근본 철학으로 간주될 수 있는 “출현 합의”로 설명됩니다.
순수한 기술적 메커니즘이 아닌 출현 합의는 비트코인 생태계의 모든 참가자가 단일 블록체인에 대한 합의를 찾기 위한 충분한 (경제적) 유인이 있다는 확신입니다. 비록 그들의 소프트웨어가 이를 자동으로 수행하지 않더라도 말입니다.
다음 기사에서는 이 출현 합의 철학을 더 자세히 살펴볼 것입니다.
저자 주: 이 기사는 BUIP001로 인해 발생할 수 있는 모든 문제에 대한 완전한 개요가 아닙니다. 가장 중요한 것은, 노드 중앙화, 채굴자 중앙화 또는 수수료 경제학과 같은 과도한 (또는 떠 있는) 블록 크기 제한 자체에서 파생된 트레이드 오프와 약점을 무시하고, (부족한) 블록체인 수렴에 초점을 맞추고 있다는 것입니다.
“Jonny1000”이 이 기사에 기여했습니다.