ビットコイントランザクション手数料の計算原理を実例で学ぶ。sat/vbyte単位、仮想バイト(vbyte)計算法、適切な手数料の判断方法、手数料の払い過ぎを防ぐ戦略まで解説。
import Mermaid from '@components/shortcodes/Mermaid.astro'; import InfoBox from '@components/shortcodes/InfoBox.astro'; import CompareTable from '@components/shortcodes/CompareTable.astro'; import ChartBar from '@components/shortcodes/ChartBar.astro'; import ChartLine from '@components/shortcodes/ChartLine.astro'; import KidsQuiz from '@components/shortcodes/KidsQuiz.astro'; import KidsStory from '@components/shortcodes/KidsStory.astro'; import KidsCert from '@components/shortcodes/KidsCert.astro';
ビットコインの手数料設定を誤ると二つの問題が生じる。低すぎるとトランザクションが長時間未確認のまま待機する。高すぎると不必要なコストを支払う。このガイドでは手数料計算の原理を理解し、状況に応じた手数料を自分で計算できる能力を身につける。
最も重要な原則だ。ビットコインの手数料は送金金額と無関係だ。1 BTCを送っても0.001 BTCを送っても、同じサイズのトランザクションなら同じ手数料だ。
手数料はトランザクションのデータサイズ(バイト)に比例する。マイナーはブロックスペースが限られているため、バイトあたりより高い手数料を支払うトランザクションを優先して含める。
手数料率の単位はsat/vbyte(サトシ・パー・仮想バイト)だ。
SegWit以前は単純なバイト(byte)が使われていた。SegWit以降、署名データ(witnessデータ)に割引が適用され、仮想バイト(virtual byte)という単位が生まれた。
vbyte = (トランザクション重量 weight)/ 4
トランザクション重量 = 非witnessデータ × 4 + witnessデータ × 1
実用的にはウォレットソフトウェアがvbyteを自動計算するため、概念の理解だけで十分だ。
トランザクションサイズは入力(Input)と出力(Output)の数で決まる。
| 項目 | 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)
条件:SegWitアドレスから1名に送金(お釣り出力含む)
手数料率10 sat/vbyteの場合:
手数料 = 140 vbytes × 10 sat/vbyte = 1,400 sat ≈ 0.000014 BTC
条件:小額UTXO 5つをまとめて1名に送金(お釣りなし)
手数料率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(bc1q)やTaproot(bc1p)を使うと、トランザクションサイズが縮小し手数料が節約される。入力1つ基準でレガシー148 vbytes vs SegWit 68 vbytesと、約54%削減される。
お釣り出力のないトランザクションを最適トランザクション(optimal transaction)という。複数の支払先を1つのトランザクションにまとめるバッチ処理(batch processing)も効率的だ。取引所や企業で多く活用されている。
メンプールが空いている時間帯にトランザクションを送信すると、低い手数料率でも速く確認される。
急がないトランザクションを低い手数料で先に送信し、確認が遅れればより高い手数料に置き換える方法だ。現代のウォレットのほとんどがRBFをサポートしている。
手数料よりも金額が小さいUTXOは経済的に消費できない。このような少額UTXOをダスト(dust)という。
ダスト制限はアドレスタイプと手数料率によって異なるが、一般的に数百satoshi(数円程度)未満のUTXOが該当する。ダストUTXOは手数料が高い時期には消費コストがUTXO金額を超え、経済的損失が発生する。
例: 手数料率50 sat/vbyte、SegWit入力68 vbytes
入力消費コスト = 68 × 50 = 3,400 sat
3,400 sat以下のUTXOはこの手数料率ではダストだ。
直接計算が面倒なら以下のツールを活用しよう。
estimatesmartfee RPCコマンドで目標確認ブロック数に合った手数料率を照会可能ビットコインの手数料は送金金額ではなくトランザクションのデータサイズに比例する。SegWitアドレスの使用、UTXO数の最小化、混雑時間帯の回避で手数料を効果的に削減できる。sat/vbyteの単位を理解し、現在のメンプール状態を確認する習慣がビットコインを賢く使う上で重要だ。
関連記事: