Taproot 활성화에 대한 논의가 최종 단계에 접어든 것으로 보이며, 남은 결정은 활성화 매개변수 LOT에 관한 것입니다.
Taproot의 코드는 비트코인 프로토콜의 사실상 참조 구현인 최신 버전의 비트코인 코어에 포함되었습니다. 남은 단계는 업그레이드가 비트코인 네트워크에서 활성화되는 것입니다.
그러나 중앙 권한이 없는 합의 시스템으로서 비트코인 프로토콜 업그레이드는 도전적일 수 있습니다. 네트워크의 한 세그먼트가 다른 세그먼트보다 먼저 프로토콜의 새 버전으로 업그레이드하면, 서로 다른 노드가 서로 다른 규칙을 시행할 수 있어 네트워크가 분열될 위험이 있습니다.
Taproot는 소프트 포크 업그레이드로, 이 위험을 최소화하기 위해 이전 버전과 호환됩니다. 해시 파워로 새로운 규칙을 시행하는 광부의 과반수가 있는 한, 업그레이드된 노드와 비업그레이드된 노드는 각각 블록체인의 자신의 버전을 수용합니다: 업그레이드된 노드는 새로운 규칙이 제대로 시행되기 때문에, 비업그레이드된 노드는 기존 규칙이 위반되지 않기 때문입니다.
따라서 비트코인의 이전 소프트 포크 중 여러 개는 해시 파워를 조정 메커니즘으로 활용하여 배포되었습니다. 이를 광부 활성화 소프트 포크(MASF)라고 합니다. (일반적으로) 95%의 새로 채굴된 블록이 준비 신호를 포함하면, 모든 업그레이드된 노드는 새로운 규칙을 시행하기 시작합니다. 이 기준이 (일반적으로) 1년 이내에 충족되지 않으면, 업그레이드는 만료됩니다.
2017년, 분리된 증인(SegWit) MASF는 만료에 가까워졌습니다. 치열한 확장 논쟁 중에 광부들은 업그레이드에 대한 준비 신호를 거부했습니다. 이에 대응하여, 사용자와 일부 개발자들로 구성된 풀뿌리 그룹은 특별한 비트코인 소프트웨어 클라이언트인 BIP 148 클라이언트를 출시했습니다. BIP 148 클라이언트는 원래 95% 기준을 충족할 해시 파워 지원이 부족하더라도 주어진 날짜에 SegWit를 활성화할 것입니다. 이는 사용자 활성화 소프트 포크(UASF)로 알려진 업그레이드 메커니즘입니다. SegWit UASF가 활성화되기 직전에 광부들은 준비 신호를 보내기 시작했습니다.
이제 약 4년이 지난 지금, SegWit 활성화와 관련된 사건들은 Taproot 업그레이드의 소프트 포크 활성화에 대한 새로운 논의를 촉발했습니다. 이 논의는 해시 파워 기준과 활성화 기간의 길이에 관한 것이지만, 이들은 각각 90%와 1년으로 대부분 정해진 것으로 보입니다. (이 기사의 나머지 부분도 이를 가정할 것입니다.)
마지막으로 남은 쟁점은 타임아웃 잠금(Lock-in on Timeout, LOT) 매개변수에 관한 것으로, 이는 “true”(LOT=true) 또는 “false”(LOT=false)로 설정할 수 있습니다.
LOT=true와 LOT=false란 무엇인가요?
LOT=true와 LOT=false 옵션의 메커니즘은 간단합니다. 두 경우 모두 광부들은 해시 파워 신호를 통해 Taproot를 활성화할 수 있는 1년의 시간이 주어집니다. 그 해에 90%의 해시 파워가 업그레이드에 대한 지지를 신호하면, Taproot 준비 노드는 새로운 규칙을 시행하기 시작합니다.
차이는 해가 끝날 때 광부들이 활성화를 신호하지 않았을 경우에 발생합니다.
LOT=false의 경우, 활성화는 단순히 만료됩니다. 그 시점에서 Taproot는 활성화되지 않으며, 노드는 Taproot 없이 현재 비트코인 프로토콜을 계속 사용합니다. 이후 새로운 활성화 기간을 예정할 수 있으며, 이번에는 아마도 LOT=true를 사용할 것입니다.
LOT=true의 경우, 활성화는 만료되지 않습니다. 대신, UASF처럼 활성화 기간의 마지막 몇 주 동안 Taproot 활성화를 신호하지 않는 블록을 거부하기 시작합니다. Taproot에 대한 준비 신호를 보내는 블록만 수용되면, 활성화 기준이 반드시 충족될 것입니다. 물론 Taproot 신호 블록이 채굴된다고 가정할 때입니다. (사실 이 과정에는 약간의 뉘앙스가 더 있지만, 이는 기술적 세부사항이며 이 기사에서는 그리 중요하지 않습니다.)
LOT=true를 지지하는 주된 주장은 LOT=false가 광부들에게 업그레이드에 대한 “거부권”을 부여한다는 것입니다. 그들은 광범위한 합의가 있을 때에도 준비 신호를 거부함으로써 Taproot 활성화를 차단할 수 있습니다. SegWit 활성화 기간 동안, 이 거부권이 광부들에 의해 비트코인 프로토콜 개발에 영향을 미치기 위한 수단으로 활용되고 있는 것처럼 보였습니다.
그러나 LOT=false 지지자들은 이 거부권이 실제로는 거부권이 아니라고 주장합니다. 결국 광부들은 Taproot 활성화를 차단할 수 없으며, 사용자는 LOT=false를 처음 사용하더라도 언제든지 LOT=true 클라이언트로 업그레이드할 수 있습니다. 이는 두 가지 주요 방법으로 이루어질 수 있습니다. 첫째, 사용자가 활성화 기간이 끝나기 전에 LOT=true 클라이언트로 전환하는 것입니다. 둘째, 이미 언급했듯이, 활성화 기간이 끝날 때까지 기다렸다가 새로운 활성화 기간을 예정할 수 있습니다.
그러나 LOT=true의 지지자들은 이러한 두 가지 다른 옵션이 거부권을 무효화하는 또 다른 갈등의 원인이 될 수 있다고 지적합니다. 예를 들어, 활성화 기간이 시작된 지 6개월이 지나도 광부들이 업그레이드에 대한 지지를 신호하지 않는 경우, 한 세그먼트의 사용자는 연도가 끝나기 전에 LOT=true 클라이언트를 배포하기를 선호할 수 있고, 다른 세그먼트는 첫 번째 활성화 기간이 끝난 후에 새로운 활성화 메커니즘을 배포하기를 선호할 수 있습니다. 이는 사실상 LOT=false와 LOT=true 간의 현재 논쟁을 재도입하게 되며, 이번에는 문제를 해결할 수 있는 시간이 단 6개월로 줄어듭니다. LOT=true 지지자들은 이를 피하기 위해 광부들에게 (일종의) 거부권을 부여하지 않는 것이 가장 좋다고 생각합니다.
그러나 LOT=false에 대한 주장과 LOT=true에 대한 반대 주장도 있습니다.
첫째, LOT=false는 이전 소프트 포크의 활성화 메커니즘과 더 유사하며, 대부분의 경우 잘 진행되었습니다. SegWit 업그레이드가 매끄럽지 않았던 반면, LOT=false 지지자들은 이는 “확장 전쟁”이라는 예외적인 상황 때문이라고 주장합니다. (일부 LOT=true 지지자들은 그러나 LOT=false가 다시 그러한 상황을 초래할 수 있다고 믿습니다.)
둘째, 대부분의 채굴 풀들이 Taproot 업그레이드를 지지한다고 밝혔기 때문에, LOT=false는 타임아웃 시나리오에 도달하지 않고도 작업을 수행할 가능성이 높습니다. 이는 LOT=true를 불필요하게 만듭니다. (LOT=true 지지자들은 대신 명시된 의도가 기술 업그레이드 메커니즘 설계의 요소가 되어서는 안 되며, LOT=true가 광부들이 연말 전에 업그레이드하도록 보장하는 인센티브를 가장 잘 정렬한다고 주장합니다.)
셋째, Taproot에 문제가 발견될 가능성이 낮은 상황에서, LOT=false는 업그레이드에서 쉽게 물러날 수 있게 해줍니다: 광부들은 단순히 준비 신호를 보내지 않으면 되고, 제안은 사용자가 소프트웨어를 다시 업그레이드할 필요 없이 만료됩니다. (LOT=true 지지자들은 Taproot가 잘 검토되었으며, 그렇지 않다면 처음부터 활성화될 수 없다고 믿습니다. 그리고 문제가 발견되더라도, 기술적 수단을 통해 Taproot 활성화를 쉽게 해제할 수 있어야 한다고 생각합니다.)
넷째, LOT=true는 비트코인 코어 개발자들이 비트코인 프로토콜을 변경할 수 있는 권한이 있다는 인식을 조장할 수 있습니다. LOT=true가 Taproot 활성화를 “보장”하기 때문에, 그들의 코드는 프로토콜 규칙의 변경을 “강제”할 것입니다. 이러한 인식은 개발자에게 원치 않는 주목을 끌 수 있습니다.
이러한 인식은 대부분 잘못된 것이며, LOT=true 지지자들도 이를 지적합니다. 결국 사용자는 새로운 비트코인 코어 소프트웨어를 자발적으로 채택해야 합니다. 개발자는 코드를 배포할 수 있지만, 사용자가 이를 실행하도록 강제할 수는 없습니다. 대부분의 LOT=false 지지자들은 이에 동의하지만, 개발자의 권한에 대한 인식이 여전히 존재할 수 있으며, 그 인식만으로도 충분히 해로울 수 있다고 주장합니다 — 비록 잘못된 것일지라도.
그러나 아마도 가장 중요한 것은, LOT=false에 대한 다섯 번째 주장이자 LOT=true에 대한 반대 주장은 LOT=true가 특정 시나리오에서 불안정한 네트워크를 초래하고 아마도 블록체인 분할을 초래할 수 있다는 것입니다. 이는 사용자와 광부에게 자금을 잃게 하고 비트코인 프로젝트에 대한 신뢰를 저하시킬 수 있습니다.
그러나 LOT=true 지지자들은 반대로 LOT=false가 비트코인 코어에서 이러한 시나리오가 발생할 위험이 더 크다고 주장합니다.
이 불일치를 이해하기 위해 몇 가지 시나리오를 살펴보겠습니다…
LOT에 대한 네트워크 합의가 없다면 어떻게 될까요?
LOT=true 또는 LOT=false에 대한 합의가 있다면 — 즉, 네트워크의 모든 노드가 하나를 사용한다면 — 시나리오는 간단합니다. 두 경우 모두 Taproot는 활성화 기간 동안 활성화될 가능성이 높습니다. 그렇지 않으면 LOT=true의 경우 업그레이드가 연말까지 활성화되고, 광부들은 이를 수용할 수밖에 없습니다 (그렇지 않으면 네트워크가 거부하는 블록을 채굴하게 되어 해시 파워를 낭비하게 됩니다). 또는 LOT=false의 경우, 제안은 만료되고 새로운 활성화 기간이 예정되며, 이번에는 아마도 LOT=true를 사용할 것입니다. (활성화 기간이 끝나기 전에 이미 LOT=true로 합의가 이동했다면, 이 경우 Taproot도 연말 전에 활성화됩니다.)
LOT=true 또는 LOT=false에 대한 합의가 없다면 상황은 더 복잡해집니다. 활성화 기간이 만료되고 한 세그먼트의 네트워크가 LOT=true 클라이언트를 실행하고 다른 세그먼트가 LOT=false 클라이언트를 실행하는 경우, 각 옵션에 대한 지지 여부에 따라 결정됩니다. (지금은 세 번째, 그러나 중요한 세그먼트인 LOT=true 또는 LOT=false를 실행하지 않는 사용자 그룹은 무시하겠습니다… 이 그룹에 대해서는 잠시 후에 다룰 것입니다.)
첫 번째로 주목할 점은 해시 파워로 지지를 신호하고 LOT=true를 사용하는 광부들이 과반수인 경우 Taproot는 업그레이드가 보장된다는 것입니다. 이 광부들은 활성화 기간이 끝날 때 블록을 거부하기 시작할 것이며, 비신호 광부들보다 더 긴 블록체인을 생성할 것이고, LOT=true 및 LOT=false 클라이언트 모두 이 체인을 유효한 것으로 수용할 것이므로, 모두가 이 Taproot 신호 블록체인을 수용하고 업그레이드가 활성화될 것입니다. 즉, 해시 파워 활성화 기준이 마지막 몇 주 동안 90%에서 51%로 효과적으로 떨어질 것입니다.
그러나 모든 광부의 절반 이하가 LOT=true를 사용하고 신호 기간이 만료되면, 비트코인 블록체인은 LOT=true와 LOT=false 노드 간에 “분할”될 수 있습니다. LOT=true 노드는 신호 블록만 수용하며, 비신호 블록이 더 긴 블록체인을 만들어도 수용하지 않습니다. 그들은 본질적으로 “LOT=true 체인”에 속하게 됩니다. 반면 LOT=false 노드는 더 긴 “LOT=false 체인”을 선호하며 LOT=true 체인을 거부합니다.
결과적으로 블록체인 포크가 발생하고 궁극적으로는 각기 다른 블록체인 두 개가 생성될 수 있으며, 각 블록체인은 “자신의” 거래 기록과 본질적으로 자신의 코인을 가지게 되며, 잠재적으로 자신의 환율도 가질 수 있습니다: “코인 분할”. 두 블록체인의 사용자들은 자신의 버전을 “진짜 비트코인”으로 간주할 수 있습니다.
그러나 LOT=false 체인에서 추가적인 프로토콜 변경이 없다면, 이 경우 LOT=true 체인은 강력한 게임 이론적 이점을 가질 것입니다. LOT=true 노드와 광부들은 LOT=false 체인을 절대 수용하지 않을 것이며, 아무리 더 길어지더라도 마찬가지입니다. “최악의 경우” 시나리오에서는 소수의 코인으로 남게 될 것입니다.
반면 LOT=false 노드는 LOT=true 체인이 더 긴 체인이 되면 이를 수용할 것입니다. 그들은 “자신의” LOT=false 체인을 포기하고 분할 이후에 그 체인에서 받은 또는 채굴한 코인을 잃게 됩니다. 요약하자면: LOT=false 노드와 광부들은 돈을 잃을 위험이 있습니다. 따라서 그들은 이러한 일이 발생하기 전에 LOT=true 체인에 합류할 강력한 인센티브를 가질 것입니다. (특히 그들이 Taproot 업그레이드 자체에 반대하지 않는다고 가정할 때입니다.)
LOT=true 체인에 합류할 인센티브는 대부분의 사용자가 LOT=true 체인을 선호할 경우 특히 강할 것입니다. 또는 더 정확히 말하면, 이 체인이 “경제적 다수”를 가질 경우입니다. 비트코인 경제의 대부분이 가상의 LOT=true 체인에서 코인을 수용하고 보유하기를 선호한다면, 이러한 코인은 더 높은 가격과 더 많은 거래 수수료를 요구할 것이며, 이는 가장 많은 광부를 끌어들일 것입니다. 이는 차례로 LOT=true 체인이 가장 길고 따라서 유일한 체인이 되도록 보장할 것입니다.
여기서 문제가 발생합니다. “안전한 쪽”에 있기 위해 LOT=true 체인에 합류하려는 인센티브는 사용자가 상황을 인식하고 있어야만 효과가 있습니다. LOT=false가 업그레이드 메커니즘이 될 것이라고 가정하고 전환하지 않은 사람은, 분할이 발생하고 LOT=false 체인이 이후에 포기될 경우 여전히 돈을 잃을 수 있습니다.
지금까지 무시했던 세 번째 사용자 세그먼트, 즉 LOT=true 또는 LOT=false를 실행하지 않는 사용자 그룹에 대해서도 마찬가지입니다. 이들은 예를 들어 어떤 이유로든 비트코인의 업그레이드 프로세스를 전혀 따라가지 않는 사용자일 수 있습니다. 이 시나리오의 LOT=false 사용자처럼, 이러한 예기치 않은 사용자도 돈을 잃을 수 있으며, 이는 그들의 잘못이 아닐 수 있습니다.
LOT=false 지지자들은 LOT=true가 본질적으로 다른 사용자에게 업그레이드를 “강요”한다고 주장하며, 이는 바람직하지 않다고 생각합니다. 따라서 LOT=false 지지자들은 MASF가 실패할 경우에만 LOT=true를 사용해야 한다고 믿습니다.
LOT=true 지지자들은 이러한 피해를 피하는 가장 좋은 방법은 비트코인 코어 릴리스에서 LOT=true를 배포하는 것이라고 반박합니다. 그들은 일부 사용자 세그먼트가 비트코인 코어에 포함되지 않더라도 LOT=true 클라이언트를 실행할 것이라고 믿으며, 비록 이 그룹이 작을 수 있지만 체인 분할을 초래할 만큼 충분히 클 수 있으며, 결과는 좋지 않을 수 있습니다.
따라서 비트코인 코어에서 LOT=true를 구현하는 것이 더 안전하다고 주장합니다. 네트워크에서 가장 널리 사용되는 비트코인 구현이기 때문에, LOT=true가 포함된 비트코인 코어 릴리스는 경제적 다수가 LOT=true를 사용하도록 보장할 가능성이 높으며, 이는 광부들이 Taproot를 활성화하도록 하는 인센티브가 무시할 수 없을 만큼 강해져서 코인 분할 시나리오의 위험을 최소화합니다.
그렇다면 실제로 어떤 일이 발생할까요?
LOT=true와 LOT=false에 대한 논의가 어떻게 해결될지 예측하는 것은 불가능합니다 — 만약 해결된다면 말입니다.
일반 원칙으로서 비트코인 코어 개발 프로세스는 대략적인 합의에 의해 안내됩니다; 논란이 있는 코드는 새로운 릴리스에 포함되어서는 안 됩니다. 이는 물론 Taproot와 같은 프로토콜 업그레이드에 대해 매우 사실이지만, 프로토콜 업그레이드를 활성화하는 코드에도 똑같이 적용될 것입니다. Taproot 자체에 대한 대략적인 합의가 있는 것으로 보이지만, 업그레이드 메커니즘에 대한 대략적인 합의는 아직 없습니다.
어쩌면 합의가 결국 LOT=true 또는 LOT=false로 정착할 수 있습니다 (또는 사용자가 둘 중 하나를 선택할 수 있는 구성 가능한 옵션과 같은 다른 해결책이 있을 수도 있습니다). 그러나 어느 쪽에도 대략적인 합의가 나타나지 않는 한, 비트코인 코어에 어느 옵션도 포함되지 않을 가능성이 있습니다. Taproot 업그레이드는 사실상 보류될 것입니다, 최소한 일시적으로.
또 다른 가능성은 결국 LOT=false가 비트코인 코어에 포함되도록 합의가 이루어지지만, 이는 LOT=true 지지자들이 독립적으로 LOT=true가 포함된 대안 클라이언트를 출시하기 때문일 수 있습니다. 이는 SegWit가 활성화된 방식과 유사하며, BIP 148 클라이언트가 LOT=true 클라이언트의 역할을 합니다. 그러나 이는 이 기사에서 설명한 일부 코인 분할 위험을 초래할 수 있습니다.
또한 (그러나 아마도 덜 가능성이 높지만) LOT=true 또는 LOT=false가 비트코인 코어에 채택되지 않지만, 대안 클라이언트에 하나 또는 두 개의 옵션이 포함될 수 있습니다. 충분한 사용자가 이러한 대안 클라이언트로 전환하면 — 비록 이들이 LOT=false 클라이언트일지라도 — Taproot는 비트코인 코어의 개입 없이 활성화될 수 있습니다. 비트코인 코어는 이후 나머지 네트워크가 업그레이드된 후 Taproot 호환 버전의 소프트웨어를 출시할 수 있습니다. (이는 Libbitcoin과 같은 일부 대안 비트코인 클라이언트가 역사적으로 프로토콜 업그레이드를 채택해온 방식과 유사합니다.)
아니면, 새로운 가능성이 나타날 수도 있습니다.
저자 주: 이 기사에서 설명된 일부 주장과 시나리오는 가독성을 위해 단순화되었습니다. 체인 분할이 발생할 경우, 더 많은 요소가 결과에 영향을 미칠 수 있으며, LOT=true 또는 LOT=false에 대한 합의 부족은 이 기사에서 설명된 것보다 더 작지만 여전히 해로운 혼란을 초래할 수 있습니다.
Taproot 활성화 프로세스를 따라가려면, bitcoin-dev 메일링 리스트와 Freenode (IRC)의 #taproot-activation 채널이 현재 가장 관련성 높은 논의 채널입니다.