거래 수수료 계산
비트코인 거래 수수료가 작동하는 방식 - 입력, 출력, 거래 크기, 수수료율 간의 관계.
0단계 ·
무엇을 배우는가
- 근본 수수료 방정식: 입력 - 출력 = 수수료
- 수수료율(sat/vB)이 확정 우선순위를 결정하는 방식
- 브로드캐스트 전에 거래 크기를 추정하는 방법
수수료 방정식
비트코인 거래에는 명시적 "수수료" 필드가 없습니다. 수수료는 암묵적입니다:
Fee = Sum of Input Values - Sum of Output Values
입력 총액이 500,000 사토시이고 출력 총액이 490,000 사토시이면, 수수료는 10,000 사토시입니다. 채굴자는 이 차이를 당신의 거래를 블록에 포함시킨 보상으로 수집합니다.
이것이 거스름돈 출력을 잊는 것이 파국적인 이유입니다. 1 BTC 입력이 있고 0.001 BTC 출력만 만들면, 당신은 0.999 BTC 수수료를 지불한 것입니다 - 일반 가격에서 대략 $60,000.
수수료율: sat/vB
채굴자는 총 수수료를 최적화하지 않습니다 - 수수료 밀도를 최적화합니다. 500 vBytes를 차지하며 10,000 sats를 지불하는 거래는 100 vBytes를 차지하며 5,000 sats를 지불하는 거래보다 덜 매력적입니다.
표준 단위는 **가상 바이트당 사토시(sat/vB)**입니다:
Fee Rate = Total Fee ÷ Transaction Size (vBytes)
현재 수수료율은 네트워크 수요에 따라 변동합니다. mempool.space에서 실시간 요율을 확인할 수 있습니다:
| 우선순위 | 일반 범위 | 사용 사례 |
|---|---|---|
| 높음 | 20-100+ sat/vB | 다음 블록 확정 |
| 중간 | 5-20 sat/vB | 몇 시간 이내 |
| 낮음 | 1-5 sat/vB | 하루 이상 기다려도 됨 |
거래 크기 추정
거래를 만들기 전에 수수료를 계산하려면 크기를 추정해야 합니다. 일반적인 구성 요소의 전형적인 크기:
레거시(비 SegWit) 거래
| 구성 요소 | 크기 |
|---|---|
| 버전 | 4 바이트 |
| 입력 수 | 1 바이트 |
| 각 입력 (P2PKH) | ~148 바이트 |
| 출력 수 | 1 바이트 |
| 각 출력 (P2PKH) | 34 바이트 |
| Locktime | 4 바이트 |
일반적인 입력 1개, 출력 2개 레거시 거래: ~226 바이트.
SegWit 거래
SegWit은 증인 데이터에 할인을 적용하는 **가상 바이트(vBytes)**를 도입했습니다:
vBytes = (Weight Units) ÷ 4
Weight = (non-witness bytes × 4) + (witness bytes × 1)
| 구성 요소 | Weight |
|---|---|
| 버전 | 16 WU (4 bytes × 4) |
| Marker + Flag | 2 WU (2 bytes × 1, witness) |
| 각 입력 (P2WPKH) | ~164 WU base + ~108 WU witness |
| 각 출력 (P2WPKH) | 124 WU (31 bytes × 4) |
| Locktime | 16 WU |
일반적인 입력 1개, 출력 2개 P2WPKH 거래: ~141 vBytes(레거시 226 바이트와 비교). SegWit은 수수료에서 대략 38%를 절약합니다.
실용적 수수료 계산
우리 튜토리얼 거래의 수수료를 계산해봅시다:
Transaction: 1 P2WPKH input, 2 P2WPKH outputs
Estimated size: ~141 vBytes
Target fee rate: 10 sat/vB
Fee = 141 × 10 = 1,410 satoshis
이제 거스름돈 출력을 설정할 수 있습니다:
Input value: 500,000 sats
Payment output: 300,000 sats
Fee: 1,410 sats
Change output: 198,590 sats (500,000 - 300,000 - 1,410)
더스트 한계
특정 임계값 미만의 출력은 **더스트(dust)**로 간주됩니다 - 가치보다 쓰는 데 드는 수수료가 더 많습니다. Bitcoin Core의 기본 더스트 한계는 P2PKH에 대해 546 사토시, P2WPKH에 대해 294 사토시입니다. 더스트 출력을 만드는 거래는 대부분의 노드에서 거부됩니다.
계산된 거스름돈 금액이 더스트 한계 미만이면, 작고 쓸 수 없는 출력을 만드는 대신 수수료에 추가하는 것이 낫습니다.
RBF로 수수료 올리기
수수료율을 너무 낮게 설정해서 거래가 멈추면, Replace-By-Fee를 사용해 더 높은 수수료로 교체 거래를 만들 수 있습니다. 이것이 3단계에서 시퀀스 번호를 0xfffffffd로 설정한 이유입니다 - RBF 자격을 신호합니다.
다음 단계
원시 거래 직렬화로 계속해서 입력, 출력, 메타데이터를 단일 16진수 문자열로 결합하세요.