転勤族でもできる仮想通貨

仮想通貨でセミリタイアを狙う転勤族エンジニアが色々な通貨や関連する技術について、誰が見ても分かりやすいように解説しています

リプレイプロテクション(Replay Protection)とは?Segwit2x分裂に伴うリプレイ攻撃の危険性を解説

f:id:parato:20171101125906j:plain

どうも、ぱらと(@ParatoCrypto)です('ω')ノ

今回はいよいよ今月に迫ったSegwit2x分裂に際して懸念されているリプレイアタックの対抗策、「リプレイプロテクション」について書きたいと思います。

そもそもSegwitとは?という方は↓をご参照ください、概念から理解しやすさを優先して解説しています。

 

リプレイアタック(攻撃)とは?

まずはリプレイアタックについて説明したいと思います。

リプレイアタックとはハードフォークによってブロックチェーンが分岐した際、本来であれば分岐したチェーン毎にトランザクションは処理されますが、1つチェーンでのトランザクション処理が他のチェーンでも有効になってしまうことを指します。

ブロックチェーンを説明するのに有名な画像を例に説明したいと思います。

f:id:parato:20171105134629p:plain

画像で示されている「Bitcoin Cash Chain(BCH)」と「Segwit Chain(BTC)」はハードフォークにより完全に別なチェーンとして分裂しています。

そのため、BCHで発生したトランザクションの処理はBTCのチェーンには無関係であるのが正しい状態です。

しかし、リプレイアタックが起きるとBCHで発生したトランザクション処理の際、BTCのチェーンでも同様のトランザクション処理が有効になってしまいます。

つまり、BCHを送金したつもりがBTCも一緒に送金してしまっていた!ということになってしまいます。

※例として出していますがBCHはリプレイプロテクション実装済なのでこのような現象は起きません。

 

リプレイアタックが起きると何が問題なのか?

Gox(消失)の可能性

1つのチェーンでのトランザクション処理が複数のチェーンで有効となるため、送信先が対応していない仮想通貨を送信すると消失してしまう可能性があります。

先ほどの例を使って説明すると1.0BTCで商品を購入しトランザクション署名を有効化して送金した場合、BCHも同時に送金されてしまいます。

しかし、受け取り側ではこの2つを区別することができないので対応しているBTCだけを受け取りBCHは消失してしまいます。

仮に受け取り側が両方に対応していてBTC/BCH両方受け取れたとしても送信側は2種類の通貨分を渡してしまうことになります。

 

取引所への攻撃例

ここでも先ほどの例を使って説明すると、リプレイプロテクションが施されていない取引所のウォレットからBTCを別のアドレスに送金するとします。

すると取引所でのトランザクション処理ではBTCとBCHを別々に区別できないのでBCHも同量同じアドレスに送金されます。

BCHを別のウォレットに移してからBTCを取引所に戻して同じ作業を繰り返すと取引所に保有されているBCHがなくなるまでBCHを引き出すことが可能です。

※繰り返しになりますがBCHは安全です。

 

リプレイアタックを防ぐリプレイプロテクション

このような危険を避けるためにビットコインからハードフォークする仮想通貨はリプレイプロテクションを実装することが必須となっています。

具体的な対策としては

 

トランザクションを処理するマイナーがトランザクション情報を区別できるようにする

・特有の電子署名を付与する

 

実際にトランザクションを処理するマイナーがBTCなのかBCHなのか区別できればこの問題は起きないですね。

また、BCHを送金する際にはBTCとは異なる特有の電子署名を付与することでBTCの送金の際にBCHが送金されることを防ぐことができます。

これらは実際にBCHがとっているリプレイプロテクションの内容でもあります。

しかし、トランザクションを区別するにはマイナーの数が少ないと成り立ちません。

また、特有の電子署名を付与することはウォレットの設計を専用にする必要があり後から実装することは困難です。

そのためハードフォーク後の通貨付与前に必要な対策を取る必要があるんですね。

 

BTGは対策が遅れ付与が先送りになっています。

先日BCHに続いてハードフォークしたBTG(ビットコインゴールド)ですが、リプレイプロテクション実装するとしてハードフォークしながらも実装が遅れておりまだ付与されていない状況です。

テスト自体は順調のようなのでもうすぐ付与されるみたいですけどね!

 

Segwit2xのハードフォークではプロテクションが不十分な可能性有

今月にハードフォークするSegwit2x(B2X)は当初リプレイプロテクションは実装しないと発表していましたが、現在は実装することとして開発を進めているようです。

但し、BCHやBTGとは異なる方法でリプレイプロテクションを実装するようで、対策としては不十分では?という声も上がっているようです。

そのため、BTGの際にはあまり騒がれなかったですがB2X分裂の際は仮想通貨界隈に大きな混乱を招く可能性があります。

既にB2Xの付与を待たずしてBTCを他の通貨や法定通貨に換えて避難している人も多数いるようです。

どのような対策をするかは私たち自身の責任で決めなければいけませんが、安易にBTCをホールドしておけばB2Xも貰えて儲かる!という思考は捨てた方がいいかもしれません。

 

ではでは