LINEで送る
Pocket

bitcoin-mining

ビットコインでサイドチェーンを実装する当たっては、大きく2つの方法があり、それぞれでモチベーションと実装方式が全く異なる。特に大きく異なるのは2 way peg(サイドチェーンからメインチェーンへの資産の引き戻し)の際に許可を与えるのは誰か?という点にある。

  1. Elements alphaによる方法 … マルチシグによる監査を用いており、それらのマルチシグの秘密鍵保有者(監査人)が許可した場合に引き戻しができる。
  2. Drivechainによる方法 … マイナーの投票によって、51%以上のマイナーが許可した場合にのみ引き戻しできる。

前者には監査人への信用を置く代わりに比較的自由にサイドチェーンの形式を決めることや素早い引き戻しを行うことができると言うメリットがあり、後者にはGoxリスクがない — すなわちビットコインそのもののセキュリティ要件を維持したまま、異なる機能を持ったサイドチェーンをデプロイできる — というメリットがある。

しかし後者の場合、ナイーブに実装すると、サイドチェーンの数が増えていくにつれ、維持管理にかかるマイナーのコストが大きくなりすぎるという大きな問題がある。

Drivechainの優れた点は、各々のサイドチェーンのデプロイが「ただのソフトフォーク」としてできるようにする点にある。したがってあるサイドチェーンのブロックが正当なものであると認められるためには、マイナーからの承認が必要でなくてはならない。サイドチェーンとメインチェーンとで別のマイナーが管理するような仕様にした場合、サイドチェーンごとに別のアルゴリズムが必要となり、複雑さが無意味に増大してしまう。単一のマイナーが2つ以上のブロックチェーンを承認できるようにするための「マージマイニング」の仕組みが必要となる。

すでにマージマイニングを行なっているコインにはNamecoinがあるが、この仕組みをDrivechainで使用するには問題がある。

前提知識 … coinbase commitment

coinbase transactionは、ビットコインのブロック中に含まれるトランザクションのうち、必ず一番初めに存在するもので、マイナーが採掘報酬を任意のアドレスに支払うように書き込むことのできるトランザクションである。

これはOutputの形式や数などの点で自由度が高く、例えばOP_RETURNを利用して任意のハッシュデータを含めることができる。
これを利用してマイナーがサイドチェーンのデプロイ、ブロック承認、引き戻し許可の投票等を行うことをcoinbase commitmentと呼ぶ。

Namecoinのマージマイニング

namecoin

Namecoinでは、Namecoinのヘッダハッシュをメインチェーン(ビットコイン)のcoinbase transactionに含め、その状態でメインチェーンのハッシングを行う。

  1. メインチェーンのPoW基準を満たすハッシュの発見に成功した場合、そのまま有効なメインチェーンのブロックとしてパブリッシュする(coinbaseの形式は任意なので、何が含まれていても他のマイナーは有効と判断する)。
  2. NamecoinのPoW基準を満たすハッシュの発見に成功した場合、有効なNamecoinのブロックとしてパブリッシュする。

Namecoinのブロックの検証にはメインチェーンのブロックが必要なので、いずれの場合もメインチェーンのブロックはパブリッシュされる。

問題点

Namecoinの場合は大きな問題が見られないマージマイニングだが、サイドチェーンに使用する際には少なくとも2つの懸念点がある。

1. サイドチェーンの検証をメインチェーンのマイナーが行う必要がある

有効でないサイドチェーンをマイニングすることによる機会損失を避けるため、ハッシングの前にサイドチェーンの署名をメインのマイナーが検証する。この際に、検証に時間がかかるようなブロックをあえてパブリッシュする攻撃や、サイドチェーンの数の増加に伴うスケーラビリティ問題などが発生する可能性がある。

したがって、サイドチェーンのフルノード運営者はメインチェーンのマイナー及びフルノード運営者からある程度独立した状態で、独自に検証を行うのが望ましい。

2. マイニング報酬としての手数料をサイドチェーン上の通貨で受け取る必要がある

サイドチェーンのコインは定義上メインチェーンのものと一対一で交換できるので、一見するとこれは大きな問題ではないように思える。だが、これはマイナーがサイドチェーンを「無視できなくなる」問題を引き起こす恐れがある。

すなわち、もしある特定のサイドチェーンを多くの人が使い、ブロック承認に伴う手数料の報酬が多くなった場合、完全競争下にあるマイナーはそのサイドチェーンのマージマイニングをやめると他のマイナーとの競争に負けてしまうため、やめることができなくなってしまうのだ。

例えば特定のサイドチェーンが「提供する機能の割にポピュラーすぎる」状態、すなわちレガシー化に陥る可能性を示唆している。これは、ビットコイン全体の価値の増大という観点から見ると、マイナー間の競争が局所最適解に入ってしまうという点でASICBoostの問題と構造的によく似ている。したがって、マイナー報酬はBTCの形で支払われなくてはならない。

Blind Merge Mining (BMM)

動機

ビットコインのセキュリティモデルを維持しつつ、マイナーとサイドチェーンのフルノード運営者ができる限り独立して仕事を行えるようにする。言い換えると、メインチェーンとサイドチェーンを「疎結合」にする。あるいはサイドチェーンを「民営化」するものであると言える。

方法

  1. サイドチェーンのフルノード運営者(仮にSimonとする)が、サイドチェーンのTxを集め、検証しブロックを作成する。
    ※ この段階ではこのブロックは「有効」とは判定されず、パブリッシュしても他のフルノード運営者に承認されることはない
  2. Simonは、そのブロックのヘッダハッシュとブロック番号をcoinbaseにcommitmentとして取り込むよう、メインチェーンのマイナー(仮にMaryとする)に依頼する。
  3. Maryがcoinbase commitmentを含むブロックを作成(その際の費用はゼロ)し、パブリッシュする。
  4. Simonはそのブロックを受け取り、自分のブロックと合わせてパブリッシュする。
  5. Simon以外のサイドチェーンのフルノードは、2つのブロックを見比べて、①Maryの作成したメインチェーンのブロックが有効なものであること、②Simonの作成したブロックのヘッダハッシュと、メインチェーンのcoinbase commitmentが一致することを検証する。
  6. 検証に成功した場合、正式なサイドチェーンのブロックとして認められ、その手数料はSimonのものになる。

このままでは、Maryにはcoinbase commitmentを行うメリットが存在しない。SimonがMaryに対し依頼する際に「賄賂(BRIBE)」を送ることで、Maryへの報酬が与えられる。Simon達とMary達がお互いに完全競争下にある場合、この賄賂は「サイドチェーンのブロックの手数料の合計 – ϵ」に近づく。ϵはサイドチェーンの「運営費用」に当たるもので、非常に小さな値となる。

賄賂を送る方法は実のところなんでも良い(極端な話送る必要もない;Maryがサイドチェーンの運営もすることも可能で、その場合実際に賄賂はなくなる)のだが、より確実な送金のため、メインチェーンに新たにOP_BRIBE、ないしはOP_BRIBEVERIFYと言う新しいオペコードを導入することが望ましい。

現時点(2017/07/18)で実装の詳細は定まっていないが、これは
スタックから1. sidechain idと2. 32バイトの値(サイドチェーンのヘッダハッシュ)を読み込み、それが同ブロックのcoinbase commitmentにあることを確認し、存在する場合のみ有効なトランザクションとしてブロックにインクルードされる、というものになる予定だ。

  • ビットコインニュースを毎日お届け!

    BTCNの最新ニュースを毎日お昼ごろお届けします!

  • BTCN公式アカウントをフォロー

    follow us in feedly
シェアする

この記事を書いた人

宮本 丈
宮本 丈