비트코인의 확장성과 표현력을 키워주는 업그레이드
시리즈 1편부터 정주행 하기 -> [쉽게 배우는 비트코인 작동원리]
비트코인의 각 블록당 용량은 1MB이며, 평균 블록 생성 시간은 약 10분이다.
이는 거래가 몰리더라도 항상 한정된 양의 트랜잭션만 처리할 수 있기 때문에 수수료가 상승한다는 특징을 가진다.
한정된 처리량은 비트코인의 결함보다는 탈중앙성을 위한 의도적 불완정성에 가깝지만, 네트워크의 규칙을 수정하지 않는 선에서 효율을 늘릴 수 있는 방법은 없을까?
또 비트코인 블록체인에 기록되는 거래의 내용이 너무 복잡해서 공간을 낭비하는 것은 아닐까?
많은 개발자들은 비트코인 탄생 이후 이런 질문들을 던져왔다.
대표적인 소프트포크인 SegWit(세그윗)과 Taproot(탭루트) 기술을 통해 정교하게 최적화되어 가는 비트코인 네트워크에 대해 알아보자.
비효율적인 블록 공간 사용
비트코인 트랜잭션에는 거래 데이터와 해당 거래의 서명 데이터가 포함된다.
거래 데이터는 계약서 본문, 서명 데이터는 인감도장이 찍힌 부분이라고 생각하면 쉽다.
기본 전송 트랜잭션에는 큰 데이터가 필요하지 않지만, 여러 주체가 하나의 지갑을 관리하는 멀티시그(Multi-Signature) 월렛과 같이 복잡한 형태의 거래를 실행할 경우, 서명 데이터의 사이즈가 매우 커진다.
더 많은 거래가 들어갈 수 있는 공간을 서명 데이터가 다 잡아먹다 보니, 거래 처리의 효율성이 떨어졌다. 심할 경우 블록 내부의 75% 이상이 서명 데이터로 가득 차는 현상이 발생하기도 했다.
TXID(거래 ID) 위변조 가능성
Transaction ID, 줄여서 TXID라고 부르는 거래 ID는 각 트랜잭션에 부여 되는 해시값(고유 번호)을 의미한다.
SegWit 업그레이드 이전에는 제삼자가 각 트랜잭션의 핵심 내용(발신자, 수신자, 비트코인 양) 등은 유지한 채 서명 데이터의 내용을 살짝 바꿔서 TXID를 수정할 수 있었다.
이 기능은 공격자가 네트워크를 유지하는 노드나 거래 내역을 관리하는 지갑 소프트웨어를 타깃으로 스팸 거래를 보내거나 거래를 속이는 공격을 할 수 있는 기회를 제공했다.
위 문제점들을 해결하기 위해 개발자들은 1MB로 한정된 블록의 사이즈를 키우거나 기존 규칙을 바꾸는 하드포크를 진행하지 않았다.
대신, SegWit이라는 소프트포크를 통해 새로운 기능을 덧붙여, 기존 노드들이 이탈하지 않는 시스템을 구축했다.
분리된 서명(Segregated Witness)이라는 본래 뜻을 지닌 SegWit은 비트코인의 한정적 블록 공간을 더 효율적으로 사용할 수 있게 도와준다.
SegWit은 서명 데이터를 본문에서 분리하여 따로 관리하는 우회 방식을 채택했다.
블록을 가방, 트랜잭션은 서류라고 가정해 보자.
모든 서류는 계약이 담긴 본문과 인감도장이 찍힌 서명 부분으로 나뉜다.
기존엔 인감도장과 서명을 가방에 다 넣어야 했다면, SegWit은 본문만 가방에 넣도록 하고 서명은 바깥 주머니에 따로 보관할 수 있다.
분리된 서명은 1MB 블록 크기 제한에 구애받지 않기 때문에 서명 데이터를 포함한다면 이론적으로 매 블록당 총 4MB의 용량을 사용할 수 있게 된다.
SegWit을 통해 결과적으로 한정된 공간에 더 많은 거래 데이터를 집어넣을 수 있게 되었고, 이는 비트코인의 확장성에 기여한다.
또한 거래 데이터와 서명 데이터가 분리되면서 더 이상 서명 데이터의 조작으로 인해 거래 데이터의 txid가 바뀌는 취약점을 막을 수 있게 되었다.
비트코인상에서는 단순한 일대일 전송 거래도 있지만 복잡한 내용의 계약 또한 성사된다.
예를 들어 2-of-3 멀티시그 지갑을 생성한다고 하면, 3명 중 2명 이상이 서명을 해야 지갑 속 비트코인을 사용할 수 있다.
또 타임락(timelock) 기능을 사용하면 일정 시간을 기준으로 다양한 계약이 생성 가능하다.
하지만 이 모든 세세한 과정이 그대로 블록체인에 기록되면서 프라이버시 문제가 대두되었다.
또한 거래 내용이 복잡해질수록 해당 내용의 용량이 기하급수적으로 커지면서 블록의 공간을 낭비한다는 견해가 지배적이었다.
비트코인 코드 수정을 정식으로 제안하는 안건을 BIP(Bitcoin Improvement Proposal)이라고 부른다. 여기서 Taproot 업그레이드는 총 3개의 BIP(BIP-340, BIP-341, BIP-342)를 통칭한다.
이 업그레이드의 목적은 1). 프라이버시 향상 2). 확장성 향상 3). 기능성 향상에 있다.
Schnorr Signature(슈노르 서명)
트랜잭션에 서명을 하는 과정에서 2개 이상의 서명이 필요한 경우가 있다.
슈노르 서명(Schnorr Signature)은 서명자의 수와 관계없이 서명 집계(Signature Aggregation) 과정을 통해 다중 서명을 단일 서명처럼 변환시킬 수 있다.
슈노르 서명을 사용한다고 해서 여러 명이 다중 서명 트랜잭션에 서명을 해야 한다는 사실은 바뀌지 않는다.
하지만 외부에서 볼 때 다중 서명 트랜잭션이 단일 서명 트랜잭션처럼 보이게 되어 해당 거래의 프라이버시와 보안성을 높일 수 있다. 계약 서명에는 여러 명이 참여했지만 마치 한 명만 서명한 것처럼 보이기 때문이다.
슈노르 서명의 효율성을 높이고 추가적인 기능성 향상을 돕는 Tapscript(탭스크립트) 또한 함께 제안되었다.
Merkleized Abstract Syntax Tree(머클 추상화 구문 트리)
다음 조건들 중 하나를 충족했을 때 특정 UTXO에 잠겨있는 비트코인을 사용할 수 있는 계약이 생겼다고 가정해 보자.
1. A가 단독 서명
2. B + C 다중 서명
3. 일정 시간 후 D 단독 서명
탭루트 업그레이드 이전에는 잠긴 비트코인을 사용할 때, 자신이 사용한 조건뿐 아니라 나머지 조건들까지 모두 공개된다는 단점이 있었다.
또한 거래 내용이 복잡해질수록 공개해야 하는 조건들이 많아지기에 블록 공간을 낭비하는 문제도 발생했다.
이를 해결하기 위해 MAST(Merkleized Abstract Syntax Tree), 즉 머클 추상화 구문 트리 기술이 도입되었다.
위 사진과 같이 MAST로 만든 가계도를 현실의 가계도에 비유해 보자.
A가 어떤 집안에 속하는지 증명하려고 할 때, A의 모든 사촌의 DNA를 다 공개하지 않더라도 부모 -> 조부모 -> 증조부모로 이어지는 혈통 경로만 증명할 수 있다면, 간편한 검증이 가능하다.
이처럼 MAST 기술은 각 조건들을 가계도 형태로 만들어서, 사용된 조건만 검증할 수 있다면 굳이 가계도 전체를 블록체인에 공개하지 않아도 되는 형태를 도입했다.
이는 프라이버시와 블록 공간 활용도를 모두 높여, 다양한 형태의 트랜잭션이 비트코인 네트워크 위에서 적극적으로 활용되도록 기여했다.
Antonopoulos, Andreas. Mastering Bitcoin, 2nd Edition. O’Reilly Media, Inc, 2017.
garynoh. “비트코인 업그레이드의 발자취를 따라서 (2) 탭루트 업그레이드.” CoinNess, 25 July 2023, coinness.com/community/opinion/2196.
“What Is Segregated Witness (Segwit)?: River Learn - Bitcoin Technology.” River, river.com/learn/what-is-segwit/. Accessed 9 June 2025.