
BTC 생태계 확장 방안 둘러보기: 메모화는 어디로 가는가?
작성자: Simon shieh
서론
2023년 12월 6일, 비트코인 투자자들이 인스크립션(Inscriptions)으로 인한 비트코인 가격 상승에 환호하고 있을 무렵, Bitcoin Core 노드 클라이언트 개발자 루크 대시지어(Luke Dashjr)는 찬물을 끼얹었다. 그는 인스크립션이 일종의 '스팸' 공격이라고 주장하며 수정 코드와 CVE 보고서(CVE-2023-50428)를 제출했다. 이후 비트코인 커뮤니티는 큰 논란에 휩싸였으며, 2017년 하드포크의 혼란 이후 다시 한번 격렬한 논쟁이 벌어졌다.

비트코인은 예기치 못한 기능을 포기하고 보안성을 우선해야 할까, 아니면 혁신을 수용하기 위해 약간의 보안 리스크를 감수해야 할까?
우리는 비트코인의 여정이 단순한 투기와 과장만이 아니라, 생태계와 보안 구조가 지속적으로 진화하는 과정임을 알고 있다. 본문은 비트코인 성장의 이중적 서사 — 즉, 생태계 내 효용성의 확대와 보안 조치 강화 — 에 대해 심층적으로 탐구하고자 한다. 우리는 혁신과 강력한 보안 프로토콜 간의 시너지가 디지털 자산의 새로운 시대를 열 수 있는 방법을 살펴볼 것이다.
1. BTC 생태계 개요 및 기초 지식
암호화폐 혁명의 초석으로 자리잡은 비트코인은 오랫동안 가치 저장 수단으로서 금처럼 취급되어 왔다. 다른 공개 블록체인에서 DeFi 혁신이 활발히 진행되는 동안 사람들은 비트코인의 존재를 잊고 있었다.
그러나 정작 비트코인 위에서 안정화폐(스테이블코인), 레이어2, 나아가 DeFi 실험의 선구자들이 가장 먼저 도전했음을 알아야 한다. 현재 암호화폐 시장의 경제 통화로 통하는 USDT도 최초에는 비트코인 Omnilayer 네트워크에 발행되었다. 아래 이미지는 기술적 구현 관점에서 비트코인 생태계를 기본적으로 분류한 것이다.

양방향 앵커링(sidechain), 출력 스크립트(OP_RETURN) 기반 텍스트 해석, Taproot 스크립트 기반 각인, BIP300 업그레이드 기반 드라이브체인, 상태 채널 기반 라이트닝 네트워크 등 다양한 기술이 포함된다.
위 용어들 중 많은 부분이 생소할 수 있지만, 걱정하지 말자. 먼저 기초 개념을 익힌 후, 각 생태 기술의 원리와 관련 보안 문제를 하나씩 살펴보도록 하겠다.
UTXO는 비트코인 거래의 기본 단위
이더리움의 계좌 잔액 체계와 달리, 비트코인 시스템에는 계좌(account)라는 개념이 없다. 이더리움은 복잡한 4개의 Merkle Patricia Trie를 도입해 계좌 상태 변화를 저장하고 검증한다. 반면 비트코인은 UTXO를 활용해 이를 더욱 간결하게 해결했다.

이더리움의 4개 트리

비트코인의 입력과 출력
UTXO(Unspent Transaction Outputs, 미사용 거래 출력)라는 이름은 다소 어색하게 들릴 수 있으나, 입력(input), 출력(output), 거래(transaction) 세 개념을 이해하면 쉽게 파악할 수 있다.
거래의 입력과 출력
이더리움을 잘 아는 독자라면, 거래(transaction)가 블록체인 네트워크의 기본 통신 단위이며, 블록에 포함되고 확인되면 체인상 상태 변경이 확정된다는 점을 알고 있을 것이다. 그러나 비트코인의 거래는 단순한 주소 간 상태 조작이 아니라, 여러 입력 스크립트와 출력 스크립트로 구성된다.

위 이미지는 매우 전형적인 비트코인 2:2 거래 사례이다. 이론상 입력된 BTC 수량과 출력된 BTC 수량은 같아야 하지만, 실제로는 일부가 마이너 수수료로 차감되며, 이는 이더리움의 가스비(Gas Fee)와 동일하다.
두 입력 주소는 BTC를 이전하면서 입력 스크립트에서 검증을 수행해야 하며, 이 두 입력 주소가 해당 입력(UXTXO, 이전 거래의 미사용 출력)을 사용할 수 있음을 입증해야 한다. 출력 스크립트는 다음 거래에서 이 미사용 출력을 입력으로 사용할 때 만족해야 하는 조건을 규정한다(일반적인 송금에서는 출력 주소의 서명이 필요하며, 예를 들어 P2wPKH는 taproot 주소의 서명 검증을, P2PKH는 레거시 주소 개인키 서명을 의미한다).
구체적으로, 비트코인 거래의 데이터 구조는 다음과 같다:

비트코인 거래의 기본 구조는 입력과 출력이라는 두 핵심 요소로 이루어진다. 입력 부분은 거래의 발신자를 명시하고, 출력 부분은 수신자와 잔돈(존재할 경우)을 명시한다. 거래 수수료는 입력 총액과 출력 총액의 차액이다. 모든 거래의 입력은 이전 거래의 출력이므로, 출력이 거래 구조의 핵심 요소가 된다.
이러한 구조는 연쇄적 연결을 형성한다. 비트코인 네트워크에서 모든 유효한 거래는 이전 하나 이상의 거래 출력으로 추적될 수 있다. 이러한 거래 체인의 시작점은 채굴 보상이며, 종착점은 아직 사용되지 않은 거래 출력이다. 네트워크상의 모든 미사용 출력은 총칭하여 비트코인 네트워크의 UTXO(Unspent Transaction Output)로 불린다.
비트코인 네트워크에서 새 거래의 입력은 반드시 미사용 출력이어야 한다. 또한 각 입력은 이전 출력에 해당하는 개인키로 서명이 필요하다. 비트코인 네트워크의 모든 노드는 현재 블록체인의 모든 UTXO를 저장하여 새 거래의 유효성을 검증한다. UTXO와 서명 검증 메커니즘을 통해 노드는 전체 거래 이력을 추적하지 않고도 새 거래의 유효성을 검증할 수 있어, 네트워크 운영과 유지관리를 단순화한다.
비트코인의 독특한 거래 구조는 백서《Bitcoin: A Peer-to-Peer Electronic Cash System》의 설계에 부합한다. 비트코인은 전자 현금 시스템으로, 거래 구조는 현금 거래 과정을 모사한다. 한 주소에서 사용 가능한 금액은 이전에 받은 현금의 양에 따라 결정되며, 각 거래는 그 주소의 모든 현금을 일괄적으로 소비하는 방식이다. 거래의 출력 주소는 일반적으로 하나는 수신 주소, 하나는 잔돈 주소인데, 이는 마치 슈퍼마켓에서 현금 결제 후 잔돈을 받는 것과 같다.
스크립트
비트코인 네트워크에서 스크립트는 중요한 역할을 한다. 사실 비트코인 거래의 각 출력은 특정 주소가 아니라 스크립트를 가리킨다. 이러한 스크립트는 일련의 규칙으로, 수취인이 출력에 묶인 자산을 어떻게 사용할 수 있는지를 정의한다.
거래의 유효성 검증은 두 가지 스크립트에 의존한다: 잠금 스크립트(locking script)와 해제 스크립트(unlocking script). 잠금 스크립트는 거래 출력에 존재하며, 해당 출력을 해제하기 위한 조건을 정의한다. 해제 스크립트는 이에 대응하여 잠금 스크립트가 정의한 규칙을 따르고, UTXO 자산을 해제해야 한다. 이 스크립트는 거래 입력 부분에 위치한다. 이러한 스크립트 언어의 유연성 덕분에 비트코인은 다양한 조건 조합을 구현할 수 있으며, ‘부분적으로 프로그래밍 가능한 화폐’로서의 특성을 보여준다.
비트코인 네트워크의 각 노드는 '선입선출(FIFO)' 규칙에 따라 스크립트를 해석하는 스택 기반 인터프리터를 실행한다.
가장 대표적인 비트코인 스크립트는 두 가지 유형이 있다: P2PKH(Pay-to-Public-Key-Hash)와 P2SH(Pay-to-Script-Hash). P2PKH는 간단한 거래 유형으로, 수취인이 해당 개인키로 서명하면 자산을 사용할 수 있다. P2SH는 더 복잡한데, 예를 들어 멀티시그(multi-sig)의 경우 여러 개인키 조합 서명이 필요하거나, 또는 기타 조건을 충족해야 자산을 사용할 수 있다.
이러한 스크립트와 검증 메커니즘은 비트코인 네트워크의 핵심 운용 방식을 구성하며, 거래의 보안성과 유연성을 보장한다.
예를 들어 비트코인에서 P2PKH의 출력 스크립트 규칙은 다음과 같다:
공개키 스크립트: OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG
입력은 서명 제공 필요
서명 스크립트: sig
P2SH의 출력 스크립트 규칙은 다음과 같다:
공개키 스크립트: OP_HASH160 OP_EQUAL
입력은 다중 서명 목록 제공 필요
서명 스크립트: [sig] [sig...]
위 두 스크립트 규칙에서 공개키 스크립트는 잠금 스크립트를, 서명 스크립트는 해제 스크립트를 의미한다. OP_로 시작하는 단어는 관련 스크립트 명령어이며, 노드가 해석할 수 있는 지시어이다. 이러한 명령어 규칙은 공개키 스크립트에 따라 달라지며, 해제 스크립트의 규칙도 결정한다.
비트코인의 스크립트 메커니즘은 비교적 단순하며, 스택 기반으로 OP 명령어를 해석하는 엔진일 뿐이며, 해석 가능한 스크립트 규칙이 많지 않아 복잡한 로직을 구현할 수 없다. 그러나 블록체인의 프로그래밍 가능성에 대한 원형을 제공했으며, 이후 일부 생태 프로젝트는 스크립트의 원리를 기반으로 발전했다. 특히 격리위트(SegWit)와 Taproot 업데이트 이후 OP 명령어의 종류가 더욱 풍부해졌고, 각 거래에 포함될 수 있는 스크립트 크기도 증가하며, 비트코인 생태계는 폭발적인 성장을 맞이했다.
2. 인스크립션 기술 원리와 보안 문제
인스크립션 기술의 인기는 비트코인의 격리위트(SegWit)와 Taproot 업데이트 없이는 불가능했다.
기술적으로, 블록체인의 탈중앙화 정도가 높을수록 일반적으로 효율성이 낮아진다. 비트코인의 경우, 각 블록 크기는 여전히 1MB로, 중본聪가 처음 채굴한 첫 번째 블록과 동일하다. 확장성 문제에 직면하여 비트코인 커뮤니티는 단순히 블록 크기를 늘리는 길을 선택하지 않았다. 대신 하드포크 없이 업그레이드 가능한 '격리위트(Segregated Witness, SegWit)'라는 방법을 채택했다. 이는 블록 내 데이터 구조를 최적화함으로써 네트워크 처리 능력과 효율성을 높이기 위한 것이다.
격리위트(SegWit)
비트코인 거래에서 거래 정보는 주로 두 부분으로 나뉜다: 기본 거래 데이터와 증거 데이터(witness data). 기본 거래 데이터에는 계좌 자금 잔고 등 중요한 재무 정보가 포함되며, 증거 데이터는 사용자 신원을 검증하는 데 사용된다. 사용자 입장에서는 자산과 직접 관련된 정보(예: 계좌 잔고)에 관심이 많고, 신원 검증 세부사항은 거래에서 많은 리소스를 차지할 필요가 없다. 즉, 자산 수취자는 자산의 사용 가능 여부에 주목할 뿐, 송신자의 상세 정보까지 깊이 고려할 필요는 없다.
그러나 비트코인 거래 구조에서 증거 데이터(즉, 서명 정보)는 상당한 저장 공간을 차지해 전송 효율을 낮추고 거래 패키징 비용을 증가시킨다. 이를 해결하기 위해 격리위트(SegWit) 기술이 도입되었으며, 핵심 아이디어는 증거 데이터를 주요 거래 데이터에서 분리하여 별도로 저장하는 것이다. 이를 통해 저장 공간 사용을 최적화하고, 거래 효율을 높이며 비용을 줄일 수 있다.

기존 1MB 블록 크기는 그대로 유지되지만, 각 블록이 더 많은 거래를 수용할 수 있게 되었으며, 격리위트 데이터(다양한 서명 스크립트)는 추가로 3MB 공간을 사용할 수 있게 되어 Taproot 스크립트 명령어의 다양화에 기반을 마련했다.
Taproot
Taproot는 비트코인 네트워크의 중요한 소프트포크 업그레이드로, 스크립트의 익명성, 효율성 및 스마트계약 처리 능력을 향상시키는 것을 목표로 한다. 이번 업그레이는 2017년 SegWit 업그레이드 이후 가장 중요한 진전으로 여겨진다.
Taproot 업그레이는 세 가지 비트코인 개선 제안(BIP)을 포함한다: Taproot(Merkle Abstract Syntax Tree, MAST), Tapscript, 그리고 다중 서명에 친화적인 새로운 디지털 서명 방식인 'Schnorr 서명'. Taproot의 목적은 사용자에게 익명성 향상, 거래 비용 감소 등의 혜택을 제공하는 동시에, 보다 복잡한 거래 실행 능력을 강화하여 응용 범위를 확장하는 것이다.
Taproot 업그레이는 세 가지 생태계에 직접적인 영향을 미친다. 첫째, Ordinals 프로토콜은 Taproot의 script-path spend 스크립트를 활용해 부가 데이터를 추가한다. 둘째, 라이트닝 네트워크가 Taproot Asset로 업그레이드되어 단순한 P2P BTC 결제에서 다수 대상 결제 및 새로운 자산 발행 지원으로 진화한다. 셋째, 새로 제안된 BitVM은 Taproot의 op_booland 및 op_not 명령어를 사용해 bool 회로를 Taproot 스크립트에 '각인'함으로써 스마트계약 가상 머신 기능을 구현한다.
Ordinals
Ordinals는 Casey Rodarmor가 2022년 12월에 발명한 프로토콜로, 각 사토시(Satoshi)에 고유한 일련번호를 부여하고 거래에서 이를 추적한다. 누구나 Ordinals를 통해 UTXO의 Taproot 스크립트에 텍스트, 이미지, 동영상 등의 추가 데이터를 첨부할 수 있다.
Ordinals에 익숙한 독자라면 다음을 알고 있을 것이다: 비트코인 총량은 2100만 개이며, 각 비트코인은 10^8 사토시(sat)를 포함하므로, 비트코인 네트워크에는 총 2100만 × 10^8 개의 사토시가 존재한다. Ordinals 프로토콜은 이 사토시들을 구분해 각각 고유한 번호를 부여한다. 이론상 가능하지만, 현실에서는 불가능하다.
비트코인 네트워크는 더스트(dust) 공격 방지를 위해 최소 전송 제한(레거시는 최소 546 sat, segwit은 최소 294 sat)이 존재하여, 1 sat씩 전송할 수 없으며 주소 유형에 따라 최소 546 sat 또는 294 sat 이상을 전송해야 한다. Ordinals의 선입선출(FIFO) 번호 매기기 이론에 따르면, 각 블록의 1번~294번 사토시는 분할 불가능하다.
따라서所谓 '각인'은 특정 사토시에 각인되는 것이 아니라, 거래의 스크립트에 각인되는 것이다. 이 거래는 최소 294 sat 전송을 포함해야 하며, 중앙화된 indexer(예: unisat)가 이 294 sat 또는 546 sat의 이동을 추적하고 식별한다.
거래 내 인스크립션의 인코딩 방식
이론상 Taproot 스크립트의 사용은 기존 Taproot 출력에서만 가능하므로, 인스크립션은 이론적으로 두 단계의 제출/공개(commit/reveal) 절차를 거쳐야 한다. 첫째, 제출 거래에서 script path spend 기반 내용의 Taproot 입력을 생성하고, 출력에서 사용/공개 조건을 명시한다. 둘째, 공개 거래에서 제출 거래에 의해 생성된 출력이 사용되며, 체인상 인스크립션 내용이 공개된다.
그러나 실제 indexer 시나리오에서는 공개 거래의 역할보다 입력 스크립트 내 OP_FALSE OP_IF ... OP_ENDIF로 구성된 스크립트 조각을 직접 읽어 인스크립션 내용을 추출한다.
OP_FALSE OP_IF 명령 조합은 해당 스크립트 조각이 실행되지 않도록 하므로, 원하는 바이트 내용을 저장할 수 있으며, 원래 스크립트 로직에는 영향을 주지 않는다.
"Hello, world!" 문자열을 포함한 텍스트 인스크립션은 다음과 같이 직렬화된다:
OP_FALSE OP_IF OP_PUSH "ord" OP_1 OP_PUSH "text/plain;charset=utf-8" OP_0 OP_PUSH "Hello, world!" OP_ENDIF
Ordinals 프로토콜은 본질적으로 이 코드 조각을 Taproot 스크립트에 직렬화하는 것이다.
체인에서 실제 거래를 하나 찾아 ordinals의 인코딩 원리를 자세히 설명하겠다:
https://explorer.btc.com/btc/transaction/885d037ed114012864c031ed5ed8bbf5f95b95e1ef6469a808e9c08c4808e3ae
이 거래의 상세 정보를 확인할 수 있다:

witness 필드에서 0063(OP_FALSE OP_IF)부터 시작하는 인코딩을 분석하면 직렬화된 내용을 알 수 있다:

따라서 witness 스크립트의 이 부분 코드를 디코딩할 수 있다면, 각인된 내용을 알 수 있다. 여기에는 순수 텍스트 정보가 인코딩되어 있지만, html, 이미지, 동영상 등 다른 데이터도 유사한 방식으로 처리된다.
이론적으로 자신만의 인코딩 내용, 심지어 암호화된 내용도 정의할 수 있지만, 이러한 내용은 ordinals 브라우저에서 표시되지 않는다.
BRC20
2023년 3월 9일, domo라는 익명의 트위터 사용자가 Ordinals Protocol 위에 동질화 토큰 표준을 만들겠다고 발표하며 BRC20 표준을 제안했다. 이 아이디어는 Ordinals 프로토콜을 통해 JSON 문자열 데이터를 Taproot 스크립트에 각인함으로써 BRC-20 토큰을 배포, 발행, 전송할 수 있다는 것이다.

그림 1: BRC-20 토큰의 초라한 시작(domos의 첫 번째 게시물)
출처: Twitter(@domodata)

그림 2: BRC-20 토큰의 세 가지 초기 작업 가능성(p = 프로토콜 이름, op = 작업, tick = 종목코드/식별자, max = 최대 공급량, lim = 발행 제한, amt = 수량)
출처: https://domo-2.gitbook.io/brc-20-experiment/, 바이낸스 리서치
토큰 발행자는 deploy를 통해 brc20 토큰을 체인에 배포하며, 참여자는 mint를 통해 거의 비용 없이(광산 수수료만 발생) 토큰을 획득할 수 있다. mint 수량이 max를 초과하면, mint 각인은 indexer에 의해 무효로 간주된다. 이후 토큰을 보유한 주소는 transfer 각인을 통해 토큰을 이전할 수 있다.
참고로, Ordinals의 창시자 Casey는 BRC-20 거래가 Ordinals 프로토콜의 대부분을 차지하는 것에 매우 불만을 표했다. 그는 공개적으로 BRC-20이 자신이 만든 Ordinals에 쓰레기를 쏟아붓고 있다고 말했다. 그래서 Casey 팀은 바이낸스에 공개 서한을 보내 ORDI 토큰 소개에서 Ordinals를 삭제해달라고 요청하며, Ordinals 프로토콜과 ORDI가 연관되는 것을 원치 않는다고 밝혔다.
확장 프로토콜
BRC20 swap
현재 인스크립션 거래 최대 시장이자 indexer 및 지갑 공급업체인 unisat은 BRC20 거래를 위해 BRC20 swap 프로토콜을 제안했으며, 현재 초기 사용자가 시험 사용할 수 있다.
기존 인스크립션 거래는 PSBT(Partially Signed Bitcoin Transaction) 방식으로만 가능했으며, OpenSea의 오프체인 서명 방식과 유사하게 중앙화 서비스를 통해 매수자와 매도자의 서명을 '매칭'했다. 이로 인해 BRC20 자산은 NFT 자산처럼 호가 방식으로만 거래 가능해 유동성과 거래 효율이 매우 낮았다.
brc20 swap은 brc20 프로토콜의 json 문자열에 '모듈' 메커니즘을 도입해, 스마트계약과 유사한 스크립트를 모듈 내에 배포할 수 있도록 했다. 예를 들어 swap 모듈의 경우, 사용자는 transfer를 통해 BRC20을 모듈에 잠금(즉, 자신에게 보내는 거래를 수행하되, 거래 내 인스크립션이 모듈에 잠긴다)하고, 거래 완료 또는 LP 철회 후 다시 거래를 통해 brc20 토큰을 인출할 수 있다.
현재 brc20 swap은 보안상 이유로 '블랙 모듈(black module)' 확장 모드로 운영되며, 블랙 모듈은 합의와 검증 없이 모듈 내 자금 총액을 기준으로 사용자가 인출할 수 있는 자금을 결정한다. 즉, 어떤 사용자도 모듈에 잠긴 자산 총액을 초과하여 인출할 수 없다.

블랙 모듈의 동작이 사용자에게 이해되고 실행되며 점차 신뢰를 얻고, 더 많은 인덱서들이 수용하게 되면 제품은 블랙 모듈에서 화이트 모듈로 전환되어 합의 업그레이드를 달성한다. 이후 사용자는 자유롭게 자산을 입출금할 수 있게 된다.

또한, brc20 프로토콜은 물론 전체 Ordinals 생태계가 여전히 초기 단계이며, unisat이 상당한 영향력과 명성을 가지고 있어 완전한 인덱스 서비스를 제공함으로써 독점적인 중앙화 리스크가 있다. 모듈화된 아키텍처는 더 많은 서비스 제공업체의 참여를 가능하게 하여 인덱싱의 탈중앙화를 실현할 수 있다.
BRC420
Brc420 프로토콜은 RCSV가 개발했다. 기존 인스크립션 기반으로 재귀적 인덱싱 확장을 추가했다. 재귀적 방식으로 더 복잡한 자산 형식을 정의한다. 동시에 brc420은 단일 인스크립션 기반으로 사용권과 로열티 간의 제약 관계를 설정한다. 사용자가 자산을 민팅할 때 창작자에게 로열티를 지불해야 하며, 인스크립션을 보유하면 사용권을 할당하고 가격을 설정할 수 있어 Ordinals 생태계의 혁신을 촉진할 수 있다.
brc420의 제안은 인스크립션 생태계에 더 넓은 상상력을 제공한다. 재귀 참조를 통해 더 복잡한 메타버스를 구축할 수 있을 뿐만 아니라
TechFlow 공식 커뮤니티에 오신 것을 환영합니다
Telegram 구독 그룹:https://t.me/TechFlowDaily
트위터 공식 계정:https://x.com/TechFlowPost
트위터 영어 계정:https://x.com/BlockFlow_News












