前回の記事では、ハードフォークについて解説をしました。
その記事の中で「リプレイアタック」という不正行為を少し紹介しましたが、少し難しい内容だったのでまだ理解できていない方もいると思います。
ハードフォークとは?技術的な仕組みから注意点までわかりやすく解説!
そこで今回は改めて例を用いて2つケースのリプレイアタックが発生する流れを説明します。
例として仮にBitcoinCash(ビットコインキャッシュ)にリプレイアタックの対策がされていなかったケースを例として説明します。
リプレイアタックが起きる原因
前回の記事でも少し説明しましたが、改めてリプレイアタックについて説明します。
リプレイアタックとは、仮想通貨がハードフォークした後も、それぞれのトランザクションはお互いのブロックチェーンで有効になってしまうことを利用した不正行為です。
具体的には、片方のブロックチェーン上で作られたトランザクションをコピーして、もう片方のブロックチェーン上に流すことで、それぞれのブロックチェーンで送金があったことにします。
なおリプレイアタックが起きてしまう主な原因は2つあります。
- プロトコル(ブロックチェーン)のルールが変更さても、それぞれのルールに沿ったトランザクションであればどっちのブロックチェーンでも有効になってしまう
- ユーザーによって作られたトランザクションは、既に秘密鍵で署名がされているので、コピーされても不正なトランザクションにはならない
では代表的なリプレイアタックの例を2つ紹介します。
【例1】ユーザー間同士の送金でリプレイアタックが行われるケース
まずはユーザー同士の送金でリプレイアタックが発生するケースを見てみましょう。(イメージしながら読んでみてください)
登場人物は以下の3人です。
・Aさん
・Bさん
・悪者Z

- まずAさんが「1BTCをAからBに送る」内容のトランザクションをビットコインのネットワーク上で作成します。
- 次に悪者Zはそのトランザクションをコピーして、ビットコインキャッシュのネットワークに送信します。
- そのトランザクションがビットコインキャッシュのブロックチェーンに書き込まれ、「1BCHをAからBに送る」という記録ができます。
上記の流れで、AさんはBさんに1BTCを送ったつもりが、1BTC+1BCHを送ったことになってしまい想定以上に残高も減ってしまいます。
【例2】取引所からの出金でリプレイアタックが行われるケース
次に取引所に対してリプレイアタックが行われるケースを解説します。
登場人物は以下の通りです。
・取引所
・悪者Z

- 悪者Zは取引所にあらかじめ預けていたビットコインがあり、「1BTCを取引所からZに出金」する依頼を取引所にします。
- 取引所はそのトランザクションをビットコインネットワーク上で作成します。
- 悪者Zはそのトランザクションコピーしてビットコインキャッシュのブロックチェーン上に送信します。
- トランザクションがビットコインキャッシュのブロックチェーンに書き込まれます。
その結果、ビットコインキャッシュのネットワーク上で「1BCHを取引所からZに送る」という記録ができます。 - 悪者Zはもう一度1BTCを取引所に預けて、上記の流れを繰り返します。
上記の流れで、悪者Zは取引所から1BCHを何度も受け取ることができてしまいます。
**つまり悪者Zは手元にビットコインがあれば、それを取引所に何回も出し入れすることで、無限にビットコインキャッシュを受け取れてしまうのです。
**
ではリプレイアタックの被害に合わないためにはどうすれば良いのでしょうか?
次の項目で説明します。
リプレイアタックの対策方法
仮想通貨にハードフォークが発生した時に、リプレイアタックの被害にあわないようにするには、
安全が確認できるまで送金をしないことが有効な手段です。
ハードフォーク前後に取引所から告知されることが多いので、それを読み逃さないようにしましょう。
なおウォレットからの送金は、ウォレットの提供元からのアナウンスを待ちましょう。
リプレイアタックの被害意外にも、ウォレット自体が新たなルールに対応していなく、そのためGOXしてしまう(2度と取り戻せいない)リスクも考えられます。
またもしハードフォークした後の仮想通貨自体に「リプレイプロテクション(リプレイアタックされないための対策)」がされていない場合は、その仮想通貨を使用しないことをオススメします。
リプレイアタックのまとめ
この記事ではリプレイアタックについて解説をしました。
最後に重要なポイントを改めて挙げます。
- リプレイアタックとはハードフォークした仮想通貨において、片方のブロックチェーンでした送金をしていないのに、もう片方のブロックチェーンでも送金をしたことにしてしまう不正行為です。
- リプレイアタックが起きる原因は、ハードフォークによってブロックチェーンのルール変更が行われても、それぞれのルールに適応したトランザクションは両方のブロックチェーンで有効となってしまうからです。
- 作ったトランザクションを書き替えられることはありません。
- 取引所の場合、無限にリプレイアタックをされ被害額に上限がなくなってしまいます
- リプレイアタックの被害にあわないためには、取引所やウォレットの開発者からのアナウンスを待ちましょう
以上がリプレイアタックの大事なポイントです。
リプレイアタックの仕組みを理解し、自己責任で仮想通貨を守れるようになりましょう。