ビットコインマージマイニングはもう当たり前(1/3)

本記事では現在普及しているビットコインのマージマイニングについて解説していきます。

ビットコインマイニング入門

ビットコインマイニングとは、シビル攻撃1に対する抵抗力をつけるためのプロセスです。ビットコインが導入しているこのプロセスは、ナカモトコンセンサスの基盤となっています。複雑なハッシュ関数を解きながら、取引台帳に記録するべき正当な取引を選択する仕組みです。最近では、ビットコインマイニングのほとんどがマイニングプールによって行われています。マイニングプールはマイナーへの配当における差異の軽減だけでなく、メンテナンス費用や帯域幅に対する要求を軽減するために存在します。マイニングプールはクライアントサーバーアーキテクチャにならい、マイナーや「ワーカー」(クライアント)がプールサーバー(サーバー)に接続する構造です。プールサーバーではマイニングプールサーバーソフトウェアが動作しています。よく知られたソフトウェアとして、Ckpool、Btcpool、Eloipoolなどが挙げられます。

1…1人が複数のIDを不正に作成し、システムへ攻撃を行うこと。

一般に、プールサーバーは暗号化されていないTCP/IP2上のRPC3チャネルを通じてbitcoind4インスタンスと通信します。このチャネルでは最良のブランチやマイニングするブロックの親ブロックハッシュ等の情報のほか、事前に選択された正当な取引もいくつか含んでいます。これは、「getblocktemplate」と呼ばれるbitcoindのRPCコマンドを使って行われます。プールサーバーは、そのいくつかある取引の中から複数選定し新しいブロックに追加するのです。さらに、数秒に1回ポーリングを行って親ブロックの変化も検知します。新しいブロックを検知する時間を短縮するため、P2Pプロトコルでプールサーバーをbitcoindと結んだり、ブロックの到着を即座に通知する「bitcoind blocknotify command lineオプション」を使ったりすることができます。またプールサーバーは新規作成されたブロックをビットコインに接続して提出するためにまた別のP2Pコネクションを利用することもでき、FALCONFIBREといった高速ブロック転送の中枢とも通信可能です。

2…インターネットで標準的に利用されている通信プロトコル。TCPとIPという2つのプロトコルで構成される。(引用:コトバンク)

3…同じネットワークにある別のコンピューターのプログラムを呼び出す手法。(参考:e-Words)

4…RPCを利用するためにビットコインプロトコルを実装するプログラム。

マージマイニング

マージマイニングとは、あるブロックチェーンを保護するためのマイニングハッシュレートを別のブロックチェーンでも使用する技術のことです。ちなみに、ビットコインと初めてマージマイニングを行った仮想通貨はNamecoinでした。マイニングしたいメインブロックチェーンのどこかに、別のサイドチェーンのブロックID(新規作成されたブロックの暗号ハッシュ)を埋め込むことで行われます。この暗号ハッシュにはマージマイニングの「タグ」と呼ばれる短いテキストやマジックバイトがつけられているため、サイドチェーンがタグの位置を把握することができます。ただし、このタグの位置が正確であることが条件で、メインブロックチェーンのブロックと関連付けられるのはサイドチェーンのうち最大でも1ブロックでなくてはなりません。暗号ハッシュを利用したこのようなリンケージには不正を防ぐ面がある一方で、かつてのデータ暗号化と比べてリンケージのセキュリティー要件が低い等の問題もあります。言ってしまえば、マージマイニングの条件はただ一つ、「2つの異なるメインチェーンのマイニングよりも、メインチェーンにおいてサイドチェーンに関連可能なブロック作成の方が難易度が高いこと」だけです。RSKの場合、メインチェーンはもちろんビットコインであり、RSKはサイドチェーンとなります。現状では、RSKブロック難易度が70ビットセキュリティーなのに対し、ビットコインの難易度は74ビットとなっています。

プルーフ・オブ・ワークプロキシ

マージ・マイニングでは、Bitcoinのブロックヘッダーはプルーフ・オブ・ワークプロキシ(PoW)として作用するに過ぎません。RSKブロックチェーンはBitcoinブロックヘッダーのPoWを読み取り、RSKブロックヘッダーと関連する唯一無二のタグをBitcoinブロック内で探す必要があります。つまりBitcoinブロックのPoWをRSKブロックのPoWに移行するのです。前述のように、RSKブロックチェーンの難度はBitcoinブロックチェーンの難度よりも低いため、Bitcoinのブロック生成難易度を満たさなかったPoWパズルがRSK PoWで利用できることになるでしょう。もう少し深く掘り下げてみましょう。ブロックチェーンでは、全てのブロックの難度を計算します。それぞれのブロックの承認時間が一定になるように、それまでに作成されたブロックの難度によって新しいブロックの難度も決められるのです。その中で、難度は、難度と反比例する256ビットの符号なし整数「ターゲット」として置き換えられます。

同日の、マージ・マイニング・ブロックチェーンのおおよそのターゲットです。RSKのブロックは20倍の頻度で作成されるため、難度は比較的低く、それに反比例するターゲットは高くなります。

暗号学的ハッシュ関数のハッシュ値は予測が困難であるため、ブロックヘッダーIDと呼ばれるブロックヘッダーの暗号学的ハッシュ関数が一定の確率変数を示すと仮定します。これは理論的には必ずしも正しいとは言えませんが、Bitcoin(SHA2564を使用したダブルハッシュ)やRSK(Keccak5)で使用されるハッシュ関数を反転させる実用的手法が存在しない現在においては、有効な理論として実践に役立っています。このハッシュ値が符号なし数値として判断された場合、ブロックがPoWパズルの解答を示すためにはターゲットよりも低い数値でなければなりません。つまり、ターゲットが低いほど、PoWパズルの難度が高くなるのです。

4…任意の長さの原文から256ビットのハッシュ値を算出することができる暗号学的ハッシュ関数。(参照:e-Words)

5…SHA256同様、暗号学的ハッシュ関するの一つ。

SPVプルーフ

サイドチェーンは、完全なBitcoinブロックに対してBitcoinヘッダーのPoWの照合やRSKヘッダーとの関連付けを要求しません。両者の関係はSPV(Simple Payment Verification)プルーフ(マルクルツリー6メンバーシッププルーフから構成される)によって証明されます。以下の図は、プルーフ内各所のつながりを示したものです。青の枠はSPVプルーフ内の情報を示しており、RSKブロックにも並行して送信されます。

6…大きなデータの要約結果を格納する木構造の一種で、データ検証を行う際に用いる。

(画像)ビットコインSPVプルーフによるマージ・マイニングPoWプルーフの圧縮

原文:RSK: Bitcoin Merge Mining is Here to Stay