미디어에 등장한 Purse와 그 내부에서 개발한 대안 비트코인 구현체 Bcoin이 최근 “To the Moon”이라는 이름의 스케일링 제안을 발표했습니다. 비트코인 XT, 비트코인 클래식 및 비트코인 언리미티드는 모두 하드 포크를 통해 비트코인의 블록 크기 제한을 늘리려 하고, 비트코인 코어 개발자들은 세그리게이티드 위트니스 소프트 포크(SegWit)를 선호하는 반면, Purse CEO 앤드류 리는 세 번째 접근 방식인 확장 블록을 발표했습니다.
확장 블록은 실제로 비트코인 코어 개발자 존슨 라우에 의해 2013년에 처음 제안되었고(“보조 블록”으로), 올해 초에도 다시 제안되었습니다. 이 솔루션은 일반적으로 하드 포크의 많은 장점을 공유합니다: 확장 블록은 거의 모든 프로토콜 변경을 허용합니다. 그러나 소프트 포크와 공유하는 중요한 이점이 하나 있습니다: 확장 블록은 하위 호환성을 가지고 있습니다.
글쎄요, 일종의 …
소프트 포크
소프트 포크는 새로운 규칙을 추가하거나 기존 규칙을 강화하는 프로토콜 변경입니다. “구 노드” — 지금은 이렇게 부르겠습니다 — 는 소프트 포크된 체인을 유효하다고 간주합니다. 왜냐하면 “구 규칙”을 깨지 않기 때문입니다. 이는 소프트 포크가 하위 호환성을 가진다는 것을 의미합니다: 구 노드는 소프트 포크를 시행하는 “신 노드”와 동일한 네트워크에서 공존할 수 있습니다.
소프트 포크는 규칙을 추가하거나 강화할 수만 있지만, 비트코인의 기능을 확장하는 데 영리하게 사용될 수 있습니다. 이를 위해 소프트 포크는 일반적으로 “anyonecanspend”로 알려진 특별한 비트코인 주소를 활용합니다. (사실 이들은 “출력”이지 주소가 아니지만, 단순성을 위해 지금은 무시하겠습니다.)
이 anyonecanspend 주소에 비트코인이 보유되어 있다면, 이는 누구나 이를 사용할 수 있다는 것을 의미합니다; 암호화 서명이나 다른 것이 필요하지 않습니다 … 또는 구 노드에게는 그렇게 보입니다.
하지만 새로운 규칙을 시행하는 신 노드는 그렇게 보지 않습니다. 새로운 규칙은 이러한 anyonecanspend 주소의 비트코인은 소프트 포크에 의해 정의된 특정 조건 하에서만 사용될 수 있다고 규정합니다. 예를 들어, 특정 시간이 지나야 한다(CLTV)거나 비트코인 블록의 새로운 부분에 서명이 포함되어야 한다(SegWit)고 규정할 수 있습니다.
확장 블록
확장 블록은 소프트 포크와 유사하지만, 문자 그대로 개념을 한 단계 더 발전시킵니다.
확장 블록 자체는 일반 비트코인 블록과 매우 유사하게 보이며, 이를 “기본 블록”이라고 부르겠습니다. 기본 블록처럼 확장 블록도 주로 여러 거래를 포함합니다.
하지만 차이가 있습니다. 기본 블록은 이전 기본 블록과 다음 기본 블록에 암호적으로 연결되어 있으며, 모든 기본 블록을 연대순으로 연결하여 비트코인의 블록체인을 형성합니다. 반면 확장 블록은 하나의 해당 기본 블록에만 연결됩니다. 확장 블록은 기본 블록에 “고정”되어 있습니다.
대부분의 소프트 포크와 유사하게, 확장 블록은 anyonecanspend 주소를 활용합니다. 그러나 이제 이러한 anyonecanspend 주소는 확장 블록으로의 출입 지점처럼 작용합니다.
기본 블록에서 확장 블록으로 거래가 전송될 때, 구 노드는 속임수를 당합니다. 구 노드의 관점에서, 코인은 기본 블록의 전형적인 anyonecanspend 주소로 전송됩니다. 구 노드에게는 코인이 기본 블록을 떠나지 않으며, 사실 구 노드는 확장 블록조차 보지 못합니다.
하지만 신 노드의 관점에서, 비트코인은 실제로 확장 블록의 완전히 새로운 주소인 “확장 주소”로 전송됩니다. 이 확장 주소는 대체로 일반 비트코인 주소처럼 작동합니다.
흥미롭게도, 이러한 비트코인은 확장 주소에서 확장 주소로, 하나의 확장 블록에서 다음 확장 블록으로 순환하기 시작할 수 있습니다. 따라서 신 노드는 코인이 이동하고 소유권이 변경되는 것을 볼 수 있습니다. 동시에 구 노드는 아무것도 보지 못하고 비트코인이 여전히 원래의 anyonecanspend 주소에 갇혀 있다고 생각합니다.
신 노드는 또한 자신의 확장 주소에서 기본 블록의 일반 주소로 비트코인을 보낼 수 있습니다. 이는 다시 구 노드를 속이는 방식으로 이루어집니다: 구 노드의 관점에서, 코인은 마침내 anyonecanspend 주소에서 이동됩니다. 오직 신 노드만이 코인이 실제로 어디에서 왔는지 알고 있습니다.
비트코인이 기본 블록과 일반 주소로 돌아오면, 구 노드와 신 노드는 동일한 것을 봅니다.
확장 블록의 주요 이점 중 하나는 거의 모든 면에서 원래 비트코인 프로토콜을 준수할 필요가 없다는 것입니다. 이는 새로운 가능성의 전체 범주를 열어줍니다. 확장 블록은 아마도 이더리움이나 이더리움 클래식처럼 더 많은 프로그래머블성을 제공하거나, 모네로, 제트캐시 또는 밈블윔블처럼 더 많은 프라이버시를 제공할 수 있습니다.
Bcoin의 제안은 다소 겸손합니다: “To the Moon” 확장 블록은 대부분 일반 블록보다 크기만 더 크며(현재까지 알려지지 않은 양으로), 더 많은 거래를 처리할 수 있습니다. 또한 세그리게이티드 위트니스를 포함하고, 확장 블록 위에 라이트닝 네트워크를 지원하기 위해 특별히 제작된 몇 가지 추가 이점을 포함합니다.
복잡성
확장 블록은 일반적으로, 그리고 특히 To the Moon은 기술적으로 작동할 수 있지만, 몇 가지 단점을 가지고 있습니다.
이러한 단점의 핵심은 To the Moon이 지금까지 제안된 다른 스케일링 솔루션보다 기술적으로 더 복잡하다는 것입니다. 여기에는 모든 하드 포크와 세그리게이티드 위트니스 소프트 포크가 포함됩니다. 이는 구현을 더 복잡하게 만듭니다.
사용자 관점에서 볼 때, To the Moon은 대부분의 소프트 포크보다 구 노드를 더 어둡게 남겨둘 것입니다. 구 노드는 소프트 포크된 anyonecanspend 주소의 코인이 어떻게 사용될 수 있는지 알지 못하지만, 확장 블록에서는 구 노드가 코인이 어디에 있는지조차 모릅니다. 이는 구 노드가 코인의 이력을 추적할 수 없고, 경우에 따라 일시적으로 이를 사용할 수조차 없음을 의미합니다. (블록체인 재조직이 발생할 경우, 이는 확장 블록에서 구 노드로의 거래가 어떻게 보이는지를 외관상 변경할 수 있습니다.)
따라서 모든 사람이 To the Moon을 좋아하는 것은 아닙니다. 확장 블록의 원래 제안자인 존슨 라우는 To the Moon이 “소프트 포크의 매우 중요한 요구 사항인 하위 호환성을 충족하지 못했다”고 주장합니다. 그는 대신 확장 블록을 “실제 생산 사용을 위한 준비가 된 것보다 더 학문적인 주제로 간주합니다.” 비트코인 코어 개발자이자 비트코인 노츠 유지 관리자인 루크 대시주르는 확장 블록이 “두 가지 종류의 ‘전체 노드’를 생성할 위험이 있다”고 경고합니다. 여기서 비업그레이드된 노드는 “유사-SPV(실제 SPV도 아님) 노드처럼 불안정하게 남겨집니다.” 비트코인 코어 개발자 맷 코랄로는 확장 블록이 전혀 선택 사항으로 간주되어서는 안 된다고 일축합니다. 대신 “전체 네트워크가 확장 블록을 신뢰하도록 강요된다”고 하며, 이는 “상당히 끔찍한 선례”라고 말합니다.