ビットコイン技術 中級

ビットコイン手数料計算 実践ガイド

ビットコイントランザクション手数料の計算原理を実例で学ぶ。sat/vbyte単位、仮想バイト(vbyte)計算法、適切な手数料の判断方法、手数料の払い過ぎを防ぐ戦略まで解説。

· 2分

ビットコインの手数料設定を誤ると二つの問題が生じる。低すぎるとトランザクションが長時間未確認のまま待機する。高すぎると不必要なコストを支払う。このガイドでは手数料計算の原理を理解し、状況に応じた手数料を自分で計算できる能力を身につける。

手数料は金額ではなくサイズに比例する

最も重要な原則だ。ビットコインの手数料は送金金額と無関係だ。1 BTCを送っても0.001 BTCを送っても、同じサイズのトランザクションなら同じ手数料だ。

手数料は**トランザクションのデータサイズ(バイト)**に比例する。マイナーはブロックスペースが限られているため、バイトあたりより高い手数料を支払うトランザクションを優先して含める。

単位:sat/vbyte

手数料率の単位は**sat/vbyte(サトシ・パー・仮想バイト)**だ。

  • sat(サトシ): ビットコインの最小単位。1 BTC = 100,000,000 sat
  • vbyte(仮想バイト): SegWit導入後に使われるトランザクションサイズの単位

SegWit以前は単純なバイト(byte)が使われていた。SegWit以降、署名データ(witnessデータ)に割引が適用され、仮想バイト(virtual byte)という単位が生まれた。

vbyte = (トランザクション重量 weight)/ 4
トランザクション重量 = 非witnessデータ × 4 + witnessデータ × 1

実用的にはウォレットソフトウェアがvbyteを自動計算するため、概念の理解だけで十分だ。

トランザクションサイズの計算

トランザクションサイズは入力(Input)と出力(Output)の数で決まる。

アドレスタイプ別サイズ(vbytes)

項目P2PKH(レガシー)P2SH-P2WPKHP2WPKH(SegWit)P2TR(Taproot)
入力1つ148916857.5
出力1つ34323143
基本オーバーヘッド10101010

計算式

トランザクションサイズ(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基準の午前)にメンプールが空く傾向がある。

手数料節約戦略

アドレス種類接頭辞入力サイズ (vbyte)削減率
Legacy (P2PKH)1…148基準
Nested SegWit (P2SH)3…91-38%
Native SegWit (P2WPKH)bc1q…68-54%
Taproot (P2TR)bc1p…57.5-61%

1. SegWitまたはTaprootアドレスを使用

レガシーアドレス(1始まり)の代わりにSegWit(bc1q)やTaproot(bc1p)を使うと、トランザクションサイズが縮小し手数料が節約される。入力1つ基準でレガシー148 vbytes vs SegWit 68 vbytesと、約54%削減される。

2. お釣り出力の最小化

お釣り出力のないトランザクションを**最適トランザクション(optimal transaction)という。複数の支払先を1つのトランザクションにまとめるバッチ処理(batch processing)**も効率的だ。取引所や企業で多く活用されている。

3. 混雑していない時間帯を活用

メンプールが空いている時間帯にトランザクションを送信すると、低い手数料率でも速く確認される。

4. RBF(Replace-By-Fee)の活用

急がないトランザクションを低い手数料で先に送信し、確認が遅れればより高い手数料に置き換える方法だ。現代のウォレットのほとんどがRBFをサポートしている。

ダスト制限(Dust Limit)

手数料よりも金額が小さいUTXOは経済的に消費できない。このような少額UTXOを**ダスト(dust)**という。

ダスト制限はアドレスタイプと手数料率によって異なるが、一般的に数百satoshi(数円程度)未満の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 ↔ JPY/USD変換で手数料の実際のコストを把握
  • tx.txid.uk TXデコーダー: Rawトランザクションをデコードして実際のサイズ(vbytes)と手数料を確認
  • Sparrow Wallet: ウォレット内でトランザクションサイズと手数料をリアルタイムで表示
  • Bitcoin Core: estimatesmartfee RPCコマンドで目標確認ブロック数に合った手数料率を照会可能

まとめ

ビットコインの手数料は送金金額ではなくトランザクションのデータサイズに比例する。SegWitアドレスの使用、UTXO数の最小化、混雑時間帯の回避で手数料を効果的に削減できる。sat/vbyteの単位を理解し、現在のメンプール状態を確認する習慣がビットコインを賢く使う上で重要だ。

関連記事:

関連記事