리딤 스크립트 (Redeem Script)

고급블록체인수정일

리딤 스크립트는 비트코인 P2SH(Pay-to-Script-Hash) 출력의 실제 사용 조건을 담은 스크립트로, 출력에는 그 해시만 기록되고 자금을 쓸 때 원본 스크립트를 서명과 함께 공개합니다. redeem(상환하다)을 직역한 '교환 코드' 같은 번역은 맞지 않으며, 개발 문서에서는 '리딤 스크립트'라고 씁니다.

자세히 알아보기

P2SH는 2012년 BIP-16으로 도입되었습니다. 그 전에는 멀티시그처럼 복잡한 조건을 쓰려면 보내는 사람이 긴 잠금 스크립트 전체를 출력에 넣어야 했습니다. P2SH에서는 받는 사람이 리딤 스크립트를 만들고, 그 스크립트의 HASH160(SHA-256 후 RIPEMD-160) 값만 주소로 알려 줍니다. 보내는 사람은 일반 주소로 보내듯 '3'으로 시작하는 P2SH 주소로 송금하면 되고, 복잡한 조건과 그에 따른 수수료 부담은 나중에 자금을 쓰는 사람에게 넘어갑니다.

자금을 쓸 때는 입력의 서명 스크립트(scriptSig)에 조건을 충족하는 데이터(예: 서명들)와 함께 리딤 스크립트 원본을 넣습니다. 노드는 먼저 제출된 리딤 스크립트의 해시가 출력에 기록된 해시와 같은지 확인하고, 같다면 리딤 스크립트를 실행해 서명 등이 조건을 만족하는지 검사합니다. 리딤 스크립트는 하나의 데이터 푸시로 들어가므로 최대 520바이트로 제한되며, 이 때문에 P2SH 멀티시그는 실질적으로 15개 키까지가 한계입니다.

세그윗 도입 이후에는 같은 개념이 P2WSH의 '위트니스 스크립트'로 이어졌습니다. 탭루트(P2TR)에서는 여러 사용 조건을 머클 트리로 묶어, 실제로 사용한 조건만 공개하는 방식으로 더 발전했습니다.

블록체인·암호화폐에서는

리딤 스크립트의 대표 용도는 멀티시그 지갑입니다. 예를 들어 '세 개의 공개 키 중 두 개의 서명이 필요하다'는 2-of-3 조건을 리딤 스크립트로 만들고, 그 해시로 주소를 만듭니다. 이 지갑을 복구하려면 개인 키뿐 아니라 리딤 스크립트(또는 이를 다시 만들 수 있는 모든 공개 키와 순서)도 있어야 하므로, 멀티시그 백업에는 공개 키 목록과 지갑 설정 정보가 반드시 포함되어야 합니다. 리딤 스크립트는 처음 자금을 쓸 때 블록체인에 공개되므로, 그 이후로는 누구나 해당 주소의 사용 조건을 볼 수 있습니다.

쉽게 말하면

금고에 "열쇠 셋 중 둘이 있어야 열린다"는 규칙을 봉인된 봉투에 넣어 두고, 봉투 겉면에는 지문(해시)만 적어 두는 것과 같습니다. 금고를 열 때 봉투를 뜯어 규칙과 열쇠를 함께 보여 줍니다.

예시

2-of-3 리딤 스크립트는 OP_2 <공개키A> <공개키B> <공개키C> OP_3 OP_CHECKMULTISIG 형태이며, 사용할 때 scriptSig에는 OP_0 <서명A> <서명B> <리딤 스크립트>가 들어갑니다. 맨 앞의 OP_0은 OP_CHECKMULTISIG가 스택에서 값을 하나 더 꺼내는 오래된 구현상의 특성 때문에 넣는 자리 채움 값입니다.

이 글은 학습을 위한 일반 정보이며 투자 권유나 법률 자문이 아닙니다. 가상자산은 가격 변동이 크고 원금 손실 위험이 있습니다.