탭루트는 컴팩트하고 개인 정보 보호를 위한 스마트 계약을 위한 비트코인 프로토콜 업그레이드로, 활성화에 가까워지고 있습니다. 탭루트 코드 자체는 최근 비트코인 코어의 주요 릴리스(비트코인 코어 0.21.0)에 이미 포함되어 있으며, 현재 비트코인 프로토콜의 사실상 참조 구현입니다. 다음 단계는 업그레이드를 비트코인 네트워크 전역에 활성화하기 위한 코드 배포입니다.
그러나 비트코인 프로토콜을 어떻게 업그레이드해야 하는지에 대한 기술적 및 철학적 의견 차이로 인해, 탭루트 활성화에 대한 논의는 길고 때로는 격렬한 논쟁으로 이어졌습니다. 현재 이로 인해 두 개의 서로 다른 탭루트 활성화 경로가 생겼으며, 이는 두 개의 주요 소프트웨어 클라이언트에 내장되어 있어 일부 시나리오에서는 서로 호환되지 않을 수도 있습니다.
이것은 두 개의 주요 탭루트 활성화 클라이언트의 이야기이며, 이들 간의 차이점과 향후 가능한 시나리오에 대한 것입니다.
배경
탭루트 활성화는 2020년 초부터 논의의 주제가 되어왔습니다. 비트코인 개발 메일링 리스트, 전용 IRC 채널 및 기타 논의 포럼에서 1년 이상 진행된 논의 과정에서 비트코인 개선 제안 8(BIP 8) 프로토콜을 사용하여 소프트 포크를 활성화하자는 대략적인 합의가 형성된 것으로 보입니다. 이는 채굴자들이 준비가 되었음을 신호로 보내 소프트 포크를 활성화할 수 있게 하며, 타임아웃에 도달할 때까지 지속됩니다.
최종 쟁점은 타임아웃에 도달했을 때 충분한 채굴자가 준비가 되었음을 신호로 보내지 않았다면 어떻게 해야 하는가에 대한 것이었으며, 이는 타임아웃 시 잠금(Lock-in On Timeout, LOT) 매개변수에 반영됩니다. LOT가 “false”(LOT=false)로 설정되면, 업그레이드는 타임아웃 시 만료되며 새로운 활성화 메커니즘을 고려할 수 있습니다. 그러나 LOT가 “true”(LOT=true)로 설정되면, 노드는 그 시점부터 신호 블록만 수용하고 비신호 블록은 거부합니다. 충분한 신호 블록이 채굴된다고 가정할 경우, 이는 활성화를 보장합니다.
LOT 논쟁의 양측의 모든 주장을 다루지 않고(여기 요약되어 있습니다), 의견 차이는 교착 상태로 향하는 것으로 보였습니다. 이를 피하기 위해 해시 파워 신호 없이 플래그 데이 활성화와 같은 다른 제안이 고려되었습니다. 그러나 아마도 더 중요한 것은, 일부 LOT=true 지지자들이 LOT=true 클라이언트를 출시하기로 결정했습니다: 비트코인 코어 0.21.0의 소프트웨어 포크로, 비트코인 코어 프로젝트가 무엇을 하든 상관없이 LOT=true를 사용하여 탭루트를 활성화할 것입니다.
하지만 마지막 순간에, 서로 다른 파벌 간의 타협안이 “스피디 트라이얼”이라는 제안에서 발견되었습니다. 스피디 트라이얼은 채굴자들이 업그레이드에 대한 준비를 신호로 보낼 수 있는 빠른 3개월의 윈도우를 제공합니다. 만약 채굴자들이 실제로 준비가 되었음을 신호로 보낸다면, 탭루트는 올해 후반에 활성화될 것이며, 사용자들이 업그레이드할 충분한 시간을 허용하기 위해 일부 지연이 포함되었습니다.
LOT=true 지지자들은 스피디 트라이얼이 그들의 계획된 LOT=true 활성화에 방해가 되지 않을 만큼 빠르기 때문에 본질적으로 이를 수용했으며, LOT=false 지지자들은 스피디 트라이얼이 본질적으로 LOT=false 구현이기 때문에 이를 수용했습니다. 이 솔루션은 논쟁의 양측에서 대부분이 기대했던 것과는 다소 거리가 있었지만, 최소한 다른 어떤 것보다 더 널리 수용 가능한 것이었습니다.
그것은 스피디 트라이얼의 세부 사항이 최종화되고 있을 때까지 계속되었으며, 양측은 여전히 스피디 트라이얼이 LOT=true 클라이언트와 더 호환되거나 덜 호환되도록 만드는 구현 세부 사항에 대해 의견이 일치하지 않았습니다.
LOT=true와 LOT=false 간의 원래 철학적 분열과 스피디 트라이얼의 구현 세부 사항에 대한 의견 차이는 이제 두 개의 서로 다른 탭루트 활성화 클라이언트로 이어졌습니다: 비트코인 코어 0.21.1과 LOT=true 클라이언트인 비트코인 코어 0.21.0 기반 탭루트 클라이언트 0.1입니다.
비트코인 코어 0.21.1
비트코인 코어 0.21.1은 이 기사에서 때때로 “비트코인 코어”라고 간단히 언급되는 비트코인 코어 소프트웨어 클라이언트의 다가오는 마이너 릴리스입니다. 이는 대부분의 정규 비트코인 코어 기여자들에 의해 개발되고 지지받고 있습니다. (비트코인 코어 0.21.1 릴리스 후보가 오늘 발표되었으며, 곧 공식 릴리스로 확인될 수 있습니다. 어쨌든 공식 릴리스는 곧 이어질 것입니다.)
비트코인 코어는 탭루트 활성화를 위한 스피디 트라이얼의 최종 구현을 사용합니다. 이는 해시 파워 신호 기간이 4월 23일 이후 첫 두 주의 난이도 기간에 시작될 것임을 의미하며, 이는 현재 5월 2일에 시작될 것으로 예상됩니다. 신호 기간은 8월 11일 이전의 마지막 두 주 난이도 기간의 끝까지 타임아웃됩니다.
만약 최소 90%의 채굴자가 그 두 날짜 사이의 두 주 난이도 기간 중 어느 기간에서든 업그레이드에 대한 준비를 신호로 보낸다면, 탭루트는 비트코인 블록 709632에서 활성화될 것이며, 이는 이번 11월에 채굴될 것으로 예상됩니다.
만약 채굴자들이 신호 기간이 끝날 때까지 탭루트를 활성화하지 않았다면, 업그레이드는 만료됩니다. 비트코인 코어 개발자들은 그 후 재평가를 하고 아마도 향후 비트코인 코어 릴리스에서 다른 활성화 코드로 후속 조치를 취할 것입니다. 그러나 이(추정되는) 두 번째 활성화 솔루션이 무엇이 될지는 결정되지 않았습니다.
비트코인 코어 0.21.0 기반 탭루트 클라이언트 0.1
비트코인 코어 0.21.0 기반 탭루트 클라이언트 0.1은 이 기사에서 간단히 “비트코인 탭루트”라고 언급되며, LOT=true 클라이언트입니다. 비트코인 탭루트는 비트코인 코어 0.21.0의 소프트웨어 포크로, 마지막 주요 비트코인 코어 릴리스이지만, 탭루트를 위한 BIP 8 LOT=true 활성화 코드가 추가되었습니다. 이 프로젝트는 가명 커뮤니티 구성원인 비트코인 메카닉과 시노비에 의해 유지되며, 비트코인 코어 개발자이자 비트코인 노츠의 주요 유지 관리자인 루크 대쉬어가 프로젝트의 가장 주목받는 경험이 풍부한 기여자입니다. (클라이언트 이름에 “비트코인 코어”가 언급되지만, 대부분의 정규 비트코인 코어 기여자들은 이 특정 클라이언트를 지지하지 않습니다.)
비트코인 탭루트는 비트코인 블록 681408에서 신호 기간이 시작될 것이며, 이는 5월 2일에 채굴될 것으로 예상됩니다: 이는 (거의 확실히) 스피디 트라이얼 신호 기간의 시작을 나타내는 동일한 블록입니다. 그러나 비트코인 탭루트의 신호 기간은 비트코인 블록 760032에서 끝나며, 이는 내년 2022년 10월에 채굴될 것으로 예상됩니다.
만약 최소 90%의 채굴자가 그 두 블록 사이의 두 주 난이도 기간 동안 탭루트에 대한 준비를 신호로 보낸다면, 업그레이드는 비트코인 블록 709632에서 활성화되거나, 이미 그 블록을 지나쳤다면 신호 기준이 충족된 후 2주 후에 활성화됩니다. 즉, 탭루트는 올해 11월에 가장 빨리 활성화될 것이며(스피디 트라이얼과 함께 비트코인 코어와 동일), 그러나 내년 11월까지 활성화될 수 있습니다.
또한, 가장 중요한 것은 비트코인 탭루트가 LOT=true를 사용한다는 점입니다. 비트코인 코어의 스피디 트라이얼은 충분한 채굴자가 준비가 되었음을 신호로 보내지 않으면 만료되지만, 비트코인 탭루트 클라이언트는 결국 신호 블록만 수용하게 되며, 따라서 준비가 되었음을 신호로 보내지 않는 블록은 거부됩니다(있는 경우). 이는 신호 기준이 반드시 충족될 것임을 의미하며(충분한 신호 블록이 채굴된다고 가정할 경우), 탭루트의 활성화가 보장됩니다.
차이점
따라서 비트코인 코어와 비트코인 탭루트 간에는 세 가지 차이점이 있습니다.
첫 번째 차이점은 (논란의 여지가 있지만) 사소한 것입니다. 비트코인 코어는 신호 기간이 시작되고 끝나는 시점을 날짜와 시간으로 표시하는 반면, 비트코인 탭루트는 블록 높이만 사용합니다. 대부분의 비트코인 코어 개발자들은 이것이 작거나 심지어 사소한 차이라고 생각합니다; 너무 사소해서 일부는 “동전 던지기”로 결정할 수 있다고 생각했지만, 결국 날짜와 시간을 사용하는 것으로 정해졌습니다. 그러나 가장 주목받는 비트코인 탭루트 기여자인 대쉬어는 블록 높이를 사용하는 것을 강력히 선호합니다.
간단히 말해, 블록 높이를 사용하는 주장은 신호 창의 끝 무렵에 난이도 기간이 끝나는 엣지 케이스 시나리오를 제거하고, 시간 왜곡 공격(채굴자들이 블록 시간을 조작하기 위해 공모하는 경우)을 방지하며, 더 일관성이 있다는 것입니다: 업그레이드는 날짜와 시간에 관계없이 특정 블록 높이에서 반드시 시행되기 시작합니다. 대쉬어는 또한 비트코인 커뮤니티가 스피디 트라이얼이 등장하기 전에 이미 활성화를 위해 블록 높이를 사용하는 것으로 정해졌다고 믿고 있습니다.
블록 시간을 사용하는 주장은 인간이 날짜를 기준으로 일정을 잡기가 조금 더 쉽고, 이전 소프트 포크 활성화에 비해 코드 변경이 적으며, 특정 테스트 네트워크에서 시뮬레이션을 실행하는 데 더 편리한 경우가 있다는 것입니다.
두 번째, 더 큰 차이점은 비트코인 코어의 스피디 트라이얼 신호 기간이 약 3개월 동안 지속되는 반면, 비트코인 탭루트의 신호 기간은 약 18개월 동안 지속된다는 것입니다. 비트코인 코어와 비트코인 탭루트의 신호 기간이 사실상 같은 시점에 시작될 것이 보장되지만, 비트코인 탭루트의 신호 기간은 최대 15개월 더 지속될 것입니다.
세 번째이자 가장 큰 차이점은 비트코인 코어의 스피디 트라이얼 신호 기간이 채굴자들이 3개월 기간이 끝나기 전에 준비가 되었음을 신호로 보내지 않으면 만료되지만, 비트코인 탭루트는 LOT=true를 사용하여 결국 신호 블록만 수용하게 되며, 따라서 탭루트 활성화를 보장한다는 것입니다.
호환성 문제
비트코인 코어와 비트코인 탭루트는 서로 호환되는 상태로 시작합니다. 이들은 동일한 비트코인 네트워크에서 공존하며, 동일한 비트코인 블록을 수용(및 거부)하고, 이러한 블록에서 동일한 비트코인 블록체인을 생성합니다.
채굴자들이 스피디 트라이얼 기한 전에 탭루트를 활성화하면 이러한 상태는 유지됩니다. 그 경우 비트코인 코어와 비트코인 탭루트 노드는 모두 비트코인 블록 709632(11월)에서 탭루트 업그레이드를 시행하기 시작할 것입니다.
그러나 채굴자들이 스피디 트라이얼 기한 전에 준비가 되었음을 신호로 보내지 않으면, 비트코인 코어와 비트코인 탭루트는 호환되지 않을 수 있습니다. 이것이 발생할 수 있는 두 가지 주요 시나리오가 있습니다.
가장 명백하게는, 만약 대다수의 채굴자가 비트코인 탭루트 신호 기간(2022년 10월) 종료 전에 지원을 신호로 보내지 않으면, 비트코인 탭루트 노드는 비신호 블록을 거부하기 시작할 것이며, 비트코인 코어 노드는 여전히 이를 수용할 것입니다. 즉, 블록체인은 비트코인 탭루트 노드와 비트코인 코어 노드 간에 분리될 것입니다. 이 분리는 지속될 수 있으며, 그 결과 두 개의 블록체인과 두 개의 서로 다른 코인이 존재하게 될 것입니다; “코인 분할”입니다.
덜 명백하게는, 대다수의 채굴자가 스피디 트라이얼 신호 기간 이후, 그러나 비트코인 탭루트 신호 기간이 끝나기 전에 언제든지 “거짓 신호”를 보낼 수 있습니다: 그들은 준비가 되었음을 신호로 보내지만 실제로 탭루트 규칙을 시행할 계획이 없을 수 있습니다. 이는 비트코인 탭루트와 비트코인 코어 노드를 호환되지 않게 만들지는 않을 것입니다. 그러나 그들은 비트코인 프로토콜에 대한 다른 해석을 갖게 될 것입니다: 비트코인 탭루트는 탭루트 규칙을 시행할 것이고 비트코인 코어는 그렇지 않을 것입니다.
이는 잘못된 탭루트 거래가 채굴될 경우 네트워크를 분리할 수 있습니다. 비트코인 탭루트 노드는 이 거래를 포함하는 블록을 거부할 것이며, 비트코인 코어 노드는 이를 잘 수용할 것입니다: 그들은 탭루트 규칙을 시행하지 않을 것이기 때문입니다. 만약 대다수의 채굴자가 잘못된 탭루트 블록 위에 계속해서 블록을 쌓는다면, 이는 또한 코인 분할을 초래할 것입니다.
이 모든 것은 가까운 시일 내에 발생할 가능성이 없습니다. 코인 분할이 발생할 수 있는 가장 이른 시점은 올해 11월이며, 스피디 트라이얼 신호 기간은 8월에 종료됩니다. 이는 비트코인 탭루트 또는 비트코인 코어가 호환성 문제를 해결할 수 있는 최소 3개월의 시간을 남기게 됩니다 — 또는 비트코인 사용자와 채굴자가 그에 따라 행동할 수 있는 시간입니다.