탭루트 (Taproot) - 슈노르 서명으로 프라이버시와 효율을 높이다
탭루트는 2021년 활성화된 비트코인 업그레이드로, 복잡한 지출 조건을 가진 트랜잭션도 평범한 단일 서명 송금과 똑같아 보이게 만들어 프라이버시와 효율을 높였습니다. 슈노르 서명, MAST, 탭스크립트로 구성됩니다.
**탭루트(Taproot)**는 2021년 11월 14일 블록 높이 709,632에서 활성화된 비트코인 프로토콜 업그레이드입니다. 세그윗 이후 4년 만의 주요 업그레이드로, 복잡한 지출 조건을 가진 트랜잭션도 평범한 단일 서명 송금과 똑같아 보이게 만들어 프라이버시와 효율을 동시에 끌어올렸습니다. 탭루트는 세 개의 비트코인 개선 제안(BIP)으로 구성됩니다. BIP340(슈노르 서명), BIP341(탭루트), BIP342(탭스크립트)입니다.
graph TD P["내부 키
(Internal Key)"] --> Q["탭루트 출력 키
(트윅으로 결합)"] T["스크립트 트리
(MAST 머클 루트)"] --> Q Q --> K["키 경로 지출
슈노르 서명 1개"] Q --> S["스크립트 경로 지출
실행된 가지만 공개"] K --> R["일반 송금과
구별 불가"] style Q fill:#58a6ff,stroke:#58a6ff,color:#000 style K fill:#3fb950,stroke:#3fb950,color:#000 style R fill:#3fb950,stroke:#3fb950,color:#000 style S fill:#f0883e,stroke:#f0883e,color:#000
탭루트가 해결한 문제
비트코인의 지출 조건은 스크립트로 표현됩니다. 단일 서명, 멀티시그, 타임락처럼 조건이 복잡해질수록 트랜잭션이 커지고, 그 조건이 블록체인에 그대로 노출됩니다. 즉 어떤 출력이 2-of-3 멀티시그 지갑인지, 라이트닝 채널인지, 단순 지갑인지가 외부에 드러났습니다. 이는 프라이버시를 해치고 블록 공간을 낭비했습니다. 탭루트는 협력해서 지출하는 일반적인 경우를 단일 서명처럼 보이게 만들어 이 문제를 풀었습니다.
세 개의 BIP
- BIP340 슈노르 서명: ECDSA를 대체하는 서명 체계입니다. 64바이트 고정 크기이며, 선형성 덕분에 여러 서명을 하나로 합칠 수 있습니다(키 집계). 자세한 내용은 아래 슈노르 서명 항목을 참고하세요.
- BIP341 탭루트: 하나의 출력 키 안에 키 경로와 스크립트 경로를 함께 담는 구조를 정의합니다.
- BIP342 탭스크립트: 탭루트 환경에 맞게 비트코인 스크립트를 갱신하고, 향후 업그레이드를 쉽게 추가할 수 있도록 버전 체계를 도입했습니다.
키 경로와 스크립트 경로
탭루트 출력은 두 가지 방법으로 지출할 수 있습니다.
- 키 경로(Key Path): 관련된 모든 참여자가 협력하면 슈노르 서명 하나로 지출합니다. 이 경우 외부에서는 평범한 단일 서명 송금과 구별할 수 없습니다.
- 스크립트 경로(Script Path): 협력이 깨졌을 때를 대비한 대체 조건들입니다. 이 조건들은 MAST라는 머클 트리에 담기고, 실제로 사용한 가지 하나만 공개됩니다. 나머지 조건은 영원히 드러나지 않습니다.
내부 키와 스크립트 트리의 머클 루트는 트윅(tweak)이라는 연산으로 하나의 출력 키에 결합됩니다. 따라서 겉으로는 평범한 공개키 하나만 보입니다.
MAST: 조건을 숨기는 머클 트리
MAST(Merkelized Abstract Syntax Tree)는 여러 지출 조건을 머클 트리의 잎(leaf)으로 배치하는 방식입니다. 기존 방식에서는 지출할 때 가능한 모든 조건을 공개해야 했지만, MAST에서는 실제로 실행한 조건과 그 머클 증명만 제시하면 됩니다. 조건이 100개든 1000개든 사용한 하나만 노출되므로, 트랜잭션이 작아지고 프라이버시가 향상됩니다. 머클 트리 개념이 그대로 적용됩니다.
무엇이 좋아졌나
- 프라이버시: 키 경로로 지출하면 멀티시그, 라이트닝, 복잡한 컨트랙트가 모두 단일 서명 송금과 똑같아 보입니다. 모든 탭루트 출력이 서로 구별되지 않습니다.
- 효율과 수수료: 슈노르 서명은 64바이트로 작고, 스크립트 경로는 사용한 가지만 공개하므로 데이터가 줄어 수수료가 절감됩니다.
- 확장성: 키 집계(MuSig)와 탭스크립트의 버전 체계 덕분에 라이트닝, DLC 같은 상위 프로토콜이 더 효율적이고 사적으로 작동할 수 있는 기반이 마련되었습니다.
- 새 주소 형식: 탭루트는 bech32m 형식의 주소(bc1p로 시작)를 사용합니다.
조용했던 소프트 포크
탭루트는 기존 규칙을 더 엄격하게 만드는 소프트 포크로, 구형 노드와 호환됩니다. 세그윗 활성화가 블록사이즈 전쟁이라는 격렬한 갈등을 겪은 것과 달리, 탭루트는 Speedy Trial이라는 절차로 채굴자 시그널링을 거쳐 큰 논쟁 없이 활성화되었습니다. 기술적 개선에 대해서는 커뮤니티의 폭넓은 합의가 있었기 때문입니다.