今週はビットコインのトランザクションの作り方によってどのように手数料が変わってくるかについて寄稿させていただきます。

ビットコインの送金手数料は定期的に出てくる話題ですが、そこをうまく節約する方法を実践している方は比較的少ないように思います。事業者にとって特に重要な課題ですが、一般ユーザーももちろん手数料を節約することができますので、手数料相場が高いときなどは参考になるかもしれません。

また、途中でElectrumでの設定方法などを挟みますが、他のウォレットでもそれぞれの機能があれば使えます。(使えないウォレットもあります。)

前提知識:ビットコインの送金手数料決定の仕組み

ビットコインの残高管理の設計は「UTXOベース」といいます。UTXO(Unspent Transaction Output: 未使用トランザクション出力)とは「このトランザクションでこの金額を受け取ったが、まだ支払いに使っていない」というコインの所有権に関する情報です。あなたのビットコイン残高は、あなたが所有するUTXOの合計で求められます。(ウォレットによって異なりますが、Electrumなら「コイン」というタブに表示されています)


ビットコインのトランザクションはinput(入力: 送る側)とoutput(出力: 受け取る側)からなりますが、入力側で自分が現在持っているUTXOを複数消費したり、出力側で送金先が受け取る新たなUTXOを複数作成したりできます。

なので、例えば1つのトランザクションに複数の支払いをまとめることもできますし、手数料が安いときはたくさんのUTXOをまとめて後日使いやすいように1つに統合することもできます。

なお、ビットコインの限られた送金能力を活用するにあたって、より多くのブロックスペースを使うトランザクションはそれだけ手数料を払わないと取り込まれません。つまり、送金をなるべく少ないデータ量で表現することが手数料の削減につながります。

節約方法① その時間の手数料相場を確認し、優先度を考える

これはデータ量を減らすこととは関係なく、無駄遣いを減らす方法です。上に述べたとおりビットコインの手数料はブロック容量の対価なので、satoshi/byteまたはsatoshi/vbyteで表現します。


手数料設定の参考になるサービスがいくつかあるので、私は主にそれを見て決めてます。急いでいて次のブロックに含まれたいなら上から1MB以内に入ることができそうな手数料を設定しますし、1日とか1週間待ってもいいから節約したいときは、直近1日とか1週間で一番安かった金額を見ます。気持ち多めに払うと安心ですね。


なお、Electrumでは「ツール」→「設定」→「手数料」タブから「手数料を手動で編集」にチェックを入れると自由に設定できます。ウォレットを参考にするなら、「手数料の見積もり」は「Mempool」のままでいいでしょう。

現在のメモリプールが見やすい: https://mempool.observer/
過去の推移が見やすい: https://jochen-hoenicke.de/queue/#0,1w
(いずれも単位はsatoshi/byte)

節約方法② Segwitアドレスを利用する

Segwitアドレス、可能であれば特にbc1から始まるアドレスを使うことでトランザクションのサイズを削減し、手数料を節約することができます。3から始まるSegwitアドレスでもある程度は節約できます。たったこれだけで節約効果が3割に及ぶことがあるので、侮れません。

Electrumでも、ウォレットをセットアップするときにアドレスのフォーマットとしてNative Segwit (bc1~)を選択することができます。
※bc1から始まるアドレスに対応していないウォレットやサービスがまだあるので注意

節約方法③ 送金を組み合わせてデータ量を減らす

複数の送金先に一度に送金するバッチングは効果的です。例えば、自分のウォレットから3つの取引所に送金したい人は、3つのバラバラのトランザクションを発行するより、1つのトランザクションで済ませたほうが経済的です。

意外とこれが簡単にできないウォレットが多いのですが、Electrumではメニューの「ツール」→「複数送金」から楽勝でできます。また、少額のUTXOをたくさん持っている方は、多くの場合複数使わないと大きな支払いができないので、手数料の影響が大きいです。

なので手数料が低いときに複数のUTXOを1つにまとめるコンソリデーションというテクニックを使うのが便利です。これはコインコントロール機能という、「どのUTXOを使うか」選べる機能がついているウォレットでやるのがおすすめです。余談ですが、この機能がついていれば悪意ある人に「汚れた」小銭を送られても意識して自分の残高に混ぜないようにできます。

Electrumでは、「コイン」タブで複数のUTXOを選び、右クリック→「支払」でまとめることができます。まとめる先のアドレスは「アドレス」タブから未使用のアドレスを選びましょう。

注意点

バッチングや少額UTXOの統合はブロックチェーン解析された場合に個別のアドレスやトランザクションが簡単に結びつくため、手数料節約にはなりますが、プライバシー面では悪手と言えます。

プライバシーを優先するなら手数料はコストとしてかかることを覚えておきましょう。Electrumでは「ツール」→「設定」→「取引」タブに最低限のプライバシー関連の機能があるので、確認してみて下さい。マウスオーバーで解説してくれます。

最後に

これらの節約方法が事業者の間でどんどん取り入れられた結果、現在ビットコインでは2017年末と同じくらいのトランザクション数を、手数料があまり高騰せずに処理できています。

しかし、まだCoinbaseやBitMEXなど、非効率なトランザクション発行でネットワークに負担をかける主体がいることも事実です。特にBitMEXが出金処理をする日本時間の22時前から数時間は大変混み合います。普段は意識する必要がなくとも、今回紹介したテクニックを徹底して、手数料が数百円以上かかるような状況になってきた場合に備えたいと思います。