비트코인의 오랜기간 동안에 걸쳐 진행되었던 논쟁인 비트코인 스케일링(확장성) 이슈가 일단락 된지 시간이 흘렀습니다. 이번 글에선 과거 빅블록에 관해 작성했던 글들을 재구성해 비트코인 스케일링 이슈에 대해 조금 더 알기 쉽게 정리해보려 합니다. 초심자분들도 알기 쉽게 최대한 해설 위주로 작성해보도록 하겠습니다.
빅블록(BigBlock)이 뭔가요?
빅블록의 의미는 간단합니다. 현재 비트코인에서 블록크기는 SegWit(분리된 증인) 이후 1~4MB 수준의 블록크기를 갖게되었습니다. 이러한 제한된 블록크기를 더 크게 늘리는 것을 우리는 빅블록이라고 부르게 됩니다.
이미 오래전부터 1MB에 가까운, 꽉 채운 블록이 생성되는 중
SegWit 활성화 이후 과거 비트코인의 1MB의 블록크기는 크게 의미가 없어졌으며 SegWit 트랜잭션의 비율에 따라 1~4MB내의 블록크기를 형성하고 있습니다. 이러한 블록크기를 2배로 늘리는 계획을 '2X 하드포크'라고 합니다. 다만 커뮤니티의 압도적인 반대로 이 계획은 활성화되지 못한채 잠정중단을 선언하게 됩니다. 2X 하드포크를 진행하게 되면 2~8MB 수준의 빅블록을 형성하게 됩니다. 블록크기가 늘어나면서 비트코인에 있어 몇가지 장점이 생기게 됩니다. 블록크기가 늘게되면서 더 많은 거래들(트랜잭션)을 담을 수 있게 됩니다. 더 많은 거래를 처리할 수 있게 되면서 전송 수수료가 현저히 낮아질 수 있는 기대를 해볼 수 있습니다. 그렇다면 왜? 현재 비트코인은 스케일링 문제에 시달리면서도 이를 개선할 수 있는 빅블록은 채택되지 않았을까요? 더 많은 거래를 처리할 수 있고 수수료도 저렴해지고 장점 투성인 빅블록 플랜이 커뮤니티의 압도적인 반대에 부딪힌 이유는 무엇일까요?
빅블록의 문제점
현재 비트코인 스케일링 문제를 단번에 해결할 수 있는 플랜임에도 불구하고 빅블록에는 큰 문제점(단점)이 존재합니다. 블록크기를 늘리는 것은 그렇게 어려운 개발작업이 아닙니다. 누구든 코드 몇줄 수정만하면 되는 간단한 개발작업 입니다. 하지만 이를 적용하기 위해선 '하드포크'라는 기존 블록체인의 규칙을 변경하는 작업을 진행해야 됩니다. 이러한 블록체인 규칙을 변경하는데에는 구버전과의 호환이 불가하기 때문에 신버전의 클라이언트로 사용자 전원 업데이트해야 됩니다. 이는 대규모 블록체인 생태계에선 큰 혼란을 야기할 수 있습니다. 비트코인의 경우엔 거대한 탈중앙화를 목표로 하는 네트워크이기 때문에 하드포크를 진행하기 어렵습니다. 하드포크는 네트워크가 분리되는 위험성을 항상 갖고 있으며, 이러한 네트워크 분리를 막기 위해선 네트워크 사용자간의 압도적인(100%에 가까운) 컨센서스(합의)가 필요합니다.
위의 문제점은 빅블록이 갖고 있는 근본적인 문제점에 비하면 큰 문제는 아닙니다. 빅블록은 근본적인, 블록체인 시스템을 위협하는 문제점을 갖고 있습니다.
노드의 중앙집중화
노드는 블록체인 네트워크를 구성하는 가장 중요한 매개체입니다. 더 쉽게 말하자면 블록체인 네트워크에 연결된 컴퓨터를 노드라고 말합니다. 노드는 블록체인에 없어서는 안될 정말 중요한 핵심 요소입니다. 노드에서도 완전노드(풀노드)와 SPV(단순지불검증) 노드 등 여러 노드가 존재합니다만, 이글에서는 완전노드(풀노드)를 기준으로 다뤄보겠습니다. 완전노드는 블록에 포함된 트랜잭션들과 블록전체의 정합성을 검증합니다. 이 검증을 통과한 블록만 정당한 블록으로 인정하고, 로컬 데이터베이스를 업데이트하고 다른 노드로 전파를 진행하게 됩니다. 노드는 블록체인 내의 보안을 책임지는 존재라고도 볼 수 있습니다. 우리가 블록체인을 신뢰할 수 있는 이유는 강력한 보안 체계에서 나옵니다. 이러한 블록체인 네트워크의 보안을 책임지는 노드 수가 많을 수록 블록체인의 보안성은 더욱 강력해집니다. 쉽게 말하자면 '노드수=보안력'의 의미와도 같습니다.
비트코인은 백서와 더불어 첫 등장부터 알 수 있다시피 탈중앙화를 목표로 하는 암호화폐입니다. 그 배경에는 '누구나' 완전노드(풀노드)를 실행하여 블록체인 네트워크에 기여할 수 있게하는 것이 탈중앙의 가치를 지키며 실현할 수 있다는 철학 아래에 이루어지고 있습니다. 누구나 완전노드(풀노드)를 실행하기 어려운 블록체인은 이미 탈중앙의 가치가 훼손되었다고 봐야될지도 모르겠습니다. 빅블록의 채택은 노드의 중앙집중화를 불러오는, 탈중앙의 가치를 훼손하는 주요인으로 볼 수 있습니다. 그 이유에 대해선 아래 내용을 참조해주세요.
빅블록을 채택하여 블록크기가 늘어나면서 장기적인 측면에서 완전노드(풀노드)에 필요한 용량도 배가 됩니다. 블록체인 용량이 커지면 커질수록 저렴한 인프라로 구성된(예를들면 라즈베리파이와 같은 소형 PC) 노드들에게 유지하기 어렵게되는 영향을 미치게 됩니다. 블록체인 완전노드(풀노드) 용량증가로 네트워크 대역폭과 디스크 공간 측면에 대한 요구사항이 늘어나게 되면 앞으로 향상될 스토리지와 네트워크 기술을 고려한다해도, 최상의 리소스를 유지할 수 있는 노드만 블록체인 네트워크를 유지하게 되는 노드의 중앙집중화로 이어질 가능성이 있는 매우 민감한 문제입니다. 정치와 이념 문제와는 별개로 이 문제는 네트워크 보안에도 큰 영향을 미치게 됩니다. 즉, 탈중앙화가 훼손이 될 수 있습니다. 이미 비트코인의 블록체인 크기는 150GB를 넘어선지 오래입니다.
Source: Bitfury 블록크기 화이트페이퍼 1.1.1 PDF
2X 하드포크가 진행되었다는 가정하에 위의 블록크기 화이트페이퍼에 나온 자료를 참조해보겠습니다. 2X 하드포크의 블록크기는 2~8MB의 크기를 갖게 됩니다. SegWit 트랜잭션이 100% 활성화와 매블록이 8MB 블록으로 꽉채워 채굴된다는 가정하에 위의 자료를 대입해보겠습니다. 매일 블록체인 용량 증가가 1GB수준으로 증가되며 1년으로 계산하면 411GB정도가 늘어나게 됩니다. 일일 트래픽 예상량이 99GB에 컴퓨터의 RAM 권장량도 32GB 입니다. 이러한 수준으로 6개월간 진행된다면 기존 노드의 95%가 전멸할 것이라고 합니다. 네트워크 비용, 스토리지 비용 컴퓨터 자원 비용 등 이렇게 어마어마한 노드 운용비용이 들어간다면 누가 완전노드(풀노드)를 실행할까요? 최상위급 노드들만 살아남게되면서 노드의 중앙집중화가 구성되면서 비트코인 블록체인 네트워크 보안이 엄청난 위협에 빠지게 됩니다. 이것이 비트코인 등장부터 지금까지 이어져온 탈중앙의 기본 가치일까요?
마이너의 중앙집중화
Source: https://coin.dance/blocks/thisweek
전체 네트워크의 약 90% 해시율을 보이고 있는 중국 마이닝 풀
블록크기가 커지면서 네트워크 전파 속도가 이전보다 더 지연됩니다. 더 많은 네트워크 요금이 부과되며, 블록크기가 커지면서 네트워크의 낭비가 커지고 이체확인도 느려지고 고아블록이 늘어나게 됩니다. 비트코인은 마이너들의 네트워크가 거의 대부분 사실상 어마어마한 비율(대략 90%)로 중국에 있습니다. 중국에는 만리방화벽(Great Firewall)이라는 중국내의 황금방패(Golden Shield) 시스템을 이용해 중국망을 거치는 네트워크를 검열합니다. 이는 중국 내에서 네트워크 속도는 빠르지만 외부 네트워크 즉, 중국을 제외한 세계 네트워크와 연결될때 수 초가 지연되게 됩니다. 중국의 마이너들이 블록을 생성하고 전파하게되면 중국 마이너끼리는 빠르게 전파되는데 외부 마이너들은 딜레이된 속도로 전파받기 때문에 블록 생성에 관해 상대적으로 중국 마이너들에게 유리하게 됩니다. 블록크기가 커질 수록 이 효과는 배가 됩니다.
이러한 상황 속에서 네트워크 속도와 유지해야될 노드 비용과 채굴 비용이 증가하게 되면서 직접 블록을 생성하는 마이너가 줄어들게 됩니다. 실제로 현상황을 짚어보자면 직접 블록을 생성하는 마이닝풀은 계속 줄어드는 추세입니다. 앞으로 기존의 마이닝 풀들만 살아남게 된다는 가정을 하게되면... 즉, 중앙집중화로 중국쪽으로 결집하게 됩니다. 이미 그것은 진행되었습니다.
중국 마이너들의 중앙집중화가 진행되면서 그들 입맛에 맞는 평균 블록크기가 정해집니다. 현재는 비트코인 네트워크가 포화상태이기 때문에 1MB를 꽉꽉 채워 전송되고 있지만 블록크기가 늘어나면서 중국 마이너들의 입맛에 맞는 수수료 정책을 진행할 수 있습니다. 실제로 우지한(BitMain CEO)이 트위터에서 언급했었던 현재 수수료(대략 1~3BTC)에도 불만을 표했던 적이 있습니다. 최근 비트코인은 반감기(2016년 7월)를 가지면서 블록보상이 12.5BTC로 줄었습니다. 이러한 블록보상 문제로 블록크기가 커지면서 빠른 블록 생성과 수수료 수익을 위해 블록을 꽉꽉 채우지 않고 중국 마이너들끼리 평균 블록크기를 담합할 수 있습니다. 이와 같은 문제는 비트코인 네트워크에 정말 위협이 될 수 있습니다.
최근 비트코인 캐시에서 있었던 스팸어택과 더불어 블록크기 제한 사례
스팸어택에 더욱 취약한 빅블록
스팸어택이란 실제 거래 목적이 아닌 네트워크 과부화를 일으키기 위한 빈 트랜잭션들을 무한히 전송하는 공격을 의미합니다. 이와 더 나아가 한지갑에서 여러개의 인풋 주소로 트랜잭션을 발행하게 되면 여러개의 인풋 주소의 전자서명을 모두 넣어야 되게 됩니다. 이를 이용하게 되면 더 적은수의 트랜잭션으로 블록 용량을 채울 수 있게 됩니다. 저는 이것을 인풋 때려밖기 스팸어택이라고 부르고 있습니다.
위의 이미지는 최근 비트코인 캐시에서 있었던 인풋 때려밖기 스팸어택 당시 이미지입니다. 비트코인에 비해 트랜잭션 수가 적은 이유도 이러한 인풋 때려밖기 스팸어택 때문입니다. 더욱 효율적인 스팸어택을 제공하게 됩니다. 비트코인 역시 이러한 공격에 시달리고 있지만 SegWit 도입으로 인해 슈노 시그니처(Schnorr signature) 기술 구현이 가능해졌습니다. 슈노 시그니처에 대한 자세한 내용은 morning님의 세그윗 이후의 비트코인 - 슈노 시그니처(Schnorr signature) 글을 참조해주세요.
Source: https://goo.gl/asT6ho
2017년 12월 말 블록보상보다 커진 수수료
과거, 재작년까지만해도 채굴자들이 스팸 트랜잭션을 걸러주었지만 이미 오래전부터 채굴자들은 스팸 트랜잭션을 포함하고 있습니다. 이 스팸어택을 누가하는지는 아무도 알 수 없지만 마이너들이 관련되있다고 의심스러운게 한 두가지가 아닙니다. 이런것이 채굴자들이 잘못한것도 아니라고 생각합니다. 그들이 생각하는 경제적인 활동의 일부일 뿐 그것이 잘못됬다고 할 사람은 아무도 없습니다. 그렇다면 이것을 막기 위해선 시스템적으로 개선하는 방법밖에는 없습니다. 빅블록을 채택하게 되면서 오히려 스팸어택에 취약해지는 것을 확인하실 수 있습니다.
온-체인 스케일링(확장성)의 한계
위의 내용들을 돌아보면, 비트코인 블록체인의 탈중앙화의 가치를 유지하면서 스케일링 문제를 해결하는 것은 불가능한 일일까요? 비트코인이 성장하기 위해선 스케일링이라는 벽을 뛰어넘어야 합니다. 하지만 스케일링 솔루션중 빅블록이라는 계획은 마치 질소로 빵빵하게 과대포장된 과자와 같이 느껴집니다. 블록체인의 근본적인 영역을 훼손하면서 스케일링 문제를 해결해야 되는 걸까요? 답이 없어 보이는 상황에도 우리 인간은 언제나 새로운 해결책으로 문제를 해결해 나갔습니다.
"SegWit 1MB 블록도 위험하다"
- 비트코인 Core 개발자 Luke Dashjr
스케일링 문제는 장기적인 측면에서 바라봐야됩니다. 당장 1~2년을 바라보고 결정한다는것은 어리석은 일입니다. 비트코인 커뮤니티는 장기적으로 네트워크를 유지하는것을 바라보고 있습니다. 온-체인 스케일링 솔루션인 빅블록은 비트코인에 있어 최후의 보루, 최후의 수단입니다.
온-체인에서 스케일링 문제를 해결하기에는 어려워졌습니다. 꼭 온-체인에서 해결할 필요는 없습니다. 그 한계점은 확실하게 드러났습니다. 이제는 시점을 바꿀때입니다. 이미 비트코인에 참여하고 있는 여러 개발자들은 스케일링에 있어 온-체인이 아닌 다른 솔루션들을 개발해내고 있습니다. 주로 거론되는 것이 오프-체인 솔루션인 라이트닝사의 사이드 채널 라이트닝 네트워크, 블록스트림의 사이드 체인 등 비트코인의 스케일링을 개선하는데 온체인이 아닌 여러 솔루션들이 개발되고 있습니다. 라이트닝 네트워크는 이미 메인넷에서 구현되고 있습니다. 이러한 기술들이 구현되면서 차차 스케일링 문제들이 해결될 것으로 기대됩니다.
비트코인을 포함한 여러 암호화폐들은 아직도 성장통을 갖고 해결하려 하고 있습니다. 우리는 블록체인의 근본적인 이념인 탈중앙화를 훼손하지 않는 방향으로 끊임없이 연구하며 정확하고 올바른 시각으로 여러 문제들을 바라봐야 되지 않을까 생각됩니다.
같이 읽어보면 좋은 글
정말 유익한 정보를 많이 얻었습니다.
감사합니다.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
좋은 글 감사합니다.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
@coinkorea님 좋은 분석글...노고가 들어간 분석글 고맙게 잘 읽었습니다.
리스팀합니다.너무 춥습니다.감기조심하세요
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
i enjoy your post! thanks. upvoted!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
정말 배울게 많은 자료네요. 감사합니다
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
정말 주옥같은 정보네요.
이런건 검색해도 찾기가 힘든데
점점 검색하면 스팀잇이 나오는 일이 많아지는 것 같습니다 +_+/
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
한쪽은 segwit, LN으로 발전하고, 한쪽은 다른 방향으로 개발해가는 것이 좋은 상황입니다. 올해도 btc 하드포크몇개 생기고 bch하드포크 몇개 생기는 상황이 지속되는게 좋다고 봅니다.다만 하드포크해도 이젠 그다지 인정해주질 않습니다. 대신 비트코인의 여러 포크버전이 있는게 생태계에 더 좋을 수 있습니다. 가장 좋은 건 원조 BTC입니다. 비트코인 하드포크는 알트코인 하나 생기는거나 다를것 없습니다.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
I am unable to understand 😊
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
You shouldnt be proud of that
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Good
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
빅블럭의 문제점을 명확하게 알려주셔서 감사합니다.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
@coinkorea 님께 한수 배우고 갑니다`!!
감사합니다~!!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
와..이런 정보를 수집할려면 얼마나 많은 노력이 필요했을지..
감탄이 절로 나오네요.~!!
리스팀할게요. 늦은 새벽 그저 감사합니다. (__)
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Please vote me
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit