
비트코인의 재부상에 기여한 새로운 기술 발전 요약
글: 푸샤오칭, SatoshiLab, 만물도 BTC 스튜디오
1. 비트코인 기존 기술의 주요 탐색과 갈등
비트코인의 기존 기술은 대규모 적용과 비트코인이 가져야 할 능력 사이에 갈등 문제가 항상 존재해왔다. 대규모 적용과 거래 규모는 더 복잡한 거래 명령과 더 큰 거래 공간을 의미하는가? 모든 기능이 반드시 비트코인 단일 시스템에서 구현되어야 하는가? 초기에는 비트코인 생태계 기술이 미흡했기 때문에 이러한 현상들이 마치 비트코인 자체의 문제처럼 보였다. 그러나 기술이 발전함에 따라 많은 문제들은 더 명확한 답을 얻게 되었다.
본문에서는 관련된 일부 문제들과 그 문제들이 발생하고 해결되는 과정을 나열한다. 이 글을 통해 이러한 문제들과 기술들 사이의 연관성을 확인할 수 있으며, 비트코인 메인체인과 관련 '테스트체인'의 변화 과정을 살펴볼 수 있다. 비트코인 기술은 다양한 프로젝트와 팀들에 의해 지속적으로 탐색되고 있으며(심지어 이더리움조차도 비트코인의 불완전성을 탐색하는 일종의 시도이다), 다만 비트코인 메인넷에서의 변화는 Taproot 등의 기술 등장 전까지 두드러지지 않았다. Ordinals 프로토콜 등의 출현 이후 비트코인은 다시 한 번 새로운 발전 고조기에 접어들었다.
이러한 전체적인 발전 과정과 관련 기술들을 종합적으로 살펴보면, 그들 사이의 연결고리를 파악하여 더 많은 발전 방향성과 전체 아키텍처를 추측할 수 있다.
1.1. 비트코인 스크립트 언어와 여러 차례의 명령어 삭제
비트코인의 프로그래밍 언어는 역폴란드 표기법을 따르는 스크립트 언어이며, 반복문이나 조건 제어문이 없다(Taproot 및 Taproot Script가 후에 이를 확장함). 따라서 일반적으로 사람들이 말하듯이, 비트코인 스크립트 언어는 튜링 완전성이 아니다. 이로 인해 비트코인 스크립트 언어는 일정한 한계를 갖는다.
물론 이러한 한계 덕분에 해커들은 무한루프(네트워크 마비 유발)나 DoS 공격을 일으킬 수 있는 악성 코드를 작성할 수 없으며, 결과적으로 비트코인 네트워크가 DoS 공격을 받는 것을 피할 수 있다. 비트코인 개발자들도 핵심 블록체인에 튜링 완전성을 부여하면 공격이나 네트워크 정체를 초래할 수 있다고 판단했다.
하지만 바로 이 한계성 때문에 비트코인 네트워크는 다른 복잡한 프로그램을 실행할 수 없으며, 몇 가지 '유용한' 기능을 수행할 수 없다. 이후 등장한 일부 블록체인 시스템은 구체적인 문제를 해결하고 사용자 요구를 충족시키기 위해 이 점을 직접 변경했다. 예를 들어, 이더리움은 튜링 완전성을 갖춘 언어를 사용한다.
비트코인 스크립트 명령어의 일반적인 유형:
키워드:
1. 상수. 예: OP_0, OP_FALSE
2. 흐름 제어. 예: OP_IF, OP_NOTIF, OP_ELSE, ……
3. 스택. 예: OP_TOALTSTACK (입력을 보조 스택의 맨 위로 밀고, 메인 스택에서 삭제), ……
4. 문자열. 예: OP_CAT (두 문자열 연결, 현재 금지됨), OP_SIZE (스택 최상위 요소의 문자열 길이를 스택에 삽입(요소 제거 없음))
5. 비트 논리. 예: OP_AND, OP_OR, OP_XOR
6. 산술 논리. 예: OP_1ADD (입력값 +1), OP_1SUB (입력값 -1)
7. 암호화. 예: OP_SHA1 (입력값 SHA-1 알고리즘으로 해시 처리), OP_CHECKSIG()
8. 의사 키워드
9. 예약 키워드
비트코인 스크립트 명령어의 일반적인 유형:
스크립트:
1. 비트코인 주소로 지불하는 표준 거래(pay-to-pubkey-hash)
2. 표준 비트코인 생성 거래(pay-to-pubkey)
3. 증명 가능한 소비 불가/삭제 가능한 출력
4. Anyone-Can-Spend 출력
5. 퍼즐 거래
표준 거래 스크립트 다섯 가지 유형은 다음과 같다: 공개키 해시로 지불(P2PKH), 공개키로 지불, 다중 서명(최대 15개 키 제한), 스크립트 해시로 지불(P2SH), 데이터 출력(OP_RETURN).
https://en.bitcoin.it/wiki/Script 페이지에서 자세한 설명을 확인할 수 있다.
삭제된 비트코인 지원 명령어
비트코인 역사에서 여러 차례 명령어가 삭제된 바 있다. 아래 표에서 빨간색 부분은 이미 삭제된 명령어들이다.
(1) 문자열 작업
(2)
(3) 산술 작업

왜 명령어를 삭제했는가? 보안성은 한 측면의 고려사항일 뿐이며, 계층적 설계 사고방식으로 명령어 삭제를 본다면 그 타당성을 이해할 수 있다. 이렇게 함으로써 하위 프로토콜을 더욱 기초적이고 안정적으로 만들 수 있다. 아마도 중본聪는 이미 이 문제를 인식하고 있었을 것이며, 그렇지 않다면 의도적으로 명령어를 삭제하지 않았을 것이다. 일반 사람들의 사고방식은 사용자의 요구를 직접 충족시키고 완벽한 명령어와 시스템 기능을 갖춘 소규모 시스템을 구축하는 것이지, 협업이 필요한 대규모 프로토콜을 설계하는 것이 아니다.
이러한 사실은 결국 비트코인만이 1단계 네트워크로 적합하다는 결론을 낳는다. 필자는 「비트코인 가격이 너무 높아지면 새로운 대체 체인이 생길 것인가」라는 글에서 이 현상을 분석했는데, 경제학적 관점과 기술적 관점에서 비트코인 대체 체인이 생길 가능성을 언급했다. 하지만 비트코인의 기본 특성과 계층적 설계 관점에서 보면, 거의 오직 비트코인만이 1단계 네트워크 인프라로 기능할 수 있으며, 대체 체인이 생긴다 해도 1.5단계 수준의 산물일 뿐이다. 1단계 네트워크라는 측면에서 진품은 비트코인뿐이며, 대체 효과를 가진 체인은 최대한 A급 모조품 정도에 불과하다.
1.2. 비트코인 포크 역사, 원인 및 의미
비트코인의 발전 역사에서 명령어 삭제 문제 외에 또 다른 주요 이슈는 블록 크기 논쟁이며, 이는 종종 비트코인의 하드포크를 초래한다.
BTC 창립 초기에는 동일 시간 내 처리할 수 있는 거래량을 늘리기 위해 블록 크기를 제한하지 않았다. 하지만 초기 BTC 가격이 매우 낮았고 악의적인 거래 비용도 매우 저렴했기 때문에, 이 문제를 해결하기 위해 중본聪는 2010년 9월 12일 소프트포크를 주도하며 블록 크기가 1MB를 넘지 못하도록 제한을 추가했다. 중본聪는 이 제한이 임시적이며, 미래에는 통제되고 점진적인 방식으로 블록 제한을 높임으로써 확장성 요구를 충족시킬 수 있다고 언급했다.
아래는 비트코인의 포크 역사이다:

비트코인이 인기를 끌면서 네트워크 거래 혼잡과 확인 시간 증가 문제가 점점 심각해졌다. 2015년 Gavin Andresen과 Mike Hearn은 새 버전 BitcoinXT에서 BIP-101 제안을 실현하겠다고 발표하며 블록 상한선을 8MB로 높이려 했다. 그러나 Greg Maxell, Luke Jr, Pieter Wuille 등 핵심 개발자들은 반대 의견을 표명하며, 이러한 방식이 풀노드 운영 장벽을 높이며 통제 불가능한 영향을 초래한다고 주장했다. 이 논쟁은 결국 주제와 참여 범위 모두에서 확대되었다.
위 내용에서 알 수 있듯이 중본聪는 "블록 크기 제한은 임시적이며, 미래에는 통제되고 점진적인 방식으로 블록 제한을 높여 확장성 요구를 충족시킬 수 있다"고 표현했다. 하지만 언제 더 큰 블록을 지원하기 위해 포크를 일으켜야 하며, 별도의 체인을 분리해 큰 블록을 지원하는 것이 문제를 해결할 수 있을까? 계속된 논란 속에서 다양한 사례들이 등장했다. 예를 들어, BCH의 블록 크기는 8M이며, 이후 32M로 증가했다. BSV의 블록 크기는 128M이다. BCH(그리고 후속 BSV) 외에도 이 시기에는 많은 다른 BTC 포크 코인이 등장했다. BitMEXResearch에 따르면, BCH 포크 후 1년 이내에 최소 50종 이상의 새로운 포크 코인이 나타났다.
잠시 후 살펴보겠지만, 비트코인 메인넷에서 Segwit과 Taproot는 블록 공간을 1M에서 4M까지 어느 정도 확장했다.
비트코인의 포크는 발전 탐색의 일환으로, 자체 변화를 통해 더 많은 수요를 지원하려는 시도이다. 여기에는 사용자 수요, 채굴자 수요, 투자자 수요, 개발자 수요 등이 포함된다.
1.3. 비트코인 발전 과정에서의 몇 가지 대표적인 탐색
중본聪가 떠난 후, 후계자 Gavin Andresen은 Bitcoin Core와 Bitcoin 재단을 주도적으로 설립했다. 이 기간 동안 BTC의 확장성 탐색은 특히 자산 발행 분야에서 계속되었다.
(1) Colored Coins(염색코인)
eToro CEO인 Yoni Assia는 2012년 3월 27일 게재한 글에서 처음으로 염색코인 개념을 제시했다. 이 아이디어는 지속적으로 발전했으며, Bitcointalk 등의 포럼에서 염색코인 개념이 형성되고 주목받기 시작했다. 결국 Meni Rosenfeld가 2012년 12월 4일 염색화폐에 대한 상세한 백서를 발표했다.
염색코인의 개념은 비트코인의 특정 부분에 특별한 표시(즉, 염색)를 붙여 더 광범위한 자산과 가치를 대표하게 하는 것이다. 염색코인은 구현 방식에서 일련의 실체들을 만들어냈으며, 대략 두 가지 유형으로 나뉜다:
1) OP_RETURN 기반: 2013년 Flavien Charlon이 제안한 Open Assets는 OP_RETURN을 활용한다(Bitcoin v0.9.0에서 도입되었으며, 비트코인에 소량의 데이터를 저장하는 데 사용 가능하며, 초기 제한은 40바이트였다가 이후 80바이트로 증가함). 오퍼레이션 코드를 스크립트에 저장하고 외부에서 읽는 방식으로 '염색'과 거래를 완료한다.(이 모델은 외부 인덱싱을 통해 자산의 합법성을 결정하는 Ordinals와 유사하다).
2) OP_RETURN 기반: 2014년 ChromaWay가 제안한 EPOBC Protocol이 대표적이다. EPOBC 자산의 추가 정보는 비트코인 거래의 nSequence 필드에 저장되며, 각 EPOBC 자산의 유형과 합법성은 genesis 거래로 추적하여 확인해야 한다.
(2) MasterCoin(OMNI)
JR Willett은 2012년 1월 6일 MasterCoin의 구상을 발표하며 이를 '비트코인 두 번째 백서'라고 명명했으며, 2013년 7월 ICO 방식으로 프로젝트를 본격적으로 시작해 최종적으로 5,120 BTC(당시 50만 달러 상당)를 모금했다. MasterCoin은 Colored Coins와 다르게 완전한 노드 계층을 구축하며, 비트코인 블록을 스캔하여 상태 모델 데이터베이스를 유지하는데, 이 데이터베이스는 블록체인 외부의 노드에 위치한다. 이러한 설계는 Colored Coins보다 더 복잡한 기능을 제공할 수 있으며, 새로운 자산 생성, 탈중앙화 거래소, 자동 가격 피드백 등을 가능하게 한다. 2014년 Tether도 Mastercoin 프로토콜을 통해 비트코인 위에 스테이블코인을 출시했는데, 우리가 잘 아는 Tether USD(OMNI)가 그것이다.
(3) CounterParty
Counterparty는 2014년에 정식 출시되었다. Counterparty도 OP_RETURN을 사용하여 데이터를 BTC 네트워크에 저장한다. 하지만 염색코인과 달리 자산이 Counterparty에서는 UTXO 형태로 존재하지 않고, OP_RETURN에 정보를 로드하여 자산 이전을 나타낸다. 자산 보유자가 보유 주소로 특정 데이터가 포함된 거래에 서명하면 자산 이전이 완료된다. 이를 통해 Counterparty는 자산 발행, 거래 및 이더리움 스마트계약과 호환되는 플랫폼을 구현할 수 있다.
이 외에도 Ethereum, Ripple, BitShares 등을 더 광의의 'Bitcoin 2.0'으로 간주하는 견해도 있다.
1.4. 비트코인의 불완전성과 계층형 프로토콜
비트코인 시스템의 불완전성(또는 한계성)은 주로 몇 가지 측면에서 드러난다(이 문서에서 말하는 불완전성은 이더리움 백서의 요약 내용을 기반으로 하며, 실제 불완전성을 의미하는 것은 아니다).
1. 비트코인의 계정 시스템 UTXO
현재 블록체인 프로젝트에서는 주로 두 가지 기록 보관 방식이 있는데, 하나는 계정/잔액 모델, 다른 하나는 UTXO 모델이다. 비트코인은 UTXO 모델을 채택하고 있으며, 이더리움, EOS 등은 계정/잔액 모델을 사용한다.
비트코인 지갑에서는 일반적으로 계정 잔액을 확인할 수 있지만, 중본聪가 설계한 비트코인 시스템에는 잔액이라는 개념이 없다. '비트코인 잔액'은 비트코인 지갑 애플리케이션이 파생해낸 결과물이다. UTXO(Unspent Transaction Outputs)는 미사용 거래 출력을 의미하며, 비트코인 거래 생성 및 검증의 핵심 개념이다. 거래들은 체인 구조를 이루며, 모든 합법적인 비트코인 거래는 하나 이상의 이전 거래 출력에서 추적될 수 있고, 이러한 체인의 시작점은 모두 채굴 보상이며, 끝은 현재 미사용 거래 출력이다.
따라서 현실 세계에는 비트코인이 없고 오직 UTXO만 존재한다. 비트코인 거래는 거래 입력과 거래 출력으로 구성되며, 각 거래는 하나의 입력을 사용(spend)하고 하나의 출력(output)을 생성하며, 이 출력이 바로 '미사용 거래 출력'(UTXO)이다.
스마트계약을 구현하려면 UTXO 계정 모델은 매우 큰 문제가 있다. 이더리움 옐로우페이퍼의 설계자 Gavin Wood는 UTXO에 대해 깊이 있는 이해를 갖고 있다. 이더리움의 가장 큰 신기능은 스마트계약인데, 스마트계약을 고려하면서 Gavin Wood는 UTXO 기반으로 튜링 완전한 스마트계약을 구현하는 것이 어렵다고 판단했다. 반면 계정 모델은 본질적으로 객체지향적이며, 각 거래마다 해당 계정에 기록(nonce++)이 된다. 계정 관리를 용이하게 하기 위해 전역 상태를 도입했으며, 각 거래가 이 전역 상태를 변경한다. 이것은 현실 세계와 대응되는데, 세상의 미세한 변화마다 세상 전체가 변하는 것과 같다. 따라서 이더리움은 계정 시스템을 사용했으며, 이후 대부분의 퍼블릭체인도 다양한 유형의 계정 시스템을 기반으로 구현되었다.
UTXO의 또 다른 심각한 결점은 계정 인출 한도에 정교한 제어를 제공할 수 없다는 점이다. 이에 대해서는 이더리움 백서에서도 관련 설명이 있다.
2. 비트코인의 스크립트 언어, 비튜링 완전성
비트코인 스크립트 언어는 다양한 계산을 지원할 수 있지만, 모든 계산을 지원할 수는 없다. 가장 중요한 결점은 스크립트 언어에 반복문과 조건 제어문이 없다는 것이다. 따라서 우리는 비트코인 스크립트 언어는 튜링 완전성이 아니라고 말한다. 이로 인해 비트코인 스크립트 언어는 일정한 한계를 갖는다. 물론 이러한 한계성 덕분에 해커들은 무한루프(네트워크 마비 유발) 또는 DoS 공격을 일으킬 수 있는 악성 코드를 작성할 수 없으며, 결과적으로 비트코인 네트워크가 DoS 공격을 받는 것을 피할 수 있다. 비트코인 개발자들도 핵심 블록체인이 튜링 완전성을 갖춰서는 안 된다고 생각하며, 일부 공격과 네트워크 정체를 방지하기 위해서이다. 그러나 바로 이러한 한계성 때문에 비트코인 네트워크는 복잡한 프로그램을 실행할 수 없다. 반복문을 지원하지 않는 목적은 거래 확인 시 무한루프가 발생하는 것을 방지하기 위한 것이다.
보안성을 위해 튜링 완전성을 지원하지 않는다는 이유는 충분하지 않다. 또한 비튜링 완전 언어가 할 수 있는 일은 매우 제한적이다.
3. 비트코인의 기타 불완전성, 보안성, 확장성
채굴의 중심화 문제: 비트코인 채굴 알고리즘은 기본적으로 채굴자가 수천만 번 블록헤더를 약간 수정하여 결국 어떤 노드의 수정 버전의 해시 값이 목표값보다 작아질 때까지 반복하는 방식이다. 그러나 이러한 채굴 알고리즘은 두 가지 형태의 중심화 공격에 취약하다. 첫째, 채굴 생태계가 ASICs(특수목적 집적회로)와 컴퓨터 칩에 의해 지배되는데, 이들은 비트코인 채굴이라는 특수 작업에서 효율성이 수천 배나 높도록 설계되었다. 이는 비트코인 채굴이 더 이상 고도로 탈중앙화되고 평등주의적인 것이 아니라, 막대한 자본이 실질적으로 참여해야 함을 의미한다. 둘째, 대부분의 비트코인 채굴자는 실제로 로컬에서 블록 검증을 수행하지 않고, 중심화된 마이닝 풀이 제공하는 블록헤더에 의존한다. 이 문제는 매우 심각하다고 할 수 있다. 현재 상위 3개 마이닝 풀은 간접적으로 비트코인 네트워크 처리 능력의 약 50%를 장악하고 있다.
확장성 문제는 비트코인의 중요한 문제이다. 비트코인 사용 시 매시간 약 1MB씩 증가한다. 만약 비트코인 네트워크가 초당 비자(VISA)의 2,000건 거래를 처리한다면, 3초마다 1MB씩 증가(매시간 1GB, 매년 8TB)하게 된다. 비교적 적은 거래 횟수도 비트코인 커뮤니티의 논란을 일으킨다. 대규모 블록체인은 성능을 향상시킬 수 있지만 중심화 리스크라는 문제가 있다.
제품 수명 주기의 관점에서 보면, 비트코인의 일부 작은 불완전성은 자체 시스템 내에서 개선될 수 있으며, 개선 방법은 현재 시스템의 제약을 받는다. 하지만 새로운 시스템에서 이러한 문제들을 해결할 수 있다면, 구 시스템의 제약을 전혀 고려할 필요가 없다. 새로운 블록체인 시스템을 구축하려는 입장이라면, 설계 단계에서 이러한 작은 기능 개선도 함께 설계하고 업그레이드할 수 있다.
계층적 설계
계층적 설계는 복잡한 시스템을 처리하는 인간의 수단과 방법론으로, 시스템을 여러 계층 구조로 나누고 각 계층 간의 관계와 기능을 정의함으로써 시스템의 모듈화, 유지보수성, 확장성을 달성하여 설계 효율성과 신뢰성을 높이는 것이다.
광범위하고 방대한 프로토콜 시스템의 경우 계층화를 사용하면 명백한 이점이 있다. 이를 통해 사람들이 쉽게 이해하고, 분업을 통해 구현하며, 모듈별로 개선하기 쉬워진다. 예를 들어 컴퓨터 네트워크의 ISO/OSI 7계층 모델 설계가 그렇다. 하지만 실제 구현에서는 일부 계층을 통합할 수 있는데, 구체적인 네트워크 프로토콜 TCP/IP는 4계층 프로토콜이다. 프로토콜 계층화의 장점을 구체적으로 말하면: 각 계층은 독립적이며, 유연성이 좋고, 구조적으로 분할 가능하며, 구현과 유지보수가 용이하고, 표준화 작업을 촉진한다는 점이다.
계층형 프로토콜 관점에서 보면, 비트코인은 가장 기초적인 하위 계층에 위치해야 하므로 UTXO, 비튜링 완전성, 블록 생성 시간이 길고, 블록 용량이 작으며, 창시자의 사라짐 등은 오히려 1단계 네트워크가 가져야 할 특징이지 단점이 아니다.
참고: 저자는 「비트코인 2단계(Layer 2) 건설의 기초 지식 체계 V1.5판 정리」에서 프로토콜 계층화에 대해 더 자세히 설명하고 있다.
2. 비트코인 발전 과정에서의 중요한 신기술(블록 확장 및 기능 확장)
앞 섹션에서는 비트코인 기존 기술의 주요 갈등과 일부 탐색 사례를 살펴보았다. 그러나 많은 경우 하드포크를 초래하거나 완전히 새로운 이종 체인을 생성했다. 비트코인 자체 블록체인에서도 이러한 탐색은 많은 성과를 거두었으며, 본질적으로는 블록 확장과 기능 확장을 의미한다. 주로 다음 몇 가지 측면에서 나타난다.
2.1. OP_RETURN
비트코인 개발자들은 비트코인의 능력을 확장하려는 노력을 해왔으며, 다음과 같은 면에서 나타난다:
(1) OP_RETURN 사용
OP_RETURN은 스크립트 오퍼레이션 코드로서 스크립트 실행을 종료하고 스택 최상위 값을 반환하는 역할을 한다. 이 오퍼레이션 코드는 프로그래밍 언어의 반환 함수와 유사하다. 비트코인 역사에서 OP_RETURN 오퍼레이션 코드의 기능은 여러 차례 수정되었으며, 현재는 원장에 데이터를 저장하는 방법으로 주로 사용된다. OP_RETURN 오퍼레이션 코드의 기능은 과거에 중대한 변화를 겪었으며, 이제는 중요한 메커니즘이 되었고, 이를 통해 체인 상에 임의의 데이터를 저장할 수 있다.
OP_RETURN은 원래 스크립트 실행을 조기에 종료하는 반환 작업으로 사용되었으며, 실행 결과는 스택 항목으로 표시된다. 이 오퍼레이션 코드는 초기에 쉽게 악용될 수 있는 취약점이 있었지만, 중본聪가 곧바로 이를 수정했다.
OP_RETURN 기능의 추가 변경
Bitcoin Core v0.9.0 업그레이드에서 'OP_RETURN 출력' 스크립트가 표준 출력 유형으로 만들어졌으며, 사용자가 '소비 불가능한 거래 출력(unspendable transaction output)'에 데이터를 첨부할 수 있도록 허용했다. 이 스크립트에서 사용 가능한 데이터량의 상한은 처음에 40바이트로 제한되었으며, 이후 80바이트로 증가했다.
블록체인에 데이터 저장:
OP_RETURN을 항상 false를 반환하도록 변경한 것은 흥미로운 결과를 낳았다. OP_RETURN 이후에는 더 이상 오퍼레이션 코드나 데이터가 평가되지 않기 때문에, 네트워크 사용자들이 이 오퍼레이션 코드를 이용
TechFlow 공식 커뮤니티에 오신 것을 환영합니다
Telegram 구독 그룹:https://t.me/TechFlowDaily
트위터 공식 계정:https://x.com/TechFlowPost
트위터 영어 계정:https://x.com/BlockFlow_News









