77 / 7362017

블록 크기 전쟁

비트코인의 처리 용량과 규칙을 바꿀 권한을 둘러싼 논쟁

2015~2017년 비트코인 참여자들은 독립적인 검증의 문턱을 높이지 않으면서 더 많은 결제를 처리할 방법을 놓고 다퉜습니다. 블록 크기 논쟁은 개발자·채굴자·기업이 이용자의 합의 없이 변화를 실현할 수 있는지를 시험하는 과정이기도 했습니다.

Block Size War는 비트코인의 용량과 규칙 변경을 둘러싼 일련의 논쟁입니다. 2017년 SegWit 활성화, Bitcoin Cash 분리, 예정된 SegWit2x 포크 중단으로 이어졌습니다. 이 세 사건은 원인과 기술적 진행 과정이 서로 달랐습니다.

일상적인 두 요구를 생각해 봅시다. 안나는 오래 기다리거나 높은 수수료를 내지 않고 비트코인을 보내고 싶습니다. 파벨은 블록과 거래를 스스로 검증하는 컴퓨터, 즉 풀 노드를 운영합니다. 비싼 장비 없이도 자기 돈을 확인하고 싶습니다. 둘 다 타당하지만 블록마다 데이터를 더 넣으면 전송하고 검증할 데이터도 늘어납니다. Block Size War의 중심에는 이 균형이 있었습니다. 블록은 네트워크가 공유하는 결제 기록에 추가되는 거래 묶음입니다. 안나와 파벨은 설명을 위한 가상 인물입니다. 실제 2015~2017년 논의에는 개발자, 채굴 사업자, 거래소, 지갑 제공자와 이용자가 참여했습니다. 용량뿐 아니라 변경을 안전하게 도입할 방법에서도 의견이 갈렸습니다. 비트코인에는 한 가지 방안을 골라 모두에게 전환을 명령할 대표가 없었습니다. [1] [11] [13]

SegWit 이전 규칙은 블록을 1 MB, 즉 1 000 000바이트로 제한했습니다. 결제 건수를 고정한 것은 아닙니다. 거래마다 차지하는 공간이 다르기 때문입니다. 새 블록은 평균적으로 약 10분마다 만들어집니다. 공간 수요가 용량보다 커지면 채굴자는 대체로 수수료율이 높은 거래를 우선하고 나머지는 기다립니다. 큰 블록 지지자들은 기본 네트워크에 공간을 직접 늘려 저렴한 결제를 유지하려 했습니다. 반대편은 인터넷 연결, 컴퓨터 성능, 빠른 블록 전파에 필요한 부담을 걱정했습니다. 독립적으로 검증할 사람이 줄면 외부 서비스를 믿어야 하는 이용자가 늘어나기 때문입니다. 한도를 높이는 것만으로 블록 생성이 빨라지거나 수수료가 영원히 낮아지지는 않습니다. 수요와 실제 공간 사용량도 중요합니다. [1] [2] [13]

개발자는 새 프로그램을 만들 수 있고 채굴자는 그에 따라 블록을 만들 수 있습니다. 하지만 Full Node 운영자는 자기 노드가 검증할 규칙을 선택합니다. 계산 능력의 과반수를 확보해도 수정하지 않은 노드에 규칙 위반 블록을 받아들이도록 강제할 수 없습니다. 채굴 능력은 유효한 체인 중 선택하는 데 관여하지만, 무효한 블록이 그것만으로 유효해지지 않습니다. 그렇다고 전 세계 투표에서 노드마다 한 표를 갖거나 한 사람이 다른 사람의 이탈을 막을 수 있다는 뜻도 아닙니다. 기업은 무엇을 받을지, 채굴자는 무엇을 채굴할지, 이용자는 무엇에 가치를 둘지 선택합니다. 호환되지 않는 규칙은 두 네트워크로 이어질 수 있습니다. 업계 합의는 변화를 뒷받침할 수 있어도 모두의 프로그램과 결정을 자동으로 바꾸지는 못합니다. [11] [12]

제안은 Bitcoin Improvement Proposal의 약자인 BIP 문서로 정리됐습니다. 다른 사람들이 내용을 검토하고 논의할 수 있도록 제안을 설명하는 문서입니다. 번호가 부여됐다고 해서 네트워크가 채택했다는 뜻은 아닙니다. Gavin Andresen은 BIP 101에서 한도를 8 MB로 올리고 이후에도 정해진 일정에 따라 늘리자고 제안했습니다. 약 2년마다 두 배로 늘리는 일정과 활성화 조건이 포함됐습니다. Mike Hearn과 Andresen은 이런 방향을 제공하는 대안 소프트웨어 Bitcoin XT를 추진했습니다. 하지만 프로그램 공개가 네트워크 전체의 규칙 변경은 아니었습니다. 기존 노드는 이전 한도보다 큰 블록을 거부합니다. 허용되는 블록의 범위를 넓히고 수신자가 다른 규칙을 채택해야 하는 Hard Fork였기 때문입니다. 따라서 논의는 공간을 얼마나 늘릴지에서 더 나아갔습니다. 누가 전환할지, 어떻게 조율할지, 상당수 참여자가 반대하면 어떻게 할지도 정해야 했습니다. [1] [18] [13]

Eric Lombrozo, Johnson Lau, Pieter Wuille는 BIP 141에서 다른 접근을 설명했습니다. SegWit은 거래 데이터 구성을 바꾸고 4 000 000 weight units로 제한되는 블록 무게를 도입했습니다. witness 부분에는 지출 권한을 확인하는 데 필요한 데이터 등이 들어갑니다. 이 데이터가 사라지거나 검증되지 않게 된 것이 아니라 무게 계산에서 다르게 취급됩니다. 용량은 거래 구성에 따라 달라지며, 일반적인 4메가바이트 블록을 단순히 허용한 것은 아닙니다. 블록 무게는 데이터를 한도에 어떻게 반영하는지 나타냅니다. 기본 데이터는 바이트당 4단위, 추가된 witness 관련 데이터는 바이트당 1단위로 계산합니다. 따라서 바이트 수가 같은 거래도 차지하는 무게는 다를 수 있습니다. 처리 용량은 사람들이 사용하는 거래 유형에도 영향을 받습니다. 해당 조건을 충족하는 거래에서는 서명 데이터를 바꿔 거래 식별자를 바꾸는 문제도 해결했습니다. 이는 Lightning Network의 기반인 결제 채널 구축을 쉽게 했습니다. SegWit은 Soft Fork로 설계되어 새 규칙의 유효한 블록도 기존 규칙에 들어맞지만, 오래된 노드는 새 제약을 모두 검사하지 않습니다. Bitcoin Core 0.13.1에는 활성화 장치가 포함됐습니다. 프로그램 출시 자체가 SegWit을 켠 것은 아닙니다. [2] [3]

2017년 5월 23일 Digital Currency Group은 기업과 채굴자 간 New York Agreement를 발표했습니다. SegWit 지지와 6개월 이내 2 MB Hard Fork 약속을 묶은 합의였습니다. 두 번째 단계는 SegWit2x로 알려졌고 btc1 프로젝트가 구현했습니다. 일부 참여자에게는 양쪽이 원하는 것의 일부를 얻는 수용 가능한 절충안이었습니다. 다른 참여자들은 두 번째 변경과 추진 방식 모두에 반대했습니다. 기업의 지지가 모든 고객의 동의를 뜻하지는 않습니다. Bitcoin Core는 이후 btc1이 Bitcoin Core의 필수 업데이트가 아니며 SegWit 지지가 SegWit2x 지지와 같지 않다고 밝혔습니다. 당시 보도를 읽을 때도 한 합의에 담긴 두 변경은 별개의 규칙 변경이었다는 점을 기억해야 합니다. [6] [7] [11]

Shaolin Fry라는 가명의 작성자는 이용자가 활성화하는 Soft Fork, 즉 UASF의 한 형태로 BIP 148을 제안했습니다. Median Time Past 기준 2017년 8월 1일부터, 아직 SegWit 활성화가 확정되거나 시행되지 않았다면 이 규칙의 노드는 SegWit 신호가 없는 블록을 거부하게 됩니다. 채굴과 블록 수용이 엇갈리면 네트워크가 갈라질 위험이 있었습니다. 모든 이용자가 함께 누르는 무위험 스위치가 아니었습니다. Median Time Past는 최근 11개 블록의 타임스탬프를 정렬했을 때 가운데 오는 값입니다. 각 이용자 기기의 시계가 기준인 것은 아닙니다. 여기서 신호는 해당 도입에 대한 채굴자의 지지를 나타내는 블록 헤더의 표시이며, 표시만으로 새 규칙이 시행되지는 않습니다. James Hilliard는 BIP 91에서 더 낮은 문턱인 336개 중 269개 블록, 약 80%로 채굴자를 조율하는 방법을 설명했습니다. 시행 후 참여자는 기존 SegWit 배포에 대한 신호가 없는 블록을 거부합니다. 7월의 조율은 8월 시한을 둘러싼 충돌 위험을 줄였지만, SegWit 자체가 7월에 확정되거나 활성화됐다는 뜻은 아닙니다. SegWit은 여전히 고유한 BIP 9 절차를 거쳤습니다. [4] [5] [9] [19]

Bitcoin Cash는 2017년 8월 1일 분리됐습니다. Bitcoin ABC 소프트웨어는 이 가지에서 더 큰 블록을 지원했고 당시 기본 한도는 8 MB였습니다. 분리 이후 두 네트워크는 규칙도 코인도 달랐습니다. 이전 기록을 공유한다고 해서 이후 결제를 BTC와 BCH 사이에서 자유롭게 옮길 수 있는 것은 아닙니다. Bitcoin Cash는 SegWit2x가 아니며 Bitcoin ABC도 btc1이 아닙니다. 이름을 혼동하면 8월의 분리와 나중에 중단된 다른 계획을 섞게 됩니다. 다른 체인에서 거래가 반복되는 일을 막는 replay protection도 달랐습니다. 이용자에게는 한 체인에서의 작업이 다른 체인의 자금까지 실수로 지출하지 않아야 한다는 실제 문제가 있었습니다. 공통 키를 새 코인을 준다는 임의의 도구에 입력하는 것도 위험했습니다. [8] [15] [11]

SegWit은 2017년 8월 9일 블록 479 808부터 LOCKED_IN 상태에 들어갔습니다. 결정 기간이 끝났지만 새 규칙을 적용하기 전에 한 기간을 더 기다려야 했습니다. 활성화는 8월 24일 블록 481 824에서 이뤄졌습니다. 두 높이 사이에는 2 016개 블록이 있습니다. 7월 BIP 91 조율, 8월 확정, 실제 활성화는 다른 사건입니다. SegWit2x의 두 번째 단계는 높이 494 784에 예정되어 있었습니다. 11월 8일 Mike Belshe를 비롯한 추진자들은 원활한 전환에 필요한 합의를 확보하지 못했다며 중단을 발표했습니다. 이미 활성화된 SegWit이 사라지거나 Bitcoin Cash가 없어진 것은 아닙니다. 기업과 채굴자의 지지를 비트코인의 해당 한도 변경으로 이어가려던 특정 시도가 끝난 것입니다. [9] [10] [12] [14] [16] [17]

이 논쟁은 비트코인을 바꿀 수는 있어도 코드 작성, 기업 서명 수집, 규칙 수용 확보는 다른 일임을 보여줬습니다. 개발자에게 영향력이 없다거나 채굴자가 중요하지 않다거나 미래의 모든 결정도 같은 결말이라는 증거는 아닙니다. 용량, 부담 없는 검증, 참여자 합의는 업데이트 이름만 바꿔 해결할 수 없습니다. 새 제안을 읽을 때는 무엇을 바꾸는지, 어떤 노드가 이후 동의하지 않게 되는지, 어떻게 활성화할지 먼저 살펴보세요. 이어 제안 문서, 공개 소프트웨어, 실제 적용 규칙을 구분하세요. 당시 BIP와 코드는 작동 방식을, 각 진영의 성명은 입장을 보여줍니다. 한 참여자의 성명 하나가 전체 역사를 중립적으로 설명하지는 않습니다. [1] [6] [11] [12]

더 정확히 이해하려면 이 항목과 함께 다음도 읽어 보세요 SegWit, Soft Fork, Hard Fork, Full Node, Bitcoin, 합의 규칙. 다음 항목에서도 이 글을 참조합니다 Soft Fork, Hard Fork, Block Weight, Jeff Garzik.

DOC · 001BIP 101 — Increase maximum block size문서 DOC · 002BIP 141 — Segregated Witness문서 DOC · 003Bitcoin Core 0.13.1 — Segregated witness release문서 DOC · 004BIP 148 — Mandatory activation of SegWit문서 DOC · 005BIP 91 — Reduced threshold SegWit activation문서 DOC · 006Digital Currency Group — Bitcoin Scaling Agreement at Consensus 2017문서 DOC · 007btc1 — SegWit2x implementation repository문서 DOC · 008Bitcoin ABC — 0.14.6 release문서 DOC · 009BIP 9 — Version bits with timeout and delay1차 출처 DOC · 010BIP 9 — Deployment assignments1차 출처 DOC · 011Bitcoin Core — Correcting misinformation on Segwit2x and btc1, 18 August 20171차 출처 DOC · 012bitFlyer — Policy and stance regarding SegWit2x postponement, 9 November 20171차 출처 DOC · 013Mike Hearn — Why is Bitcoin forking? Author essay reprinted by Ars Technica, 18 August 20151차 출처 DOC · 014Mike Belshe et al. — Segwit2x suspension, 8 November 2017; message reproduced by BlockTribune1차 출처 DOC · 015Bitcoin ABC v0.14.6 — Consensus limits1차 출처 DOC · 016Bitcoin block 479808 — Header and timestamp via mempool.space1차 출처 DOC · 017Bitcoin block 481824 — Header and timestamp via mempool.space1차 출처 DOC · 018BIP 1 — Purpose and Guidelines1차 출처 DOC · 019BIP 113 — Median time-past1차 출처
개정일: 1차 출처 우선 · 투자 조언이 아닙니다