거래 수수료 계산

비트코인 거래 수수료가 작동하는 방식 - 입력, 출력, 거래 크기, 수수료율 간의 관계.

0단계 ·

진행률 0/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 바이트
Locktime4 바이트

일반적인 입력 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 + Flag2 WU (2 bytes × 1, witness)
각 입력 (P2WPKH)~164 WU base + ~108 WU witness
각 출력 (P2WPKH)124 WU (31 bytes × 4)
Locktime16 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진수 문자열로 결합하세요.