Reading text-only. View on full site →

거래 출력 구축

2026-03-17 · learn · ko

거래 출력을 만드는 방법 - 수취인, 금액, 잠금 스크립트 정의. P2PKH, P2WPKH, 그리고 거스름돈 출력 포함.


무엇을 배우는가

출력 구조

각 출력은 거래가 확정된 후 존재할 새 UTXO를 정의합니다. 두 개의 필드를 포함합니다:

필드크기설명
Value8 바이트사토시 단위 금액 (리틀 엔디안)
ScriptPubKey가변잠금 스크립트 - 이 출력을 쓰기 위한 조건

단일 출력이 16진수로:

# Value: 100,000 satoshis (0.001 BTC), little-endian
a086010000000000

# ScriptPubKey Length
19

# ScriptPubKey (P2PKH)
76a91489abcdefabbaabbaabbaabbaabbaabbaabbaabba88ac

Value: 사토시 단위 금액

출력 값은 항상 8바이트 리틀 엔디안 정수로 사토시(1 BTC = 100,000,000 사토시) 단위로 표현됩니다.

0.001   BTC = 100,000 sats   → a086010000000000
0.01    BTC = 1,000,000 sats  → 40420f0000000000
1.0     BTC = 100,000,000 sats → 00e1f50500000000

리틀 엔디안 변환: 16진수 값을 받고, 16개 16진수 문자로 패딩하고, 바이트 쌍을 뒤집습니다. 100,000 (0x186A0)의 경우:

0x186A0 → 00000000000186A0 → A086010000000000

ScriptPubKey: 잠금 스크립트

ScriptPubKey는 누가 이 출력을 쓸 수 있는지를 정의합니다. 다른 스크립트 유형은 다른 지출 조건을 만듭니다.

P2PKH (Pay-to-Public-Key-Hash)

고전적인 비트코인 출력입니다. 공개키 해시(1로 시작하는 비트코인 주소)에 자금을 잠급니다:

OP_DUP OP_HASH160 <20-byte pubKeyHash> OP_EQUALVERIFY OP_CHECKSIG

16진수로:

76  a9  14  <20 bytes>  88  ac
│   │   │               │   └─ OP_CHECKSIG
│   │   │               └───── OP_EQUALVERIFY
│   │   └───────────────────── Push 20 bytes
│   └───────────────────────── OP_HASH160
└───────────────────────────── OP_DUP

이 출력을 쓰려면, 해시가 내장된 pubKeyHash와 일치하는 서명과 공개키를 제공해야 합니다.

P2WPKH (Pay-to-Witness-Public-Key-Hash)

현대적인 SegWit 출력입니다. 증인 공개키 해시(bc1q... 주소)에 자금을 잠급니다:

OP_0 <20-byte pubKeyHash>

16진수로:

00  14  <20 bytes>
│   │
│   └─── Push 20 bytes
└─────── OP_0 (witness version 0)

P2WPKH 스크립트는 더 짧으며, 이는 더 저렴한 수수료를 의미합니다. 해제 데이터는 ScriptSig 대신 증인 필드로 이동합니다 - 8단계에서 다룹니다.

거스름돈 출력

당신의 입력 UTXO가 보내려는 금액과 수수료에 정확히 합쳐지지 않는 한 - 거의 일어나지 않습니다 - 나머지를 자신에게 돌려보내는 거스름돈 출력이 필요합니다.

예시:

Input:  0.005 BTC  (your UTXO)
Output: 0.003 BTC  (to recipient)
Output: 0.0019 BTC (change, back to you)
Fee:    0.0001 BTC (implicit - not an output)

수수료는 암묵적입니다: 총 입력과 총 출력의 차이입니다. 거래에는 "수수료" 필드가 없습니다. 거스름돈 출력을 잊어버리면, 전체 차이가 채굴자 수수료가 됩니다 - 값비싼 실수입니다.

모범 사례: 거스름돈을 당신이 통제하는 새 주소로 보내세요. 주소 재사용은 당신의 거래들을 함께 연결해서 프라이버시를 약화시킵니다.

출력 순서

당신의 거래는 어떤 순서로든 출력을 가질 수 있습니다. 그러나 순서를 무작위화하면(항상 결제를 먼저, 거스름돈을 두 번째로 두는 대신) 프라이버시가 개선됩니다. 일부 지갑은 결정적 출력 순서를 위해 BIP69를 구현하지만, 이는 논쟁적입니다.

조합해보기

하나의 결제와 하나의 거스름돈 출력이 있는 우리 튜토리얼 거래:

# Output count
02

# Output 0: Payment (0.003 BTC to recipient's P2WPKH)
e093040000000000        # 300,000 satoshis
160014<20-byte-hash>    # ScriptPubKey

# Output 1: Change (0.0019 BTC back to our P2WPKH)
30e6020000000000        # 190,000 satoshis
160014<20-byte-hash>    # ScriptPubKey

여기서 거스름돈 190,000 sats는 5단계에서 수수료를 정확히 계산하기 전의 임시값이며, 계산 후에는 198,590 sats가 됩니다.

다음 단계

거래 수수료 계산으로 계속해서 거래가 즉시 확정되도록 올바른 수수료를 설정하는 방법을 이해하세요.

Read on the full site: https://learn.txid.uk/ko/learn/build-tx-04-outputs/