그래서 앞으로 비트코인 블록 사이즈는 어떻게 되는 겁니까? - SegWit, SegWit2x, Bitcoin Unlimited에 대하여

in #kr7 years ago (edited)

DQmSQG9NnzGDDWD28jH8NBQMh9n4c2LnxBJAxqXv8zYHr4a_1680x8400.png

최근 한국 비트코인 커뮤니티는 중국의 해외송금규제 루머와 폭락...이 주요 의제였습니다만, 외국 비트코인 커뮤니티는 스케일링 논쟁Scaling Debate에 대한 이야기가 많이 나오고 있습니다.

지난주 말부터 코인댄스 기준 SegWit2x에 동참하겠다는 해시파워가 85%를 넘어서면서 벌어지는 일입니다.

암호화폐 초보로, 이 주제가 매우 중요하다고 생각되는데 정작 국내에서는 일목요연하게 정리된 자료가 없는 것 같아서 부끄러움을 무릅쓰고 지금까지 공부한 내용을 간략하게 정리해 보려고 합니다.

세그윗SegWit이란

세그윗은 Segregated Witnesses의 준말로, '일반적으로' 기존 블록의 헤더header에 담겨있는 전자서명 정보를 별도로 저장하여 인아웃풋의 인증기능을 대신하는 역할을 하는 것으로 알려져 있습니다.
(여기서 '일반적으로'라 언급한 것은 크립토컴페어의 설명에서는 이 인식이 엄밀하지 않다고 설명하고 있기 때문입니다. 이에 대해서는 아래에서 따로 다루고자 합니다.)

세그윗의 핵심은 현재 블록 사이즈를 줄여 한계에 다다른 현재 비트코인 블록체인을 개선하겠다는 것이며, 덧붙여 개인키의 해시값 변조를 통한 탈취가능성('거래가변성Transaction Malleability')를 해결하는 등의 부수적인 효과를 함께 얻을 수 있다는 장점이 있습니다.

자세한 내용은 @morning 님의 스팀을 참고하시면 도움이 되실 것입니다.

세그윗에 대한 크립토컴페어의 설명

세그윗에 대해 '전자서명값을 갖는 별도의 존재'라 표현하는 것에 대해서, 크립토컴페어는 '맞지 않은 설명'이라고 해설하고 있습니다. 아래는 크립토컴페어의 설명 중 일부입니다.

(전문은 https://www.cryptocompare.com/coins/guides/what-is-segwit/ 에서 읽으실 수 있습니다.)

In transactions there are three key elements. The sender, receiver and the signatures (commonly referred to as witnesses) and these make up a big part of the transaction size. Contrary to popular belief, however, SegWit does not seperate this witness data into a “witness block”.
트랜잭션은 송신자, 수신자, (일반적으로 '증인'이라 일컫는) 서명의 세 가지 핵심 요소로 구성되며, 이 세 요소가 트랜잭션 용량의 큰 비중을 차지합니다. 그러나 대중의 믿음과는 달리 세그윗은 이 '서명 데이터Witness Data'를 끄집어 내어 별도의 '서명 블록Witness Block'을 만드는 것이 아닙니다.

Instead, Segwit updates the 1MB block size limit into a 4 million unit block weight limit, counting serialised witness data as one unit and core block data as four units. It essentially introduces a new transaction format.
대신, 세그윗은 직렬화된 '서명 데이터'를 한 단위one unit로, 그리고 코어 블록 데이터를 네 단위four units로 계산하여 1MB의 '블록 용량 한도Block Size Limit'를 4백만 개의 '블록 중량 한도Block Weight Limit'*으로 업데이트 합니다. 이는 기존과는 완전히 다른 트랜잭션 형식이라 할 수 있습니다.
(주 : '블록 중량'이란 세그윗 도입 후 기존 바이트 단위 대신 블록 크기를 표현하기 위해 새롭게 도입될 단위입니다. 자세한 설명은 https://www.reddit.com/r/btc/comments/5vxuti/what_is_block_weight_in_segwit/ 를 참고하세요.)

What this means is that the block size is actually increased. SegWit counts each byte in a witness as 0.25 bytes towards the maximum block size limit (1MB), meaning the maximum size of a block becomes just under 4MB. This doesn’t mean that the data gets smaller, it simply means that it is counted in a way that allows for the 1MB limit to be increased. This change, however, only affects witness data and each non-witness byte is still counted as 1 byte towards the maximum block size limit (1MB) or as 4 units towards a maximum block weight of 4M units.
이는 실질적으로 블록 크기 한도가 커지는 효과를 가져옵니다. 세그윗은 최대 블록 크기 한도인 1MB 내에서 서명에 쓰이는 각 바이트를 0.25바이트로 간주하는데, 이를 통해 블록 사이즈는 최대 4MB까지 커질 수 있습니다. 이를 두고 '세그윗을 하면 블록 사이즈가 작아진다'고 표현하는 경우가 많은데, 그게 아니라 1MB의 현행 한도가 늘어날 수 있다고 보는 게 맞습니다. 다만 세그윗은 서명 데이터에만 영향을 미치며, 각 비서명 바이트Non-witness Byte는 여전히 현행 한도(1MB) 체제 하에서 1바이트로 계산됩니다.

세그윗 도입 배경

세그윗 도입의 배경으로는 비트코인 블록체인의 성숙을 들 수 있습니다. 참여자가 많아지면서 덩달아 트랜잭션이 많아졌고, 이에 나카모토 컨센서스Nakamoto Consensus로 불리는 블록당 1MB라는 최초의 크기 제한으로는 이 트랜잭션을 담아 블록체인을 구성하기가 나날이 어려워졌기 때문입니다. 이 한계에 대한 해결방안을 두고 비트코인 블록체인 참여자간 한판의 갑론을박이 펼쳐지는데 이를 가리켜 '스케일링 논쟁Scaling Debate'라 합니다.

그동안 비트코인 블록체인을 개발해왔던 Bitcoin Core 진영에서는, 전격적이지 않은 변화를 통해 이 문제를 해결하고자 세그윗을 도입하자고 주장합니다. 처음에는 2017년 11월 15일까지 전체 해시파워의 95% 이상이 동의하면 소프트포크를 통해 세그윗을 활성화하자는 입장(BIP141)이었으나, Bitcoin Unlimited 진영과의 대립이 고조되면서는 2017년 8월 1일자로 세그윗에 동의하는 노드끼리 바로 세그윗을 전송하자는 급진적인 주장(BIP148, UASF)이 등장하기에 이릅니다.

참고로 BIP 148의 세그윗 활성화 조건은 아래와 같습니다.

  1. 8/1 이후 최초 블록부터
  2. 세그윗이 전체 네트워크에서 활성화가 되어있지 않다면
  3. 세그윗을 지지한다는 신호조차 없는 블록은 거부한다

이 포스트를 작성하는 2017/06/29 10:00 (UTC+9) 현재, BIP141을 수용가능하다는 의사를 밝힌 해시파워(24시간 내 생성 블록기준)는 전체의 43.8%입니다.

Bitcoin Core 개발자 다수는 BIP141에 대해서 대부분 긍정적으로 생각하나, BIP148에 대해서는 반대하거나 아니면 '컨센서스를 받고 있지 못하다'는 이유로 미적지근한 반응을 보이고 있습니다.

비트코인 언리미티드Bitcoin Unlimited란

Bitcoin Core 개발자들의 세그윗 도입에 반해 채굴자들을 중심으로 한 Bitcoin Unlimited 진영에서는 하드포크를 통해 블록 크기를 유동화하자는 이머전트 컨센서스Emergent Consensus에 기반한 주장을 하게 됩니다.

이들은 특히 Bitcoin Core 진영과 각을 세우며, 세그윗은 절대로 동의할 수 없다는 입장을 내비쳤었습니다. 이에 자극받은 BIP141 일부가 2017년 8월 1일자로 세그윗을 강행하겠다는 입장(UASF, User Activated Soft Fork)를 내세우기도 합니다.

세그윗으로도 충분히 현재의 크기 문제Scaling Problem을 해결할 수 있을 것 같은데, 우지한의 Bitmain을 필두로 한 Bitcoin Unlimited 진영이 굳이 하드포크와 같은 과격한 수단을 사용하겠다고 하는 것에 대해, 세간에서는 세그윗 도입시 (SHA-256 해시알고리즘의 보안취약성을 악용하여 채산성을 높이는) ASICBOOST가 무력화되기 때문이 아니냐는 의심을 하고 있습니다. 여담이지만, 일각에서는 거의 단정적으로 이 의심을 사실인 것처럼 말씀하시던데, 최근 세그윗 도입을 포함한 뉴욕합의New York Agreement에 Bitmain 등 구 Bitcoin Unlimited 진영이 (시한부로나마) 동의하고 있는 것을 보면 저 의심을 기정사실화 하기는 어렵지 않나 생각합니다.

이 포스트를 작성하는 2017/06/29 10:00 (UTC+9) 현재, Emergent Consensus를 수용가능하다는 의사를 밝힌 해시파워(24시간 내 생성 블록 기준)는 전체의 40.3%입니다.

세그윗2xSegWit2x란

2017년 5월 23일, 뉴욕 메리어트 호텔에서는 Consensus 2017 컨퍼런스가 열렸습니다. 채굴풀, 거래소, 지갑업체, 송금업체 등 비트코인 네트워크의 참여자 중 일부가 한자리에 모여 BIP 148에 대한 대비책을 고민했습니다.

이 결과로 나온 것이 바로 뉴욕 협약New York Agreement이며, 여기서 제안된 것이 세그윗2x입니다.

세그윗2x는 BIP141의 '세그윗 도입' 제안과 Emergent Consensus의 '블록 크기를 현재(1MB)보다 키우자는 제안' 모두를 수용한 안입니다. 명쾌하진 않지만 BIP 141과 BIP 102 (블록 크기를 2MB로 확장하자는 제안, 현재 Github에서는 지지를 받지 못하고 종결된 상태)를 모두 포함하는 방식으로 보는 것이 타당해 보입니다.

5/24 자로 일반에 공개된 뉴욕 협약의 내용에 따르면, 세그윗2x은 아래 두 문장으로 요약됩니다.

  • 80%가 Bit 4에 신호를 보내면 세그윗은 활성화된다.
  • 6개월 내에 블록 크기를 2MB로 증량하는 하드포크를 단행한다.

그런데 여기에서 문제가 생깁니다. BIP 141과 세그윗2x 모두 세그윗을 하겠다고는 하는데 그 활성화 조건이 다르기 때문입니다. 당연히 비트코인 커뮤니티에는 두 신호가 호환 가능한가에 대한 의문이 일기 시작합니다. 세그윗2x로 인한 세그윗 활성화를 BIP 141을 적용한 노드도 인정하는지, 또 그 반대의 경우는 어떻게 되는건지 궁금해하기 시작한 겁니다.

이 문제를 해결하기 위해 Bitcoin Devs mailing list의 제임스 힐리어드라는 개발자가 뉴욕협약 배포일을 하루 앞두고 엄청난 꼼수(또는 '똑똑한 메커니즘')을 하나 내놓습니다. 이것이 바로 BIP 91입니다. BIP 91에 대해서는 아래에서 별도로 설명하도록 하겠습니다.

세그윗2x에 대한 본격적인 시그널링은 2017년 7월 21일부터 시작될 것으로 예상됩니다. 아직까지는 세그윗2x 코드가 겨우 알파 단계에 머물러 있기 때문에, 7월 21일의 시그널링 개시 시점까지는 세그윗2x를 지지하는 채굴자들이 (Bit 4에 대한 신호 전송 대신) 코인베이스 스트링에 'NYA' 스트링을 포함하여 전송하기로 하였습니다.

예정된 시그널링 시점까지 세그윗 도입이 80%의 지지를 받는다면, BIP 91이 활성화되며 세그윗을 위한 소프트포크가 진행될 것이며 이후 336개의 블록이 생성된 이후 세그윗을 포함한 노드가 전송될 것입니다. 이후 세그윗에 대한 지지가 2016 블록이 생성될 동안 95% 이상 유지된다면, 세그윗 도입은 완료됩니다. 세그윗이 완료되는 시점은 8월 23일 경이 될 것으로 예상됩니다.

BIP 91에 대하여

BIP 91은 80%의 지지를 95%의 지지로 변경하여 세그윗2x의 제안에 의한 세그윗을 강제하는 방법입니다. 그 내용은 아래와 같습니다.

  1. Bit 4로 가는 신호(세그윗2x 지지 신호)는 인정된다.
  2. 만약 336개의 블록 중 269개 블록(약 80.06%)이 Bit 1과 Bit 4 어느 쪽에 지지 신호를 보낸다면, BIP 91이 작동을 시작한다.
  3. 이후 생성되는 336번째 블록에서 BIP 91에 의한 소프트포크가 활성화된다.
  4. BIP 91이 활성화되면, 세그윗 지지 신호(Bit 1 또는 Bit 4)를 보내지 않는 블록은 거부한다.

이를 바꾸어 말하면, 세그윗2x의 활성화 조건인 '80%의 지지'를 계산함에 있어 우리에 대한 지지(Bit 4로 신호 송신한 해시파워) 외에 BIP 141에 대한 지지(Bit 1로 신호 송신한 해시파워)를 모두 포함하지만, 일단 활성화가 되면 다른 신호를 보낸 블록들과는 결별하겠다는 겁니다. 일단 세그윗을 지지하지 않는 블록을 체인으로 구성하지 않으면, 세그윗 지지자만 남으니 당연히 세그윗 도입에 대한 지지가 100%가 되겠지요.

BIP 148이 그랬듯, 자신들을 지지하지 않는 블록을 모두 거부하는 방식으로 세그윗 도입에 대한 80%의 지지를 100%의 지지로 바꾸겠다는 계산입니다. 20% 너희는 우리를 지지하든가 아니면 여기서 나가든가 둘 중 하나를 선택하라는 아주 강력한 메시지인 셈이죠. 다만 BIP 91이 BIP 148과 다른 점이 있다면, 해시 파워의 80%가 지지할때까지 기다려 준다는 점 정도입니다.

제임스 힐리어드가 BIP 91을 제시할 당시에는, 세그윗2x 진영에서도 이를 도입할 것인지에 대한 논란이 있었으나 결국 지난 15일에 세그윗2x repo에 통합되며 세그윗2x 진영으로부터 공식적으로 지지를 받게 되었습니다.

BIP 91은 BIP 9가 정의한 BIP 141의 활성화 조건(해시파워의 95%가 Bit 1으로 지지 신호 전송)이 너무 높으므로 이를 우회하는 방법을 제안한 것입니다.

세그윗2x이 BIP 141을 지지한다고 해석할 수 있는 것은, 세그윗2x가 BIP 91을 따르고 있기 때문입니다. BIP 91은 BIP 141의 활성화 조건(BIP 9의 조건)인 95%가 너무 높다고 판단하고 BIP 141이 총 해시파워 중 80% 이상의 지지를 받을 경우, 특정 로직을 통해 95%의 지지를 받은 것과 다름없다는 신박한 절차를 구성해놓았습니다.
(BIP 9는 비트코인 개발시 하위호환성 확보를 위해 반드시 해시파워 중 몇 % 이상의 지지를 얻어야 한다는 일종의 정족의결수를 정의한 규약입니다.)

따라서 세그윗2x에 대한 지지가 80%가 넘으면 BIP 91이 활성화되어 BIP 141의 활성화 조건인 95%를 만족하는 것이 되고, 그렇기 때문에 coin.dance 기준 세그윗2x에 대한 해시파워의 지지가 80%를 넘자 해외 커뮤니티에서 '세그웨이트SegWait는 끝났다!'라고 환호하고 있는 것입니다.

BIP 102에 대하여

동시에 상술하였든 세그윗2x는 BIP 102를 따르고 있습니다. 블록 크기 제한을 2MB로 증량하는 일정에 대해, 원래 BIP 102는 BIP 148 처럼 특정일자를 미리 정하지 않고, 블록타임에 의한 기간을 정해놓았습니다. 세그윗2x에서 수정되어 도입된 BIP 102 의 타임스탬프는 뉴욕협약에 따른 세그윗 활성화일자(2017년 8월 23일 예상) 로부터 144*90번째 생성되는 블록부터 하드포크가 진행되는 것으로 설정되어 있는데, 이를 통해 2MB 증량을 위한 하드포크는 1일(24시간, 1440분, 현재 비트코인의 블록은 10분에 1개씩 생성되므로 144개 블록은 24시간만에 생성되겠지요.)에 90을 곱하여 대략 3개월 후부터 진행될 것임을 알 수 있습니다.

이 포스트를 작성하는 2017/06/29 10:00 (UTC+9) 현재, SegWit2x를 수용가능하다는 의사를 밝힌 해시파워(24시간 내 생성 블록 기준)는 전체의 87.5%입니다.

정리

결론적으로는 현재로서는 다른 두 안에 비해 SegWit2x에 대한 지지도가 압도적으로 높은 상태이며, 그간 첨예한 대립의 원인이 되어 비트코인의 블록체인이 분리(세그윗을 포함한 비트코인 코어, 블록 크기 제한을 없앤 비트코인 언리미티드로)되는 일은 - 아직 장담할 수 없지만 - 다소 진정되는 추세가 아닐까 싶습니다.

한편으로는 UASF라는 이름 때문인지 아니면 비트코인 블록체인에 지속적으로 기여해왔던 Bitcoin Core 개발자의 일부가 지지하고 있다는 이유 때문인지 가끔 BIP 148이 절대선이고, 채굴자들이 주장하는 Bitcoin Unlimited는 탐욕의 결정체이자 절대악인 것마냥 표현되는 경우가 많던데... 사실 '우린 너랑 안 놀아'라고 먼저 선언한건 BIP 148 쪽이 아닌가 싶습니다. BTU를 비롯해, 이를 계승하다시피한 SegWit2x 쪽 역시 무작정 '하드포크하겠다'고 말하고 있는 것이 아니라 '만약에 BIP 148이 강행되면'이란 단서를 전제로 삼고 있기 때문입니다.

이제 공은 오히려 Bitcoin Core 개발진들에게 넘어간게 아닌가 싶습니다. 부디 암호화폐 시장의 전체적인 안정성과 신뢰성을 위하여 Bitcoin Core 개발진이 현명한 판단을 하길 기원합니다.

더불어 한국의 암호화폐 커뮤니티 역시 경마 보도 식으로 시세 변동에만 집중할 것이 아니라 암호화폐의 근간에 대한 양질의 고민들이 지금보다 더 활성화될 수 있기를, 이 바닥에 갓 입성한 초보로서 간절히 바라봅니다.

추가

몇가지를 빼놓고 글을 서둘러 마쳐서, 조금 더 보완하고자 합니다.

우선 세그윗2x는 아직 코드조차 나오지 않은 상태입니다. 위에서 거듭 밝혔듯, 세그윗2x 진영은 주로 채굴자들로 구성되어 있고 Core 진영의 개발자들은 세그윗2x를 전면적으로 부정하고 있습니다.

이런 상황에서 채굴자들이 '블록 크기 증량'이라는 소기의 목적을 달성하기 위해, 상대적으로 고른 지지를 받고 있는 세그윗 도입안과 결부시키는 매우 정치적인 결정을 내놓다보니 완전한 준비를 하고 있지 못한 셈입니다.

따라서 세그윗2x에 지지를 보내는 해시파워가 87%에 육박한다고 하더라도, 비트코인 블록체인에 대한 리스크가 완전히 사라졌다고 볼 수는 없습니다. 7/14에 공개되기로 예정된 세그윗2x Final 코드가 개판일 수도 있고, 세그윗2x 도입이 가시화됨에 따라 BIP 148 진영에서 지금보다 더 강경한 안을 내놓을 수도 있기 때문입니다.

따라서 돌아가는 추이를 보시고, 체인 분리의 가능성이 높다고 판단되신다면 7월 둘째주부터 8월 1일 전까지 보유하고 계신 비트코인을 개인지갑 등으로 옮기셔서 최악의 상황에 대비하시기 바랍니다. 아무리 코인이 '하이리스크 하이리턴'의 투자자산이라도, 떨어지는 칼날을 눈에 보면 피해야 하지 않겠습니까.

  • 수정 : 세그윗2x에 대한 내용이 대폭 수정되었습니다. (수정한 부분은 지우지 않고 취소선 처리하였습니다. 읽어보시면 내용이 상당히 바뀌었음을 아실 수 있습니다.) 말씀 주신 @theunseenworld 님께 감사드립니다.
Sort:  

어려웠던 내용 이해하기 쉽게
잘 풀어서 설명해주셔서 정말 감사합니다

"세그윗2x에 대한 본격적인 시그널링은 2017년 7월 21일부터 시작될 것으로 예상됩니다. 이때까지 80%의 지지를 받는다면"... 이게 80%가 아닌 "대략의 87%"라고 알고 있는데 말이죠. 지미송의 글에서도 about 87% of the last 24 hours라고 하고 있습니다.

저렇게 적은건 지미 송 글을 보고 적은건 아니고, 다른 데서 작성된 문건을 보고 저렇게 적었습니다. 크로스체킹을 해야 하는데 그걸 못했더니 역시나 사단이 나네요 ㅠㅠ 확인하고 수정하겠습니다. 조언 감사합니다!

아... 다른 문서에는 또 다른 수치로 이야기 하고 있는 모양이군요... 사실상 이게 수치적으로 정의 내리기 힘든 모양입니다... 저도 setwit관련 글을 쓰고 있는데 philobiblic님 글 참조하고 크로스체킹으로 이용하고 있습니다. 감사합니다. ;)

Jimmy Song 및 Wintercooled의 글을 다시 읽어보니, 정확히는 '시그널링 이후 336블록 중 269 블록의 지지를 받으면 BIP 91이 개시되고, 이후 336블록이 생성되면 BIP 91에 의한 소프트포크가 단행된다. BIP 91에 의한 소프트포크 이후 세그윗을 지지하지 않는 블록은 모두 거절된다'입니다. 제가 이해한게 맞다면, 80%(269/336=80.06%)가 맞는 것 같습니다. ㅎㅎ

덕분에 세그윗2x에 대한 내용을 많이 바로잡을 수 있었습니다. 감사합니다.

  1. Segwit2x software has to be released and in the hands of miners
  2. At least 269 of 336 blocks must signal bit 4 (about 80%). This would achieve BIP91 lock-in.
  3. Another 336 blocks must pass. This achieves BIP91 activation. After this point, every block must signal bit 1 (Segwit/BIP141).

와..... philobiblic님 내공이 보통이 아닌데요 ;) 저도 덕분에 클리어하게 이해하고 갑니다. 감사합니다...

내공은요... 겨우겨우 찾아서 이해하는 수준입니다 ㅠㅠ

좋은 글 감사합니다.

아닙니다. 더 좋은 글로 찾아뵐 수 있도록 노력하겠습니다.

아무나 이겨서 제발 좀 평화를 되찾고 싶네요 !!!

둘 다 비트코인 블록체인이 내재한 문제를 해결하고자 한다는 점에서 이기는 편이 우리 편입니다! 으아아! (물론 피폭을 최대화할 수 있는 방향이 이기길 바랍니다 ㅠㅠ)

내용 정리 감사합니다. 누구나 기다리는 조정은 오지 않는다 라는 격언이 이번에도 맞으면 좋겠습니다.

'비트코인 블록체인이 갈릴거라 폭락한다!'는 주장과 '세그윗이 잘 돼서 폭등할거야!'는 주장 둘 다 보면서, 스케일링 디베이트에 대한 정리가 아무것도 되어 있지 않다는 것이 좀 안타까웠습니다. 저도 무리없이 스케일링 디베이트가 마무리되길 기원합니다.

긴 내용을 잘 요약해주셨네요. 잘 보고 갑니다.

읽으면 읽을 수록 비어있는 부분이 더 많이 보입니다. 응원 감사합니다. 보완하는 포스트도 연달아 작성해보겠습니다. ㅠㅠ

Loading...

잘 읽었습니다. 그런데 BIP가 뭔가요?

Bitcoin Improvement Proposal의 약자입니다.
https://en.bitcoin.it/wiki/Bitcoin_Improvement_Proposals

최초의 BIP인 BIP 1은 아미르 타키에 의해 2011년 8월에 작성되었으며, 그 내용이 바로 BIP에 대한 정의라고 하네요.

정말많은도움이되네요 감사합니다

이해하기 쉽네요 잘 봤습니다.

영어자료밖에 못찾아서 고생중이었는데
정리글 찾아서 기쁘네요

Loading...

Coin Marketplace

STEEM 0.23
TRX 0.26
JST 0.039
BTC 96463.61
ETH 3397.54
USDT 1.00
SBD 3.22