비트코인 수수료율과 거래 크기로 예상 수수료 계산하기
비트코인 0.001 BTC를 보내든 1 BTC를 보내든 전송액이 1,000배라고 수수료도 1,000배가 되는 것은 아닙니다. 온체인 수수료는 거래가 블록 공간을 얼마나 차지하는지와 사용자가 선택한 단위당 가격을 중심으로 결정됩니다. 지갑 화면의 sat/vB, vB, fee를 구분하지 않으면 낮은 수수료율을 총수수료로 오해하거나, 입력이 많은 거래가 왜 비싼지 설명하기 어렵습니다.
이 글은 2026년 8월 4일 확인한 Bitcoin Improvement Proposal BIP 141과 Bitcoin Core 29.0 RPC 문서를 기준으로 계산 구조를 설명합니다. 특정 지갑·거래소·가상자산의 이용이나 매수·매도를 권하지 않습니다. 실제 수수료율은 전송 시점의 대기 거래, 노드 정책, 지갑 추정 방식에 따라 달라지며 비트코인 가격 변동으로 원금 손실이 발생할 수 있습니다.
핵심 정의: 총수수료, 수수료율, 가상 크기는 서로 다르다
총수수료는 입력으로 소비한 비트코인 합계에서 새 출력으로 만든 비트코인 합계를 뺀 값입니다. 1 BTC는 100,000,000 satoshi이므로 결과는 sat 단위로 표현할 수 있습니다. 수수료율은 가상 바이트 하나에 얼마를 지불하는지를 나타내며 보통 sat/vB로 표시됩니다. 가상 크기, 즉 vsize는 SegWit 거래의 증인 데이터를 할인해 블록 공간 경쟁을 비교하기 위한 크기입니다.
| 용어 | 단위·계산 | 의미 | 흔한 착각 |
|---|---|---|---|
| 총수수료 | 입력 합계 – 출력 합계, sat 또는 BTC | 채굴자가 받을 수 있는 거래별 금액 | 송금액의 일정 비율이라고 생각함 |
| 수수료율 | sat/vB | 가상 크기 1바이트당 제시 가격 | 화면의 숫자가 총수수료라고 생각함 |
| 실제 직렬화 크기 | byte | 증인 데이터를 포함한 원본 데이터 크기 | 언제나 vsize와 같다고 생각함 |
| 거래 가중치 | WU | 기본 크기×3 + 전체 크기 | 지갑 잔액이나 송금액과 관련 있다고 생각함 |
| 가상 크기 | vB | ceil(가중치÷4) |
주소 하나당 고정이라고 생각함 |
BIP 141은 거래 가중치를 기본 거래 크기×3 + 전체 거래 크기로 정의하고, 가상 거래 크기를 가중치÷4를 올림한 값으로 정의합니다. 따라서 증인 데이터가 있는 거래는 원시 바이트 수와 가상 바이트 수가 다를 수 있습니다. 공식 정의는 [BIP 141](https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki)에서 확인할 수 있습니다.
계산 구조: 예상 수수료는 sat/vB와 vB의 곱이다
지갑이 완성된 거래를 기준으로 가상 크기를 추정했다면 가장 단순한 계산은 다음과 같습니다.
예상 총수수료(sat) = 선택 수수료율(sat/vB) × 예상 가상 크기(vB)
예상 총수수료(BTC) = 예상 총수수료(sat) ÷ 100,000,000
원화 환산액은 별도 계산입니다. 총수수료(BTC) × 기준 시점 BTC/KRW 가격으로 구하되 가격 기준일시와 거래소를 반드시 적어야 합니다. 온체인 수수료 자체는 원화 가격으로 결정되지 않습니다. BTC 가격이 두 배가 되고 sat 기준 수수료가 같으면 원화 환산 부담만 두 배가 됩니다.
| 가정 | 수수료율 | 가상 크기 | 총수수료 | BTC 환산 |
|---|---|---|---|---|
| 단순 거래 A | 5 sat/vB | 140 vB | 700 sat | 0.00000700 BTC |
| 같은 거래, 빠른 목표 | 20 sat/vB | 140 vB | 2,800 sat | 0.00002800 BTC |
| 입력이 많은 거래 | 5 sat/vB | 420 vB | 2,100 sat | 0.00002100 BTC |
| 입력 많고 높은 요율 | 20 sat/vB | 420 vB | 8,400 sat | 0.00008400 BTC |
이 표는 교육용 가정일 뿐 현재 시장 수수료가 아닙니다. 같은 5 sat/vB라도 크기가 세 배면 총수수료도 세 배입니다. 반대로 송금액이 달라도 입력·출력 구조와 가상 크기가 같다면 같은 수수료율에서 총수수료가 같을 수 있습니다.
거래 크기는 왜 입력과 출력 개수에 따라 달라지는가
비트코인은 계좌 잔액에서 숫자만 차감하는 방식이 아니라 기존 UTXO를 입력으로 소비하고 새 UTXO를 출력으로 만듭니다. 필요한 금액보다 큰 UTXO를 쓰면 수취인 출력 외에 잔돈 출력이 생길 수 있습니다. 작은 UTXO 여러 개를 합쳐 보내면 서명과 이전 출력 참조가 입력마다 필요하므로 거래 크기가 커질 가능성이 높습니다.
예를 들어 100,000 sat을 보내기 위해 120,000 sat짜리 UTXO 하나를 쓰는 경우와 20,000 sat짜리 UTXO 여섯 개를 쓰는 경우를 비교해 봅시다. 두 거래 모두 수취액은 같지만 후자는 입력이 많아 더 큰 vsize가 될 수 있습니다. 주소 유형과 스크립트에 따라 입력·출력 크기가 달라지므로 입력 하나는 항상 몇 vB라는 숫자를 모든 거래에 적용하면 안 됩니다.
거래 생성 전 지갑이 보여 주는 크기는 서명 유형, 잔돈 생성 여부, 입력 선택 결과를 반영한 추정치일 수 있습니다. 최종 서명 뒤 크기와 차이가 날 수 있으므로 실제 송금 전에는 총수수료와 수수료율을 함께 확인해야 합니다.
단계별 확인법: 전송 버튼을 누르기 전에 볼 것
첫째, 화면의 단위를 확인합니다. sat/vB, BTC/kvB, 총 sat, 원화 환산값은 서로 바꿔 읽을 수 없습니다. Bitcoin Core의 estimatesmartfee 결과는 BTC/kvB이므로 지갑의 sat/vB와 비교하려면 단위를 통일해야 합니다. 1 BTC/kvB = 100,000 sat/vB입니다.
둘째, 목표 확인 블록 수를 확인합니다. Bitcoin Core 29.0의 estimatesmartfee는 지정한 블록 목표 안에 확인되기 위한 근사 수수료율과 실제 추정이 성립한 블록 수를 반환합니다. 노드가 충분한 거래와 블록을 관찰하지 못하면 오류가 반환될 수 있습니다. 공식 RPC 설명은 [Bitcoin Core 29.0 estimatesmartfee](https://bitcoincore.org/en/doc/29.0.0/rpc/util/estimatesmartfee/)에 있습니다.
셋째, 예상 vsize와 입력·출력 수를 확인합니다. 잔돈 출력이 포함됐는지, 여러 UTXO가 선택됐는지 살핍니다. 넷째, 총수수료를 직접 곱해 재검산합니다. 다섯째, 전송 후에는 TXID로 실제 수수료와 vsize, 블록 포함 여부를 확인하되 탐색기 한 곳의 화면을 네트워크 합의 그 자체로 보지는 않습니다.
숫자를 넣은 현실적 시나리오: 같은 송금액, 다른 수수료
민수가 300,000 sat을 보내려 한다고 가정합니다. 시나리오 A는 큰 UTXO 하나를 사용해 지갑이 142 vB로 추정했고, 시나리오 B는 작은 UTXO 다섯 개를 모아 410 vB로 추정했습니다. 기준 시점의 선택 수수료율은 12 sat/vB라고 가정합니다.
시나리오 A의 계산은 142×12=1,704 sat입니다. 시나리오 B는 410×12=4,920 sat입니다. 송금액은 같지만 B의 총수수료가 약 2.89배입니다. 수수료율이 같아도 입력 구조가 다르기 때문입니다. 반대로 A에서 30 sat/vB를 선택하면 142×30=4,260 sat이므로 작은 거래라도 긴급 목표를 선택하면 큰 거래의 낮은 요율보다 비쌀 수 있습니다.
| 시나리오 | 입력 구조 가정 | vsize | 요율 | 총수수료 | 송금액 대비 비율 |
|---|---|---|---|---|---|
| A | 큰 UTXO 1개 | 142 vB | 12 sat/vB | 1,704 sat | 0.568% |
| B | 작은 UTXO 5개 | 410 vB | 12 sat/vB | 4,920 sat | 1.640% |
| C | 큰 UTXO 1개, 긴급 | 142 vB | 30 sat/vB | 4,260 sat | 1.420% |
마지막 비율은 결과를 설명하기 위한 사후 계산일 뿐 프로토콜이 송금액 비율로 수수료를 부과했다는 뜻이 아닙니다. 소액 송금에서는 고정된 데이터 비용이 송금액 대비 크게 보일 수 있습니다.
지표 조합별 해석: 혼잡도와 확인 목표를 함께 본다
낮은 수수료율·작은 vsize 조합은 총비용이 낮지만, 현재 블록 공간 경쟁보다 요율이 낮으면 미확인 시간이 길어질 수 있습니다. 높은 수수료율·작은 vsize는 긴급 소액 거래에서 선택될 수 있으나 총비용 대비 송금액 비율이 커질 수 있습니다. 낮은 수수료율·큰 vsize는 UTXO 정리 거래처럼 데이터가 큰 경우 총수수료가 생각보다 높아질 수 있습니다. 높은 수수료율·큰 vsize는 비용이 가장 빠르게 커지는 조합이므로 입력 선택을 다시 검토할 가치가 있습니다.
Bitcoin Core의 경제적(economical) 추정은 짧은 시간 범위에 더 민감해 단기 수수료 하락을 빨리 반영할 수 있고, 보수적(conservative) 추정은 더 긴 관찰 범위를 사용해 더 높은 수수료율을 제시할 수 있습니다. 어느 모드도 특정 시간 안의 확정을 보장하지 않습니다. 블록 생성 간격 자체가 일정하지 않고 다른 사용자의 거래 제출도 계속 변하기 때문입니다.
시장이 다르게 반응하는 이유: 수수료는 경매표가 아니라 우선순위 신호다
채굴자는 제한된 블록 가중치 안에서 거래를 선택합니다. 일반적으로 높은 수수료율 거래가 유리하지만, 각 노드와 채굴자의 정책, 거래의 부모·자식 관계, 최소 중계 정책, 패키지의 총경제성 때문에 단순히 공개 화면의 순위대로 포함된다고 단정할 수 없습니다. 지갑마다 관찰하는 노드와 추정 알고리즘이 달라 같은 시점에도 추천 수수료율이 다를 수 있습니다.
또한 네트워크 대기열은 실시간으로 바뀝니다. 사용자가 거래를 만든 직후 수요가 급증하면 적절해 보였던 요율이 뒤로 밀릴 수 있고, 반대로 수요가 감소하면 낮은 요율도 예상보다 빨리 포함될 수 있습니다. 따라서 추천값은 가격표가 아니라 확률적 추정치로 읽어야 합니다.
수수료를 올리는 기능과 그 한계
미확인 거래의 요율이 너무 낮을 때 일부 지갑은 수수료 대체 기능을 제공합니다. Bitcoin Core의 psbtbumpfee는 opt-in RBF 거래를 더 높은 수수료의 새 거래로 대체하는 기능이며, 잔돈 출력을 줄이거나 입력을 추가할 수 있습니다. 공식 동작과 최소 조건은 [Bitcoin Core 29.0 psbtbumpfee](https://bitcoincore.org/en/doc/29.0.0/rpc/wallet/psbtbumpfee/)에서 확인할 수 있습니다.
그러나 모든 거래와 지갑이 같은 방식으로 대체를 지원하지 않습니다. 입력 추가로 vsize가 커지면 총수수료 증가분이 예상보다 커질 수 있고, 수취 서비스 화면에 기존 TXID와 새 TXID가 다르게 표시될 수 있습니다. 자식이 부모 수수료를 보완하는 방식도 지갑·노드 정책과 거래 구조에 따라 가능 여부가 다릅니다. 전송 후 해결을 기대하기보다 서명 전에 총수수료와 변경 가능 여부를 확인하는 편이 안전합니다.
흔한 오해와 데이터의 한계
수수료 10이라는 숫자만 보고 싸다고 말할 수 없습니다. 10 sat/vB인지 10,000 sat 총액인지 단위가 먼저입니다. 빠른 수수료도 확정 시간을 보장하는 서비스 수준 계약이 아닙니다. 블록 간격과 경쟁 거래는 확률적으로 변합니다. 거래 탐색기의 추천값은 공식 단일 가격이 아니며, 서로 다른 관찰 시점과 모델을 사용할 수 있습니다.
또 다른 오해는 수수료가 사라진다고 보는 것입니다. 유효 거래에서 입력 합계와 출력 합계의 차이는 블록 생산자가 받을 수 있는 거래 수수료가 됩니다. 다만 사용자는 특정 채굴자에게 직접 예약한 것이 아니며, 높은 요율만으로 무효 거래가 포함되지는 않습니다.
이 글의 숫자 예시는 주소 유형별 정확한 직렬화 크기를 예측하는 계산기가 아닙니다. 실제 vsize는 지갑이 선택한 UTXO, 서명 방식, 스크립트, 잔돈 처리에 따라 달라집니다. Bitcoin Core 문서의 버전이 바뀌면 기본 추정 모드나 반환 형식도 달라질 수 있으므로 사용하는 소프트웨어 버전의 공식 문서를 확인해야 합니다.
원금 손실 위험과 보안상 주의
수수료를 정확히 계산해도 잘못된 주소로 보낸 거래, 다른 네트워크로 보낸 자산, 개인키 유출은 해결되지 않습니다. 온체인 거래는 중앙 관리자가 임의로 취소해 주는 구조가 아니므로 처음 보내는 주소에는 소액 시험 전송을 고려하고, 주소 앞뒤 문자와 네트워크를 별도로 확인해야 합니다. 수수료를 아끼려다 지나치게 낮은 요율을 선택하면 자금 사용이 장기간 불편해질 수 있습니다.
비트코인 보유 자체에는 큰 가격 변동과 원금 손실 가능성이 있습니다. 원화 환산 수수료도 BTC 가격에 따라 변합니다. 수수료가 낮다는 이유는 자산의 안전성이나 미래 수익률을 의미하지 않으며, 특정 시점의 네트워크 혼잡도 역시 가격 방향을 보장하는 투자 신호가 아닙니다.
실전 체크리스트
- 총수수료와 수수료율의 단위를 각각 확인했는가?
- 지갑이 제시한 예상 vsize와 입력·출력 수를 확인했는가?
sat/vB × vB로 총수수료를 직접 재검산했는가?- 목표 확인 블록 수와 추정 모드를 확인했는가?
- 추천값이 확정 시간 보장이 아니라는 점을 이해했는가?
- 잔돈 출력과 작은 UTXO 다수 사용 가능성을 확인했는가?
- 수수료 대체 가능 여부와 지갑 정책을 전송 전에 확인했는가?
- 주소·네트워크·금액을 별도로 검증하고 필요하면 소액 시험 전송을 했는가?
- 원화 환산에는 가격 기준일시와 출처를 기록했는가?
- 가격 변동과 원금 손실 위험을 수수료 문제와 분리해 판단했는가?
공식 참고 자료: [BIP 141](https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki), [Bitcoin Core 29.0 estimatesmartfee](https://bitcoincore.org/en/doc/29.0.0/rpc/util/estimatesmartfee/), [Bitcoin Core 29.0 psbtbumpfee](https://bitcoincore.org/en/doc/29.0.0/rpc/wallet/psbtbumpfee/)