비트코인 코어 소프트웨어 포크 중 하나인 비트코인 언리미티드(Bitcoin Unlimited)는 최근 몇 달 동안 많은 주목을 받았습니다. 이 프로젝트는 ViaBTC, GBMiners 및 BTC.TOP을 포함한 여러 새로운 비트코인 채굴 풀로부터 해시 파워 지원을 받았으며, 노드 채택도 증가하는 것으로 보입니다.
비트코인 언리미티드의 핵심 아이디어는 “비트코인 언리미티드 개선 제안 001”(BUIP001)에서 명시된 바와 같이 비트코인의 블록 크기 제한을 사용자와 채굴자에게 넘기는 것입니다. 또는 더 정확하게 말하자면: 이 제어를 더 명확하고 쉽게 처리할 수 있도록 만드는 것입니다.
제안
비트코인 프로토콜은 경제적으로 관련 있는 노드에 의해 시행되며 현재 1메가바이트 블록 크기 제한을 포함하고 있습니다. 만약 채굴자가 1메가바이트보다 큰 블록을 생성하면, 그 블록은 유효하지 않은 것으로 간주됩니다. 그 블록은 비트코인의 블록체인에 포함되지 않으며, 이를 채굴한 채굴자는 자원을 낭비하게 됩니다.
BUIP001은 비트코인 언리미티드의 수석 개발자인 앤드류 스톤(Andrew Stone)이 작성하였으며, 1메가바이트 블록 크기 제한 프로토콜 규칙을 완전히 폐기하고 세 가지 구성 가능한 옵션으로 대체합니다. 이 중 두 가지는 모든 노드 운영자가 구성할 수 있으며, 여기에는 일반 사용자와 채굴자가 포함됩니다. 세 번째 옵션은 오직 채굴자만을 위한 것입니다.
이 구성은 비트코인 네트워크에 신호로 전달됩니다. 일반 사용자는 자신의 선호도를 다른 노드에 방송하고, 채굴자는 자신이 채굴하는 블록에 선호도를 포함시킵니다.
옵션 1: 최대 생성 크기, 또는 “MG”
첫 번째는 최대 생성 크기, 즉 “MG”입니다. 이 옵션은 채굴자 전용이며 상당히 간단합니다: 채굴자가 생성하는 블록의 크기를 설정할 수 있게 해줍니다. 기본 설정은 1메가바이트입니다: 현재 비트코인 프로토콜과 자동으로 다르지 않습니다. 그러나 채굴자가 2메가바이트 블록을 생성하고자 한다면, 비트코인 언리미티드의 사용자 인터페이스에서 “스위치를 전환하는 것”처럼 간단합니다. 만약 채굴자가 8메가바이트 블록을 생성하고자 한다면, 동일한 스위치를 사용하면 됩니다.
(남아 있는 유일한 제한은 비트코인 언리미티드가 160메가바이트로 설정한 메시지 길이 제한입니다. 그리고 궁극적으로 데이터 유형 제한이나 기계 자원 제한이 있을 수 있습니다.)
MG는 채굴자가 생성하는 블록의 크기에 대한 완전한 제어를 제공합니다. 그러나 물론, 위에서 설명한 바와 같이, 2메가바이트 블록은 현재 네트워크에 의해 거부될 것입니다.
여기서 두 번째 구성 가능한 옵션이 등장합니다.
옵션 2: 과도한 블록 크기, 또는 “EB”
과도한 블록 크기, 일반적으로 “EB”라고 불리는 이 옵션은 노드와 채굴자가 수용하는 블록의 크기를 결정합니다. 만약 채굴자가 2메가바이트 블록을 생성하면, 그 블록은 EB를 최소 2메가바이트로 설정한 모든 노드와 채굴자에 의해 수용됩니다.
EB는 기본적으로 16메가바이트로 설정되어 있으며, 일반 사용자와 채굴자 모두가 구성할 수 있습니다. 그러나 이는 채굴자에게 특히 중요한 구성입니다: 채굴자는 자신이 수용하는 블록 위에서만 채굴을 진행합니다. 현재 1메가바이트 블록 크기 제한을 유지하는 채굴자는 2메가바이트 블록을 거부하고, 대신 마지막 1메가바이트 블록 위에서 계속 채굴합니다. 그러나 EB를 2메가바이트로 설정한 채굴자는 네트워크의 나머지 부분이 어떻게 되든 즉시 동일한 2메가바이트 블록 위에서 채굴을 진행합니다.
물론, 이것은 문제를 제기합니다.
만약 소수의 채굴자가 EB를 1메가바이트로 설정하고, 대다수의 채굴자가 EB를 2메가바이트로 설정한다면, 네트워크는 두 개로 나뉠 수 있습니다. 누군가 2메가바이트 블록을 채굴하는 순간, 소수의 채굴자는 이를 무시하고 대신 1메가바이트 체인을 계속 확장할 것입니다. 그러나 대다수의 채굴자는 2메가바이트 블록이 포함된 체인을 수용하고, 그 체인을 확장할 것입니다.
다양한 채굴자 그룹은 서로 다른 체인을 유효하다고 간주하고, 자신의 “고유한” 체인 위에서 채굴하며 다른 체인을 무시할 것입니다. 이 분리는 기술적으로 영원히 지속될 수 있으며, 두 체인이 결코 수렴하지 않고 비트코인을 두 개의 서로 다른 네트워크와 통화로 나누는 효과를 가져올 수 있습니다.
이 문제를 해결하기 위해 비트코인 언리미티드는 세 번째 구성 가능한 옵션을 도입합니다.
옵션 3: 과도한 수용 깊이, 또는 “AD”
과도한 수용 깊이, 또는 “AD”는 본질적으로 EB를 무효화합니다. 더 구체적으로 말하자면, AD는 블록이 노드와 채굴자에 의해 수용되기 전에 필요한 추가 확인 수를 결정합니다. 기본값은 4입니다.
따라서, 노드가 EB를 2메가바이트로 설정하고 AD를 4개의 추가 확인으로 설정한다고 가정해 보겠습니다. 만약 그 노드가 3메가바이트 블록을 수신하면, 처음에는 그 블록이 2메가바이트 EB를 초과하므로 무시할 것입니다. 그러나 대다수의 채굴자가 그 블록을 무시하지 않고 그 위에 4개의 새로운 블록을 채굴하면, 노드의 2메가바이트 EB는 4개의 AD 확인에 의해 무효화됩니다. 3메가바이트 블록은 소급적으로 유효한 것으로 수용됩니다.
따라서 서로 다른 채굴자(및 노드)는 결국 서로 다른 MG 및 EB 설정을 가지고 있더라도 단일 유효 체인으로 수렴해야 합니다.
마지막으로 “스티키 게이트”에 대해 간단히 언급할 가치가 있습니다. 만약 노드의 AD가 충족되면, 그 노드는 약 24시간(144블록) 동안 모든 크기의 후속 블록을 수용합니다. 이 스티키 게이트는 채굴자가 즉시 새로 수용된 더 큰 블록이 있는 체인 위에서 구축하도록 보장하며, 각 블록이 충분한 AD에 도달하기를 기다리며 네트워크의 나머지 부분에서 계속 뒤처지지 않도록 합니다.
다음 기사에서는 BUIP001의 몇 가지 약점에 대해 자세히 살펴볼 것입니다.
“Jonny1000”이 이 기사에 기여했습니다.