수수료 계산 실전 가이드
비트코인 트랜잭션 수수료의 계산 원리를 실전 예제로 배운다. sat/vbyte 단위, 가상 바이트(vbyte) 계산법, 적정 수수료 판단 방법, 수수료 과다 지불 방지 전략까지.
비트코인 수수료를 잘못 설정하면 두 가지 문제가 생긴다. 너무 낮으면 트랜잭션이 오랫동안 미확인 상태로 대기한다. 너무 높으면 불필요한 비용을 지불한다. 이 가이드는 수수료 계산의 원리를 이해하고, 상황에 맞는 수수료를 직접 계산하는 능력을 기른다.
| 주소 유형 | 접두사 | 입력 크기 (vbyte) | 절감율 |
|---|---|---|---|
| Legacy (P2PKH) | 1… | 148 | 기준 |
| Nested SegWit (P2SH) | 3… | 91 | -38% |
| Native SegWit (P2WPKH) | bc1q… | 68 | -54% |
| Taproot (P2TR) | bc1p… | 57.5 | -61% |
수수료는 금액이 아니라 크기에 비례한다
가장 중요한 원칙이다. 비트코인 수수료는 송금 금액과 무관하다. 1 BTC를 보내든 0.001 BTC를 보내든, 같은 크기의 트랜잭션이라면 같은 수수료다.
수수료는 **트랜잭션의 데이터 크기(바이트)**에 비례한다. 채굴자는 블록 공간이 한정되어 있으므로, 바이트당 더 높은 수수료를 지불하는 트랜잭션을 먼저 포함시킨다.
단위: sat/vbyte
수수료율의 단위는 **sat/vbyte(사토시 퍼 가상바이트)**다.
- sat(사토시): 비트코인의 최소 단위. 1 BTC = 100,000,000 sat
- vbyte(가상바이트): SegWit 도입 이후 사용되는 트랜잭션 크기 단위
SegWit 이전에는 단순히 바이트(byte)를 사용했다. SegWit 이후 서명 데이터(witness data)에 할인이 적용되면서 가상바이트(virtual byte)라는 단위가 생겼다.
vbyte = (트랜잭션 무게 weight) / 4
트랜잭션 무게 = 비witness 데이터 × 4 + witness 데이터 × 1
실용적으로는 지갑 소프트웨어가 vbyte를 자동 계산하므로, 개념 정도만 이해하면 충분하다.
트랜잭션 크기 계산하기
트랜잭션 크기는 입력(Input)과 출력(Output)의 수에 따라 결정된다.
주소 유형별 크기 (vbytes)
| 항목 | P2PKH (레거시) | P2SH-P2WPKH | P2WPKH (SegWit) | P2TR (Taproot) |
|---|---|---|---|---|
| 입력 1개 | 148 | 91 | 68 | 57.5 |
| 출력 1개 | 34 | 32 | 31 | 43 |
| 기본 오버헤드 | 10 | 10 | 10 | 10 |
계산 공식
트랜잭션 크기(vbytes) = 오버헤드 + (입력 수 × 입력 크기) + (출력 수 × 출력 크기)
총 수수료 = 크기(vbytes) × 수수료율(sat/vbyte)
실전 예제 1: 일반 송금 (SegWit 지갑)
조건: SegWit 주소에서 1명에게 송금 (잔돈 출력 포함)
- 입력 1개 (P2WPKH): 68 vbytes
- 출력 2개 (수신자 + 잔돈): 31 × 2 = 62 vbytes
- 오버헤드: 10 vbytes
- 합계: 140 vbytes
수수료율이 10 sat/vbyte라면:
수수료 = 140 vbytes × 10 sat/vbyte = 1,400 sat ≈ 0.000014 BTC
실전 예제 2: 소액 UTXO 5개 소비
조건: 소액 UTXO 5개를 모아 1명에게 송금 (잔돈 없음)
- 입력 5개: 68 × 5 = 340 vbytes
- 출력 1개: 31 vbytes
- 오버헤드: 10 vbytes
- 합계: 381 vbytes
수수료율 10 sat/vbyte:
수수료 = 381 × 10 = 3,810 sat ≈ 예제 1의 2.7배
UTXO 모델 이해하기에서 살펴본 것처럼, 입력 수가 많을수록 수수료가 급격히 늘어난다.
적정 수수료율 판단하기
현재 비트코인 네트워크의 적정 수수료율은 실시간으로 변한다. 멤풀(mempool, 미확인 트랜잭션 대기열)의 혼잡도에 따라 달라진다.
수수료율 조회 방법
txid.uk 메인 페이지에서 현재 권장 수수료율을 실시간으로 확인할 수 있다.
| 목표 확인 시간 | 수수료율 예시 |
|---|---|
| 다음 블록 (약 10분) | 높은 수수료 |
| 약 30분 내 | 중간 수수료 |
| 1시간 이상 허용 | 낮은 수수료 |
수수료율은 네트워크 상황에 따라 1 sat/vbyte에서 수백 sat/vbyte까지 변동한다. 2024년 비트코인 반감기 직후 네트워크가 혼잡했을 때는 수백 sat/vbyte까지 치솟은 사례도 있다.
stats.txid.uk에서는 블록 평균 수수료, 블록당 트랜잭션 수 등 온체인 통계를 시계열로 확인할 수 있어, 수수료 추세를 파악하는 데 유용하다.
시간이 급하지 않다면
개인 간 거래나 자신의 주소로 보내는 경우, 낮은 수수료율로 설정하고 기다리는 전략이 유효하다. 비트코인 멤풀은 네트워크가 한산해지면 낮은 수수료 트랜잭션도 확인된다. 주말이나 한국시간 기준 새벽(UTC 기준 오전)에 멤풀이 비는 경향이 있다.
수수료 절감 전략
1. SegWit 또는 Taproot 주소 사용
레거시 주소(1로 시작) 대신 SegWit(bc1q) 또는 Taproot(bc1p) 주소를 사용하면 트랜잭션 크기가 줄어 수수료가 절감된다. 입력 1개 기준으로 레거시 148 vbytes vs SegWit 68 vbytes로, 약 54% 절감된다.
2. 잔돈 출력 최소화
잔돈 출력이 없는 트랜잭션을 **최적 트랜잭션(optimal transaction)**이라 한다. 여러 지불 대상을 하나의 트랜잭션으로 묶는 **배치 처리(batch processing)**도 효율적이다. 거래소나 기업에서 많이 활용한다.
3. 저수수료 시간대 활용
멤풀이 한산한 시간대에 트랜잭션을 제출하면 낮은 수수료율로도 빠른 확인이 가능하다.
4. RBF(Replace-By-Fee) 활용
급하지 않은 트랜잭션을 낮은 수수료로 먼저 제출하고, 확인이 늦어지면 더 높은 수수료로 교체하는 방법이다. 대부분의 현대 지갑이 RBF를 지원한다.
더스트 한계 (Dust Limit)
수수료보다 금액이 작은 UTXO는 경제적으로 소비할 수 없다. 이러한 소액 UTXO를 **더스트(dust)**라 한다.
더스트 한계(dust limit)는 주소 유형과 수수료율에 따라 달라지지만, 일반적으로 수백 sat(수 원 수준) 미만의 UTXO가 해당된다. 더스트 UTXO는 수수료가 높은 시기에는 소비 비용이 UTXO 금액을 초과해 경제적 손실이 발생한다.
예시: 수수료율 50 sat/vbyte, SegWit 입력 크기 68 vbytes
입력 소비 비용 = 68 × 50 = 3,400 sat
3,400 sat 이하의 UTXO는 이 수수료율에서 더스트다.
수수료 계산기 활용
직접 계산하기 번거롭다면 다음 도구를 활용하자.
- txid.uk 수수료 계산기: 메인 페이지에서 현재 수수료율과 예상 비용을 실시간으로 확인
- tools.txid.uk 단위 변환기: sat ↔ BTC ↔ KRW/USD 변환으로 수수료의 실제 원화 비용 파악
- tx.txid.uk TX 디코더: Raw 트랜잭션을 디코딩하여 실제 크기(vbytes)와 수수료를 확인
- Sparrow Wallet: 지갑 내에서 트랜잭션 크기와 수수료를 실시간으로 표시
- 비트코인 코어:
estimatesmartfeeRPC 명령으로 목표 확인 블록 수에 맞는 수수료율 조회 가능
정리
비트코인 수수료는 송금 금액이 아닌 트랜잭션의 데이터 크기에 비례한다. SegWit 주소 사용, UTXO 수 최소화, 혼잡 시간대 회피를 통해 수수료를 효과적으로 절감할 수 있다. sat/vbyte 단위를 이해하고 현재 멤풀 상태를 확인하는 습관이 실용적인 비트코인 사용의 핵심이다.
관련 글: