2026年は夏以降、数年ぶりに話題となるビットコインのフォークコインがいくつか誕生しています。ビットコイン研究所でも取り上げたいわゆるBIP-110チェーン(Bitcoin Blake2BやBTCB2、XBTなど様々な名前で呼ばれています)のほか、10月にはBIP-300とBIP-301(ドライブチェーン)を実装したEcash(ECX)と呼ばれるフォークコインの誕生も予定されています。

どのフォークコインも大したユーザー人口をもたない(と予想される)ため、リプレイプロテクションと呼ばれるビットコインとの機能差分が実装されていません。そのため、フォークコインを送金するトランザクションを配信すると、意図せずビットコインも同じ宛先に送ってしまう恐れがあります。

そんなリスクにも関わらず、今日はなぜフォークコインがあえてリプレイプロテクションを実装しないのか、その理由について解説し、具体的にBIP-110チェーンとEcashチェーンのフォークコインの安全な取り出し方について説明します。

💡
ビットコイン研究所で過去に何度か取り上げているeCashというブロックチェーンを使わない残高管理技術がありますが、今回のフォークコインとは全く無関係の別物です。
💡
本稿で紹介するコインの取り出し方は実行方法を誤ると誤送金やセルフGOXにつながる可能性があります。本記事の目的は情報提供のみとし、それを元に実際にビットコインやフォークコインを送金する場合は自己責任にてお願い致します。

リプレイプロテクションとは

そもそもリプレイプロテクションとはなぜ必要なのか、より詳しく見ていきます。

リプレイ攻撃

ビットコインを送金するときは、署名済みのビットコイントランザクションという送金データをネットワークに配信して、マイニングされるのを待つことになります。このとき、ネットワークの各ノードは受信したトランザクションが正当なものかをビットコインのコンセンサスルールなどに照らし合わせて検証します。

さて、仮に「ビットコインからの変更点がまったくないフォークコイン」を考えましょう。(なぜフォークしたのかは一旦置いておきます。)このフォークコインを送るトランザクションを作ると、トランザクション内容はビットコインを送るトランザクションと全く同じになります。

トランザクション形式やコンセンサスルールに大きな変更がなければ、ビットコインとフォークコインのトランザクションは互換性があり、両方のチェーンで有効な場合がある

もしフォークコインのトランザクションを作成し、それをフォークコインのマイナーのみが採掘すれば、もちろんフォークコインだけが送金できるでしょう。しかし、もし誰か1人でもそのトランザクションを見てビットコインのネットワークにも配信してしまうトラブルメーカーがいたら、ビットコインも送金されてしまう可能性があります!もちろん逆に、フォークコインの存在を知らずにビットコインを送金すると、知らずのうちにフォークコインも送ってしまうかもしれません。

これをリプレイ攻撃といいます。攻撃するインセンティブがあるのは「もう一方のチェーンのコインも受け取りたい送金先ユーザー」と、「もう一方のチェーンでトランザクション手数料を手に入れられるマイナー」が主だといえるでしょう。

リプレイ攻撃とは?攻撃の仕組みや対策を解説
この記事では、サイバー犯罪者が行うリプレイ攻撃についての解説や、被害に遭わないための対応策を詳しくご紹介します。

一般的なセキュリティ用語としてのリプレイ攻撃は、正規のメッセージを保管して、あとでまた配信することで正規の発信者になりすます攻撃のこと。ビットコインの場合は、あるチェーンでの送金を送金者以外のユーザーが別のチェーンでまた配信することを言うことが多い

対策としてのリプレイプロテクション

ビットコインにおけるリプレイ攻撃の対策、つまりリプレイプロテクションとは、「互いに、片方のチェーンで有効なトランザクションがもう一方のチェーンでは無効」というものです。これがあればフォークコインを失うことなくビットコインを使い続けたり、安心してフォークコインだけを送金したりできます。

リプレイプロテクションには2種類あります:

  • プロトコルレベルのリプレイプロテクション。ビットコインとトランザクションの形式を具体的に変えることで、フォークコインのトランザクションとビットコインのトランザクションの互換性をなくす。全ユーザーを保護。
  • 手動のリプレイプロテクション。片方のチェーンでのみ有効なトランザクションを作ることで自分のウォレットを守る。実行は各ユーザーに委ねられている。

リプレイプロテクションがない、というときは一般的にはプロトコルレベルの話をしています。その場合、各ユーザーが手動でリプレイプロテクションを得る必要があるといえます。

なぜリプレイプロテクションなしでリリースされる場合があるか

ここまで読むと、リプレイプロテクションがないとユーザーに不便が強いられたり、気づかずのうちにフォークコインやビットコインを失うリスクに晒されるという強烈なデメリットがあると感じるでしょう。実際、このことを知らないユーザーの多くはビットコイン送金時に結果的にフォークコインも一緒に送金してしまっていると思われます。

それでもあえてプロトコルレベルのリプレイプロテクションを実装せずにフォークコインがリリースされる理由は、トランザクションの形式をビットコインと全く同じにしておけば、既存のビットコインウォレットをそのままフォークコインにおいても使うことができるからです。特にユーザー層が小規模なフォークコインにとっては、ウォレットの個別対応が期待できないため本家ビットコインと同じ周辺ツールを利用できるのは大きな魅力でしょう。

プロトコルレベルのリプレイプロテクションは、必要なければ実装するデメリットのほうが大きいと考える見方がある

つまり、リプレイプロテクションを実装しないことで、逆に既存のビットコインのウォレットやOSSなどをそのまま流用することができて使い勝手が保たれやすいという力学が、リプレイプロテクションなしでのリリースにつながりやすいという側面があるといえます。

フォークコインを取り出すために必要なもの

さて、ここからは具体的にBIP-110チェーン、ECXチェーンのコインを保有するビットコインから分離する方法を見ていきます。そのためにはいくつか満たす必要がある前提があります。

セルフカストディが前提

まず、取引所などに預けていて自分でトランザクションを作成できないコインはどうしようもありません。取引所に対応をお願いすることはできても、コスパやリスクの面で大抵は対応してもらえないでしょう。よほど大規模なフォークコインでなければ、取引所の対応は期待できません。

また、後述のノードやブロックエクスプローラーを使って、実際に自分がフォークコインを保有しているか確認しましょう。一般的に、フォークした時点で保有しているUTXOがフォークコイン側にもコピーされているはずです。もしかすると、その後に新たに送られてきたり、知らずのうちに送ったりしている可能性もあります。

ノードやブロックエクスプローラーが必要

ビットコインは自分でノードを運用している方も多く、ブロックエクスプローラーも選択肢が豊富ですが、フォークコインは往々にして圧倒的に規模が小さいので、ノードを実行する選択肢が限られていたり、ブロックエクスプローラーが存在しなかったりします。しかし、フォークコイン側での残高の確認やトランザクションの配信にこれらが必要なので、使えるものを用意します。

トランザクションのリプレイによって、フォークコインの発生日以降にも気づいてない人や取引所から送られてきている可能性もあるので確かめましょう。

ノードではなくブロックエクスプローラーを使う場合はプライバシー面でのデメリットもあるので、プライバシーを重視する方は自分でノードを立てるなど対策しましょう。その場合はSparrowをフォークコインのノードに向けるなどの工夫が必要になります。

チェイナリシスは何を見ている?ビットコイン送金のプライバシー漏洩ポイントと守り方
ビットコイン送金のプライバシーはどこまで見られている?チェイナリシスなど解析企業が使う関連付け手法と、一般ユーザーが取れる具体的な対策を解説します。

市場価値

最後になってしまいましたが、そのフォークコインがどこかで取引されている、あるいは取引される予定があり、取り出すリスクと手間に見合った市場価値がついていなければ、わざわざ取り出す必要はないかもしれません。手順を間違えるリスク、プライバシーのリスクなど様々な面を考慮すると、損益分岐点がけっこう高いと感じる方もいるでしょう。

参考までに、執筆時点でBitcoin Blake2Bは1枚あたり$600ほどで取引されているようです。ECXは本番のリリースが行われていないので、意味のある流動性で価格はついていません。

Bitcoin Blake2B (BIP-110)の取り出し方

Bitcoin Blake2B(BIP-110チェーンのコイン)の場合はプロトコルレベルのリプレイプロテクションは存在しませんが、フォーク後に難易度をリセットした経緯でブロック高がビットコインより数千ブロック先行しています。これを利用して手動でリプレイプロテクションをつけることができます。

この解説で使うツールは下記です:

・ブロックエクスプローラー兼トランザクション配信メカニズム:Mempool.guide (Bitcoin Knotsノードを実行しない場合に必要)
・ウォレット:Sparrow Wallet

Sparrow Walletはアドバンスユーザー向けのビットコインウォレットとして定評があります。過去記事でも紹介しているのでぜひご覧ください。

Sparrow Walletのススメ | ビットコインの技術に詳しくなりたい上級者向けPC用ウォレット
ビットコインの上級者ユーザーや技術者に評判のよいSparrow Walletを紹介する記事です。ウォレットの作成方法、マルチシグやハードウェア対応についての説明のほか、新しいプライバシー機能であるSilent Paymentsやトランザクションのプライバシー面の最適化について解説します。

まずは、Sparrow Walletを開きます。ブロック高961,632時点で保有していたUTXOがBIP-110チェーン側にも複製されているので、該当するUTXOがどれかを確認しましょう。また、それ以降に受け取ったUTXOにも、場合によってはリプレイ攻撃によってBitcoin Blake2Bが着金しているかもしれないので、それも確認対象に含めましょう。

Sparrow Walletのトランザクション一覧画面から、フォーク時点で保有していたUTXOやその後に受け取ったUTXOのトランザクションIDを確認する。

次に、Mempool.guideや自分のBitcoin Knotsノードを使って、それらのUTXOが本当にBitcoin Blake2B上に存在しているか確かめましょう。もし存在していなかったら、トランザクションを作るときにそのUTXOは使えません。

UTXOはトランザクションID:序数という形なので、トランザクションIDで検索してまだフォークコインが動いていないことを確認する。出力の横に緑色矢印が表示されていればOK

フォークコインを保有していることが確認できたら、次は安全に送金する方法です。

ビットコイントランザクションにはnLocktimeという、「このブロック以後で有効」という未来にしかトランザクションを利用できなくする機能があります。このnLocktimeを、BTCB2しか到達しておらず、ビットコインにとっては十分先のブロック高に設定することで、一定期間の間はリプレイ攻撃を防ぐことができます。(BTCB2側でのみ有効なトランザクションを作れる)

BTCB2の場合はたまたまBTCと数千ブロックもブロック高が異なるので、手動のリプレイプロテクションにnLocktimeを使うことができる。例えばこの画像では、nLocktimeを975,813に設定したトランザクションを作ると、BTCB2ではすぐに有効だが、BTCでは1ヶ月以上先になるまで使えないトランザクションができる。それまでの間に、BTCは別のトランザクションで別のアドレスに送ればよい

したがって、手順としては

1.BTCB2でしか有効でないようなnLocktimeを設定し、BTCB2を送金する
2.BTCB2の送金が十分な承認数に達したら、各トランザクションで消費したUTXOの最低1つをBTC側で別のトランザクションに使う

を実行することになります。Sparrow WalletでのnLocktimeの設定は、トランザクション作成画面の最後のページで、Detailのタブの中にあります。下記画像を参考にしてください。

トランザクション作成画面でCreate Transactionを押してから、この画面で”Detail”に入ります
このAbsolute Locktime>Blockという数値を、BTCB2のブロック高に設定します。BTCのブロック高より大幅に進んでいることを再確認しておきましょう

こうやって作って署名したトランザクションを配信すると、ビットコイン側にはまだリプレイできないので、そのうちBTCB2側でのみ送金が完了します。

💡
ミスがあってBTCも送金された場合に備えて、コインの分離時は自分の管理下にあるウォレットアドレスに送ることを推奨します
必要な署名を加えた後、Sparrow画面下部にある16進数のテキストデータ(トランザクションのデータ)をコピーし、ブロックエクスプローラー下部にある「ブロードキャストトランザクション」ページから配信する

ただし、このままでは数十日後にビットコイン側でnLocktimeに到達してトランザクションがリプレイされる可能性があるので、それまでにBTCB2を送るトランザクションで消費したUTXOのうち少なくとも1つをBTC側でも自己送金して、リプレイできないようにしてしまいましょう。難しいと感じたら、(プライバシー面ではデメリットがありますが)とりあえずBTCを全額自己送金するのが安心です。

ECXの取り出し方

ECXで使うツールは下記です:

・ブロックエクスプローラー:
https://explorer.beta.ecash.ninja/ (967,680で分岐したBetanet)
・ウォレット:Sparrow Wallet

本番でのフォークはまだですが、ECXは練習用にハードフォークを2回行っているので予行演習的に取り出すことができます。1回目のハードフォークで生まれたAlphanetはすでに停止しているので、今から取り出すことはできなさそうです。ECXの場合はプロトコルレベルのリプレイプロテクションと呼べるほどのものではありませんが、手動でのリプレイプロテクションに活用できる小さな仕様の違いが用意されています。

ECXには、先ほども出てきたnLocktimeをちょうど499,999,999に設定すると(絶対タイムロックとしては許容最大値)トランザクションがいつでも有効になるという小さなプロトコル変更が導入されているので、nLocktimeを499,999,999に設定したトランザクションを作成すればビットコイン側では当面無効なトランザクションを作ることができるわけです。

Sparrowには未来になるまで使えないよと警告されますが、ECXでのみ今すぐ使えます

前回同様、ブロックエクスプローラーのページからトランザクションを配信しましょう。

BTCB2の場合と同様、nLocktimeに到達するとリプレイが可能になってしまうので、その後にECX側のトランザクションで消費したUTXOのうち少なくとも1つをBTC側でも自己送金するのが厳密にはよいです。(不安なら全部のUTXOを送金してもよい)

しかし、nLocktime 499,999,999の到達は約9500年後の話なので、実際は自己送金しなくても大した問題ではないでしょう。それでもベストプラクティスとして自己送金しておいたほうがいいと思います。

このように、Sparrowユーザーであれば小さな工夫でフォークコインをビットコインから分離することができます。

フォークコインの取り出しで考慮すべきリスク

先述しましたが、フォークコインを取り出すのにはいくつかリスクが伴うので、それに見合ったリターンが得られる見込みの場合のみにとどめたほうがよいでしょう。

プライバシーリスク

ビットコイン側、フォークコイン側でUTXOを消費する際に、Common Input Ownership Heuristicなどの手法で自己資金の全貌を第三者に知られるリスクがあります。

BTCB2やECXチェーンの送金履歴を収集してBTCの送金履歴の拡張として扱うことは容易です。なぜなら、フォーク時のコインの保有者は同一とみなせるためです。詳しくはブロックチェーン分析とビットコインのプライバシーについての過去記事をご覧ください。

チェイナリシスは何を見ている?ビットコイン送金のプライバシー漏洩ポイントと守り方
ビットコイン送金のプライバシーはどこまで見られている?チェイナリシスなど解析企業が使う関連付け手法と、一般ユーザーが取れる具体的な対策を解説します。

セルフGOXリスク

上記例ではnLocktimeの設定を間違えると、BTCチェーン側で同じトランザクションをリプレイされてしまい、BTCB2やECXを送ろうとした相手にビットコインまで送ってしまう恐れがあります。返してもらえるとは限りません。なので、フォークコインを分離するトランザクションでは自分の保有する新規アドレス宛に送りましょう。

もちろん、通常の送金と同じ送金先や金額の確認も必須です。

GOXリスク

また、せっかく分離した後に、儲けに目がくらんで持ち逃げリスクの高い怪しい取引所やウォレットに送ってしまうなど騙されないようにしましょう。

まとめ

本稿ではビットコインのフォークコインがリプレイプロテクションを実装することの意味と、最近のフォークコインが実装していない理由を解説しました。また、BTCB2やECXといった最近のフォークコインについて、ビットコインから安全に分離する方法をSparrow Walletを利用して示しました。ご参考になれば幸いです。

ビットコインやフォークコインの送金時は内容や宛先をよく確認し、送金ミスに細心の注意を払い、自己責任にて実行するようお願い致します。