なにかおもしろいこと

なにかおもしろいこと探してます。暗号通貨(ビットコイン)とか、旅行とか

Segwit2xハードフォーク後のコインの分割方法

BitMEXという取引所が、10/13の記事でSegwit2xハードフォークに備えてCoin Splitting(コインの分割)の方法を説明してしました。
面白かったので紹介します

よくわからない部分ははしょったり、自分の理解で書いている部分もあるので正しくは元の記事を見てください。

The SegWit2x (B2X) Hardfork – Protecting Yourself and Your Coins, Part 1: Coin Splitting – BitMEX Blog

 

ハードフォークが発生すると

ハードフォークが発生すると、取引が記録されるビットコインブロックチェーンが2つに分岐します。分岐後は、それぞれのブロックチェーンにそれぞれのマイナーが採掘した取引の記録(ブロック)が追加されていきます。
Segwit2xハードフォークの場合は、元のビットコインのブロックチェーン(BTCブロックチェーン)とSegwit2xブロックチェーン(B2Xブロックチェーン)に分岐します。


Coin Splitting

ハードフォーク発生時点で自分が管理するアドレスにビットコインを持っていた場合、そのアドレスに2種類のコインを持つことになります。Segwit2xハードフォークの場合は、元のビットコイン(BTC)とSegwit2xビットコイン(B2X)の2種類です。

リプレイプロテクションという対策がされていない場合、どちらかのコインのみ(BTCのみもしくはB2Xのみ)を送金したつもりでも、もう一方のコインも一緒に送金してしまう可能性があります。
送金先に自分が管理するアドレスを指定していなければ、意図せずに送金してしまったコインは失うことになります。

また、どちらかのコインのみを送金できたとしても、もう一方のコインが同じアドレスに残っていると、既に送金に使用した送信取引を誰でも再利用(リプレイ)して、もう一方のコインを送金できてしまいます

これを防いで両方のコインを使用するために、同じアドレスに存在するBTCとB2Xをそれぞれ別のアドレスに移動して分割(Coin Splitting)する必要があります。


紹介するのは具体的な手順というよりは、概念的な説明です。
実際にやるにはBTCとB2Xのフルノードウォレット(Bitcoin Core とBTC1)を使いこなす必要があって、ハードルは高そうです。


方法1、トライアンドエラー

一番簡単な方法です。
同じ秘密鍵(分割したいコインがあるアドレスのもの)をインポートした2つのウォレット(BTCウォレットとB2Xウォレット)を使います。
2つのウォレットでそれぞれ違うアドレスに送金します。送金先のアドレスはどちらも自分が管理するアドレスです。
BTCとB2Xそれぞれの送金取引が、各ブロックチェーンに取り込まれれば成功です。
両方のブロックチェーンで同じ送金取引が取り込まれてしまった場合、再度それぞれ違うアドレスに送金します。
これを成功するまで繰り返します。

この方法の問題点はお金と時間のコストがかかることです。
多くの人がこの方法を試みるため、ネットワークが混雑します。このため、失敗しやすく、フィーも高くなります。
また、ブロックチェーンのハッシュパワーが小さくなっている場合は取引が取り込まれるまでに時間がかかります。


方法2、Locktime

Locktimeとは、トランザクションが有効となるブロック高を指定できる機能です。
この特徴を使います。

たとえば、BTCブロックチェーンがB2Xブロックチェーンより5ブロック先行している場合、現在のブロック高をLocktime としてBTCを送金します。
この送金取引は、B2Xブロックチェーン上では次の5ブロックの間、取り込まれません。
送金取引がBTCブロックチェーンに取り込まれた場合、5ブロック期間が終了する前にB2Xを別のアドレスに送金します。

B2Xブロックチェーンブロックのブロック高が先行をしていれば、逆の方法で行います。


方法3、オプトインリプレイプロテクション

B2Xブロックチェーンでは、リプレイプロテクションを追加することが検討されています。この方法では、B2XクライアントがB2Xブロックチェーン上で禁止する送金取引を定義します。BTCネットワーク上でこの形式の送金取引を送信するとB2Xネットワーク上では無効になり、分割が成功します。
この定義は明確になっていません。このオプトインリプレイプロテクションは追加されない可能性もあります。

(10/13の記事なので内容的に古いかもしれません)

 

方法4、すでに分割されたコインを使う

他の誰かがコインの分割に成功していれば、その分割済みコインを使って自分のコインを分割できます。
分割済みコインを自分のアドレスに受取り、分割済みコインと一緒に分割したいコインを送金します。分割済みコインはどちらか1つのブロックチェーン上にしか存在しないため、もう一方のブロックチェーン上では送金が無効になります。

この方法はこれまでに説明した方法よりも簡単に見えますが、送金するコインとして分割済みコインと分割したいコインを確実に指定する必要があります。
また、他の人を待つ必要があるため、できるだけ早く分割したい場合は問題になります。


方法5、取引所にやってもらう

対応する取引所を調べて、ビットコインを送り、取引所が対応してくれるのを待ちます。

カウンターパーティリスクがありますが、すぐに取引できる利点があります。


結論

一番良い方法はこれらの方法を組み合わせることです。
持っているビットコインの一部を方法5で分割し、残りのビットコインを方法4で分割します。

 

 

以上です。
普通ウォレットは矛盾する送金が出来ないようになっていますが、BTCネットワークとB2Xネットワーク用に2種類の矛盾する送金を行うために2つウォレットを使ってました。
ただ、ビットコインネットワーク上では矛盾する送金取引は伝播するのか(どちらか一方が無効と判断されないのか)気になりました。
もししないなら、送金時にも工夫が必要なのかもしれません。

 

 

本ブログでは、ビットコインによる寄付を受け付けています。
寄付していただいたかたにはお礼として、Counter PartyトークンのJAGAトークンをお返しします。

Donate with IndieSquare