원시 비트코인 트랜잭션이란 무엇인가요?
원시 비트코인 트랜잭션은 version, input(이전 txid와 output index, scriptSig, sequence), output(사토시 단위 value와 scriptPubKey), 선택적 SegWit witness 데이터, locktime을 hex로 직렬화한 것입니다. txid는 witness 데이터를 제외한 직렬화의 이중 SHA-256이며, PSBT(BIP-174)는 미서명 트랜잭션을 서명자에게 필요한 메타데이터와 함께 감쌉니다.
결과 읽기
- Input은 이전 outpoint(txid:index), 지출 유형, 도출된 주소를 나열합니다. sequence는 RBF 신호 여부를 보여줍니다.
- Output은 value, 스크립트 유형, 주소를 나열합니다. OP_RETURN output은 페이로드가 출력 가능한 문자면 텍스트로, 아니면 hex로 표시합니다.
- Locktime은 500,000,000 미만이면 블록 높이로, 이상이면 Unix 타임스탬프로 해석됩니다.
- 서명 / 미서명은 모든 input에 scriptSig나 witness가 있는지로 판단합니다.
Output 스크립트 유형
| 유형 | scriptPubKey 패턴 | 주소 | 지출 데이터 |
|---|---|---|---|
| P2PKH | OP_DUP OP_HASH160 <20 bytes> OP_EQUALVERIFY OP_CHECKSIG | 1… | scriptSig: 서명 + 공개키 |
| P2SH | OP_HASH160 <20 bytes> OP_EQUAL | 3… | scriptSig가 redeem script로 끝남 |
| P2WPKH | OP_0 <20 bytes> | bc1q… (42자) | witness: 서명, 공개키 |
| P2WSH | OP_0 <32 bytes> | bc1q… (62자) | witness가 witness script로 끝남 |
| P2TR | OP_1 <32 bytes> | bc1p… | witness: 64바이트 서명 (key path) |
| OP_RETURN | OP_RETURN <data> | 없음, 지출 불가 | 해당 없음 |
예시: weight와 vsize
P2WPKH input 1개와 P2WPKH output 2개로 된 트랜잭션은 113바이트의 비 witness 데이터(version, input, output 2개, locktime)와 약 110바이트의 witness 데이터(marker, flag, 72바이트 서명, 33바이트 공개키)를 갖습니다. Weight = 113 × 4 + 110 = 562 weight unit이므로 vsize = ⌈562 ÷ 4⌉ = 141 vbyte입니다. 10 sat/vB에서 수수료는 1,410 sat입니다. 레거시 P2PKH input으로 같은 결제를 하면 약 226바이트가 모두 전체 weight로 계산되어 226 vbyte가 됩니다.
원시 hex를 얻는 곳
Bitcoin Core: getrawtransaction <txid> 또는 createrawtransaction. Electrum과 Sparrow: 트랜잭션을 hex로 내보내기. 익스플로러: mempool.space와 blockstream.info는 /api/tx/<txid>/hex를 제공합니다. 하드웨어 지갑은 서명을 요청받는 PSBT를 보여줍니다.
주소만 따로 검증하려면 비트코인 주소 검증기를, bech32 문자열을 살펴보려면 bech32 디코더를 이용하세요.