확장성(Salability)의 문제와 BIP의 개념, ‘슈노르서명’과 ‘탭루트’의 사례

원문 보기: https://blog.naver.com/mage7th/221536559188

왜 블록은 1MB인가?

블록체인의 해결해야 할 과제 중 ‘확장성(Salability)의 문제’가 있다. 날로 발전해가는 블록체인이 가지고 있는 기술적인 한계점들을 어떻게 풀어나가는지 블록사이즈에 관련한 스케일링이슈와 BIP의 개념, 해당 사례로 ‘슈노르서명’과 ‘탭루트’에 대해 살펴보기로 하겠다.

1. 블록체인 확장성의 문제

블록체인은 거래가 증가할 수록 블록에 저장되는 정보의 용량도 같이 커지게 된다. 오늘 생성된 아래 블록에 대해서 살펴보자.

blockchain.com

2019년 5월 13에 생성된 #575811 블록에는 2628 건의 거래가 담겨 있고 크기는 1266.442kB이다. 최근 블록의 크기는 평균 1.2MB 정도로 담겨진다. 10분간 블록을 생성하였다면, 최대 1초에 7건 정도(TPS, Transaction per Second)로 10분이면 약 2500건 가량의 거래밖에 처리할 수 없다. 1MB의 블록안에 거래들이 다 포함되지 못하고 가득차게 되면서 거래가 몰렸던 지난 2017년에는 비트코인으로 전송할 때 하루가 넘어가는 경우도 있었다. 이러한 문제는 비트코인 뿐만 아니라 전반적인 블록체인 기술의 이슈인 스케일링의 문제다.

문제의 해결책으로 가장 쉽게 생각해 볼 수 있는 것이 블록의 크기를 키우는 것이다. 하지만 블록의 크기가 커져서 많은 거래가 들어가고 무거워지면 당연히 블록을 전파하는 시간에도 부담이 될 수밖에 없다. 다음에 생성될 블록은 이전 블록이 어디서 생성되었는지를 알고 그 블록의 해시값을 넣어야하는데 지연이 생기게 되면 다음 블록생성에도 악영향을 끼칠 수 밖에 없게 된다.

블록의 크기를 키울 때 발생할 또다른 문제는, 노드에 필요한 디스크 용량, 네트워크자원, 컴퓨터의 종합적인 리소스도 동시에 늘어나야 한다는 것이다. 비트코인 블록체인은 P2P 네트워크의 노드를 기반으로 하고 있어 풀노드는 모든 블록체인의 기록을 가지고 있어야 하기 때문이다.

결과적으로 블록체인의 속도가 늦어지게 되거나, 블록체인에 참가할 수 있는 노드가 한정되게 된다. 즉, 정확한 블록의 상태에 대한 전파가 늦어지니 분기도 더 많이 발생하고 부모블록보다 먼저 도착해 고아가 되 버리는 자식블록도 더 많아지게 된다. 이렇게 되면, 한정된 노드만 참가하게 되면서 집중화를 초래할 가능성도 높아진다.

BIP에서 블록사이즈 논의에 대해서는 현재 블록을 평균 5MB로 올려야 한다고 보고 있다

출처 : https://data.bitcoinity.org/bitcoin/block_size_votes/7d?c=block_size_votes&t=b

정보를 압축적으로 저장하는 방법이나 다양한 기술적 대응이 검토되고 있으나, 아직까지는 신용카드 결제나 증권거래등과 같이 빠르게 처리되는 속도를 따갈 수가 없다. 이러한 확장성의 문제 때문에 실제로 비트코인이 분열(비트코인vs비트코인캐시 하드포크)되는 계기가 되기도 했다.

2. Bitcoin Improvement Proposal (BIP)란?

말 그대로는 비트코인의 개선을 위한 제안서를 말하며, 비트코인의 거버넌스이기도 하다. 만약 비트코인 네트워크에서 기능 추가를 하고 싶다면, 개발 커뮤니티에 제안을 해야 한다. 비트코인은 탈중앙화되어 있기 때문에 공식적으로 Bitcoin Improvement Proposal (BIP)라는 절차를 토대로 진행되고 있다.

제안 내용은 BIP(Bitcoin Improvement Proposals)라는 문서로 정리되는데, 누군가가 아이디어를 내고 다양한 토론을 통해 지지를 얻게 되면, BIP 양식에 맞게 정리해서 proposal을 낼 수 있다. 이렇게 올라온 BIP가 합당한 경우 “BIP-일련번호”를 붙이고 공식적으로 비트코인의 오픈소스 개발 플랫폼인 깃허브(Github)에 올리게 된다. 그 후에는 투표 등 각종 방법에 따라 비트코인 코어 네트워크에 적용이 될 수 있는 것이다. BIP내용은 아래 사이트에서 확인가능하고 상당히 많은 제안이 올라와 있다.

출처 : 깃허브 https://github.com/bitcoin

 BitcoinBitcoin has 4 repositories available. Follow their code on GitHub.github.com

어떤 BIP가 제안되고 포함될지에 대해서는 “What BIPs are supported by the standard client Bitcoin Core?”에 들어가보면 된다. 해당 링크는 아래에 있다. ​

 What BIPs are supported by the standard client Bitcoin Core?There is different BIP, each has a status. I read somewhere that BIPs are not considered part of the Bitcoin protocol until “active”. Nevertheless, Bitcoin Core seems to support a number of BIPs th…bitcoin.stackexchange.com

참고로, BIP종류는 아래와 같다.

2-1. Standard Track BIP

Standard Track BIP는 네트워크 프로토콜의 변경 블록 및 트랜잭션 유효성 검사 규칙 변경, 비트코인 네트워크를 사용하는 응용프로그램의 상호운용성을 영향을 주는 변경 및 추가 등 비트코인 네트워크 구현에 폭넓게 영향을 미치는 변경에 대한 내용으로 구성된다. 설계자료(Design document)와 참조구현(Reference Implementation)의 두가지 부분으로 구성된다.

2-2. Informational BIP

Informational BIP는 비트코인 네트워크 설계 문제를 설명하고 일반적인 지침과 정보를 비트코인 네트워크에 제공할 수 있다. 새로운 기능을 제안하는 것은 아니며, 비트코인 커뮤니티의 합의나 추천을 의미하지 않기 떄문에 여기에 올라오는 내용을 따를지에 대해서는 사용자와 개발자에게 맡긴다.

2-3. Process BIP

Process BIP는 비트코인 네트워크를 둘러싼 프로세스를 나타내거나 프로세스 변경을 제안할 수 있다. Standards Track과 달리, 비트코인 프로토콜 자체 이외의 영역에 적용된다. 구현에 대한 제안이 될 수 있지만 코드기반으로 제안되지 않는다. 지역사회의 합의를 요구하는 것이며, 사용자는 이를 무시할 수 없다. 예로 절차, 지침, 의사결정과정 변화, 비트코인 네트워크 개발 도구 및 환경 변화를 말할 수 있다.

3. 슈노르서명 (Schnorr Signature)

깃허브(Github)에 흥미로운 BIP(비트코인 개선 제안서, Bitcoin Improvement Proposal)가 제안되었다. 슈노르 서명(Schnorr Signature)이라고 불리는 새로운 디지털 서명 체계를 비트코인 거래 검증 방식에 적용하는 것이다.

3-1. 슈노르 서명(Schnorr signature)이란?

만약 비트코인지갑에 10 BTC가 있는데 지갑 내에 10개의 주소에 1 BTC 씩 분배되어 있는 경우에 9.5 BTC 를 보내려고 한다면 그 트랜잭션은 10개의 인풋과 1개의 아웃풋으로 구성된다. 이때 10개의 인풋 주소 각각에 다 전자서명이 들어가야만 트랜잭션을 보낼 충분한 권한이 생긴다. 그래서 10개의 전자서명이 들어간 트랜잭션을 만든다면 그 용량은 그만큼 커지게 된다.

슈노르 서명은 이부분을 개선한 것으로, 한 사람이 여러 주소에 들어있는 비트코인을 모아서 보낼 때, 한번의 전자서명으로 보낼 수 있도록 하는 것이다. 이렇게 되면, 약 25% 정도 저장 공간을 효율적으로 쓸 수 있다. 따라서, 1MB라는 블럭사이즈 한계를 가지고도 더 많은 트랜잭션을 처리할 수 있게 된다.

슈노르 서명은 비트코인 거래의 필수 요소 중 하나인 ‘서명’ 데이터가 블록체인에서 차지하는 크기를 줄일 것으로 기대되고 있다. 데이터의 크기가 줄게 되면, 자연스럽게 더 많은 거래가 블록에 포함될 수 있으며 수수료 또한 낮아진다.

기존에 이용되었던 거래 검증방식에서는 다수의 송금인(Sender)이 한 수신인에게 비트코인을 보내는 경우, 모든 송금인의 서명(Signature)가 비트코인 블록에 포함해야 했다. 반면, 슈노르 서명 기반의 거래에서는 다수의 송금인의 서명은 하나의 서명으로 결합되어 검증이 가능해진다.

슈노르서명에서는 서명의 횟수가 줄어든다.

출처 : medium, Sam Wouters https://medium.com/@SDWouters/why-schnorr-signatures-will-help-solve-2-of-bitcoins-biggest-problems-today-9b7718e7861c

어떻게 보면 그리 큰 변화는 아니지만, 이런 작은 변화 하나 하나가 비트코인 블록에 기록되는 데이터의 효율성을 높이게 된다. 슈노르 서명은 비트코인 블록체인의 효율성을 약 25% 증가시킬 것으로 추산된다. 데이터의 효율성이 높아지는 만큼, 더 많은 거래가 블록에 포함될 수 있으며 비트코인 확장성 문제 해결에도 기여를 할 것으로 보인다.

3-2. 슈노르박사와 특허문제

슈노르 서명 체계는 Claus Schnorr에 의해 1991년에 특허를 받았으며, 해당 특허는 2008년에 만료되었다. 비록 슈노르 체계의 변형인 DSA (전자 서명 알고리즘) 체계는 더 강력하다고 알려져 있지만, 이에 대한 특허가 전 세계적으로 무료로 제공되었기 때문에 더 광범위하게 채택된 것이다. 하지만 슈노르박사는 DSA가 자신의 특허 하에 적용되어야 한다고 주장했다.

비트코인은 2009년 출시 당시 전자 서명 방식에 DSA 변형인 타원 곡선 전자 서명 알고리즘 (ECDSA)을 사용했는데, 이는 채택율이 높았기 때문이다. 원래의 슈노르 서명 체계는 항상 DSA보다 단순하고 효율적이었으며 (70바이트 정도의 ECDSA 가변 크기보다는 고정 60바이트 인코딩) 보안적인 부분에서도 부담이 적었다. 10여년이 흐른 현재에 와서 이러한 효율성이 높다는 인식하에 비트코인이 슈노르 서명 체계로 이동해야 하는 것이 합리적으로 여겨지게 되었다.

3-3. 슈노르서명의 효율성

가장 주요한 이점은 다중 서명 거래가 일반적인 단일 서명 거래로 온체인에 표시되는 것이다. 슈노르 서명을 사용하여 여러 사용자는 블록체인에 개별적으로 공개 키와 서명을 별도로 게시하는 대신 공동 공개 키를 생성하여 하나의 서명으로 공동 서명할 수 있다. 이로서 기존의 다중 서명 거래에 대한 서명자 수가 증가함에 따라 비교 이익이 커지게 되고, 공간 절감과 검증 시간에 대한 단축이 이루어지게 된다.

이 그래프는 슈노 시그니처를 초기부터 사용해 왔을때, 블록체인의 크기가 어떻게 되었을지 시뮬레이션 한 차트이다. ( 출처 : 아래 첨부한 논문 )첨부파일Simple Schnorr Multi-Signatures with Applications to Bitcoin.pdf 파일 다운로드

이전에도 비트코인 개발자 그레그 맥스웰(Greg Maxwell)이 개발했던 코인조인(CoinJoin)이나 다수의 월렛에서 입금된 비트코인을 한 곳에 모아서 다수의 출금을 일으키며 거래 프라이버시를 유지할 수 있게 했는데, 블록체인 인포(Blockchain.info)의 쉐어드코인(SharedCoin), 셔플퍼프(ShufflePuff) 등 비슷한 아이디어들은 많았다. 하지만 이미 존재하는 플랫폼을 변형해 만들었던 도구였던 만큼, 편의성과 효율성 측면에서 단점이 존재했다.

반면, 슈노르 서명이 BIP를 통해 공식적으로 비트코인 프로토콜에 반영될 경우, 확장성과 개인정보 보호에 대한 개선을 이룰 수 있다. 유저들은 간편하게 프라이버시를 지킬 수 있을 것으로 기대된다. 또한, 다수의 전송 수수료를 지불해야하는 기존의 프라이버시 거래 시스템 대비 수수료 또한 저렴할 것으로 보인다.

3-4. 멀티시그 확장성

슈노르 서명이 불러오는 가장 큰 혁신 중 하나는 멀티시그(MultiSig) 거래 확장성이다. 보통 비트코인 거래는 한 사람의 프라이빗 키(Private key)로 실행된다. 하지만 멀티시그 거래는 다수 인원의 프라이빗 키가 있어야 거래가 체결된다. 멀티시그 거래는 거래소 또는 기업 계정 등 보안적인 사유로 과반수의 인원이 거래를 승인하는 절차를 만들기 위해 이용된다.

하지만 지금 시스템에서의 멀티시그 거래 효율성은 매우 낮다. 거래를 승인하는 모든 인원의 서명 데이터가 전송기록에 포함되어야 하기 때문에 전송 데이터(TX)가 차지하는 용량이 커지기 때문이다.

하지만 슈노르 서명이 도입된다면 멀티시그 거래는 1개의 서명 데이터로 대체될 수 있다. 슈노르 서명 기반의 멀티시그 거래는 기존 멀티시그 거래와 동일한 안전성을 가지면서도, 블록에서 차지하는 데이터 크기는 획기적으로 줄어든다.

Schnorr-Spilman channels.

출처 : https://news.bitcoin.com/privacy-and-scaling-schnorr-signatures-are-coming-to-bitcoin-cash/

최대 15명이 검증에 참여할 수 있었던 기존의 멀티시그 거래가 최대 6만명 이상으로 확장되는 것이다.멀티시그 거래 참여자가 늘어날 수 있다면 비트코인을 다른 블록체인에 연동하는 ‘페깅(Pegging)’ 가능성 또한 높아진다.

블록체인간 상호 호환성(Interoperability)이 중요해지는 시대였지만, 멀티시그 월렛의 한계 때문에 비트코인 호환성은 문제로 남았었다. 하지만 슈노르 서명이 적용되면 수백명의 타 블록체인의 검증인(BP, Validator, Witness 등)이 비트코인 멀티시그 검증에 참여하여 ‘비트코인 보증 암호화폐’를 다른 블록체인에서도 구현할 수 있게한다.

3-5. 스팸어택에 대한 저항력

예를 들어 2017년 6월 17일에 있었던 아래의 블럭은 1메가 한계가 꽉 찼는데 고작 78개의 트랜잭션 만을 가지고 있다.

https://blockchain.info/block/00000000000000000182aabc399d2daec86b50d510701a5fd098793a4eadead4

200개의 주소로 부터 0.0147 BTC 의 수수료를 첨부해서 2.5 BTC 를 전송한 블럭의 디테일을 살펴보다보면 정상적인 트랜잭션이라기 보다는 스팸어택처럼 생겼다는 것을 알 수 있다. 슈노 시그니처가 비트코인에 구현되면 위와같은 트랜잭션에서 200개의 전자서명이 들어가던 것이 1개의 전자서명으로 충분해진다. 용량이 많이 줄어들어서 스팸어택의 효율이 떨어지기 때문이다. 기존의 비트코인에 구현되어 있는 ECDSA(엘립틱 커브)를 슈노 시그니처가 대체하는 프로토콜 변경은 원래는 하드포크가 필요한 일이다. 지금은, 세그윗으로 인해 script 에 version 을 부여하는 기능이 이미 들어가 버렸고, 그래서 슈노 시그니처 구현은 하드포크가 아닌 소프트포크로 가능하게 되었다. ≪코인리더스≫ 비트코인 캐시(BCH) 급등…이유는? 5월첫날비트코인캐시(BCH)가급등세를보여주고있다. 해외암호화폐시황중계사이트인코인마켓캡에따르면1일(한국시간)오전10시10분현재글로벌비트코인www.coinreaders.com

4. 탭루트 (Taproot)

2019년 5월 6일, 비트코인 프로토콜 개발자인 Pieter Wuile는 “탭루트(Taproot)”라는 비트코인 개발자 메일 목록에 소프트포크 업그레이드 제안을 게시했다. 이 제안이 받아들여지는 경우, Pieter가 2018년 7월에 게시한 슈노르 서명 소프트포크 업그레이드를 보완할 가능이 높아지게 된다. 이는 확장성과 프라이버시 개선에서 효과를 나타낼 것으로 예상된다.

탭루트 아이디어의 기원은 비트코인 개발자 Gregory Maxwell이 2018년 1월에 보낸 이메일에서 나온 것으로 보인다. 탭루트는 머클 트리의 상단을 제외하고 구조가 유사하다. 탭루트의 경우, 협조적 또는 일반 시나리오에서는 머클 트리의 존재 여부에 대한 증거를 게시할 필요 없이 하나의 공개 키와 단일 서명만 게시할 수 있는 옵션이 있다. 탭루트 거래 구조에 대한 그림이 아래에 나와 있다.

출처: BitMEX Research

수정된 공개 키는 원래 공개 키와 머클 루트 해시에서 산출할 수 있다. 일반적 또는 협조적인 지불의 경우, 상환 시에 원래의 키는 온체인에 존재할 필요가 없고 머클 트리의 존재는 밝혀지지 않으며, 게시되어야 하는 것은 모두 단일 서명이다. 비협조적 또는 비정상적인 상환이 발생하는 경우, 머클 트리에 대한 정보와 함께 원래의 키가 공개된다.

출처: BitMEX Research

MAST는 2016년에 비트코인 프로토콜 개발자인 Johnson Lau 박사가 고안한 아이디어였다. Lau 박사는 과거 비트멕스 리서치 팀에서 2018년 2월 소트프포크를 만드는 기술: 정책 규칙에 의한 보호라는 제목의 보고서를 기재한 적이 있다. 이와 같은 MAST 아이디어는 시간 잠금 조건 외에도 2 개의 다중 서명 조건 중 2 개와 같은 여러 지출 조건을 포함할 수 있다는 점이다. 이러한 모든 조건과 스크립트를 블록체인에 넣지 않도록 하기 위해 지출 스크립트를 머클 트리 내부에 구성하여, 필수적인 머클 분기 해시와 함께 사용할 경우에만 공개할 수 있다.

원래의 MAST 구조에 비해 탭루트의 이점은 분명하다. 협조적 사례에서는 더 이상 블록체인 혹은 스크립트 자체에 32바이트 해시를 추가하지 않아도 되므로 효율성이 개선된다. 이외에도 거래는 “정상적”인 것처럼 보이며 단지 공개 키와 서명이 있는 지불일 뿐, 다른 지출 조건의 존재는 공개할 필요가 없다.

예를 들어 라이트닝 채널을 열거나 협조적 라이트닝 채널을 폐쇄할 때 외부 제 3자 관찰자에게 개인정보 보호 혜택이 돌아간다. 거래는 비트코인의 정기적인 지출과 정확히 동일하게 보이며, 해당 거래는 비협조적인 라이트닝 채널 폐쇄 시에만 머클 트리의 존재를 드러낼 수 있도록 구성할 수 있다.

거래 유형이 더 다양할수록 제 3자가 어떤 유형의 거래가 발생하고 있는지 판단하고 자금 흐름을 확립할 수 없기 때문에 개인정보 보호에 유리하다. 일부 비트코인 개발자들의 장기 목표는 어떤 유형의 거래가 발생하든 적어도 협조적 사례에서 모든 거래가 동일하게 보이도록 하는 것이다.

블록체인에 필요한 서명 수를 줄임으로써 얻을 수 있는 잠재적인 확장성 이점은 상당히 크다.

5. 결론 : 아직 아무것도 완벽하지 않다.

BIP에서 살펴본 몇가지 사례는 소프트웨어 자체가 비트코인의 모습이며, 원하는 규칙을 프로그램을 사용해서 네트워크에 구현하려는 수년간에 걸친 수많은 집단 비전 덕분에 비트코인이 현재 모습을 갖추고 있다는 사실을 증명한다. 글은 개인이 해석하기 나름이지만, 코드의 실행은 해석의 여지가 없다. 또한, 합의가 생명인 시스템에서 코드로 구현된 규칙을 준수하는 데는 코드 말고는 달리 고려할 사항이 없다.

최근의 버전 업그레이드(0.17)만 해도 무려 135명의 개발자가 기여했고, 풀 리퀘스트(pull request)는 무려 700건이 넘었다. 블록체인이 계속 확장되는데도 동기화 시간은 개선되고 있다. 물론 이더리움에 비해서는 느리지만, 아직도 3시간 이내에 제너시스 블록부터 체인의 끝까지 비트코인 블록체인 전체를 동기화할 수 있다.

지루트(G’Root), 방탄기능(Bulletproofs), 비밀 거래(Confidential Transaction), 비밀 자산(Confidential Assets), 슈노르(Schnorr) 서명 등 기본 레이어를 위한 신기술이 등장했고, 라이트닝 네트워크(Lightning Network) 덕분에 개발자들이 기본 프로토콜의 컨센서스 변경 없이도 실험이 가능하다.

사토시가 처음 비트코인 소스 코드를 공개했을 때 자신이 대중을 위해 거대한 사회적 가치를 창조한다는 사실을 인지하고 있었을 테지만, 비트코인이 단지 10년 만에 이렇게까지 발전할 줄은 예상하지 못했을 것이다. 비트코인 코드에 정통한 이들은 백서에 누락된 내용이 많고 심지어 오류도 제법 있다고 본다.

출처 : 코인데스크 비트코인 백서는 ‘성경’이 아니다비트코인 백서 10주년 릴레이 기고, 이제 해외 필자로 이어갑니다. 미국 <코인데스크>는 비트코인 백서 출시 10주년을 맞아 “비트코인 10년: 사토시 백서(Bitcoin at 10: The Satoshi White Paper)” 라는 제목으로 블록체인과 암호화폐 업계의 지난 10년을 돌아보고 앞을 전망하는 다양한www.coindeskkorea.com

비트코인  발행량(2100만 개): 사토시는 ‘미리 정해진 숫자’라고만 백서에 언급했고, 발행 상한과 일정은 코드를 공개한 시점에 이르러서야 밝혔다.

– 가장  체인: 과반수가 인정한 거래 이력을 가진 체인을 “가장 긴 체인”이라고 백서는 언급하고 있지만, 2010년 7월 사토시가 코드를 변경했기 때문에 엄밀히 말하면 “가장 작업량이 많은 체인”이 맞는 말이다. 그렇지만 새로운 내용은 백서에 반영되지 않았다.

– ASIC 채굴: CPU 채굴이 백서에 자주 언급되어 있다. 사토시는 백서가 발간된 이후 “컴퓨터 클러스터가 결국 생성되는 코인을 모두 집어삼킬 것이다. 나는 그날을 앞당기고 싶지 않다.”라고 말한 바 있다. 현재까지의 상황을 고려할 때, CPU 채굴은 비트코인의 성공에 걸림돌이 되지 않는다.

– 난이도 알고리즘: 백서에는 난이도 알고리듬에 이동 평균이 사용된다고 적혀 있지만, 실제 코드에는 2016개 블록 주기가 사용되었다. 이는 변화에 저항하도록 하는 인센티브에 중대한 변화를 가져왔다.

– 비트코인 스크립트 혹은 스마트계약 시스템: 사토시는 백서 발간 후에 비트코인 스크립트가 “위탁 거래, 채권 계약, 제삼자 중재, 다자 서명” 등에 쓰일 수 있다고 제안했지만, 정작 백서에는 스크립트 기능조차 언급되지 않았다.

백서가 현실을 반영하지 못하는데도 사토시는 크게 신경을 쓰지 못한 것 같다. 심지어 코드를 더 정확하게 반영하고자 백서를 고치려 들지도 않은 듯 하다. 예상컨대 실제 작동하고 있는 코드에 집중하느라 이미 현실과는 맞지 않은 백서는 신경 쓸 겨를이 없었을 것은 아닌가 한다.

Leave a Reply

Your email address will not be published. Required fields are marked *

Bitnami