『マスタリング・イーサリアム』の翻訳に参加しました。

ビットコインキャッシュのEDA(緊急難易度調整アルゴリズム)について

プロジェクト紹介

ビットコインキャッシュは、ビットコインからのフォークして誕生したコインで、ビッグブロックを志向しています。PoWアルゴリズムは、プロトコルからは独立した存在であるマイナーからハッシュパワーを供給されなければブロックを採掘することができません。ジェネシスブロック(最初のブロック)から作られたコインであれば事情は別ですが、ビットコインキャッシュのように別のコインからのフォークによって誕生したコインの場合、フォーク直後は元のコインと同じ採掘難易度が設定されているため、十分なハッシュパワーがなければブロックを採掘することができません。つまりネットワークとして全く使いものにならないということです。

そのためビットコインキャッシュは緊急難易度調整アルゴリズム(EDA)を内蔵しており、採掘難易度に比してハッシュパワーが著しく低い場合に、採掘難易度の調整が行われるような仕組みになっていました(11月13日のハードフォークにより現在このシステムは修正済みです)。ビットコインの難易度調整は2016ブロック(約2週間)ごとに行われますが、難易度調整を行うためには2016ものブロックを採掘しなければならないため、ハッシュパワーが低すぎると難易度調整を行うためのハッシュパワーさえ用意できない「服を買いに行くための服がない(※)」状態に陥ります。

※服の方の問題はZOZO SUITの登場によって今後解決に向かうでしょう。
【ZOZOSUIT】服が人に合わせる時代へ – ZOZOTOWN

そのためビットコインキャッシュには生存率を高めるためのEDAが用意されていたわけです。このEDAは採掘難易度の調整が極端で、ビットコイン側のネットワークにも影響を及ぼし、ブロックの乱掘によるBCHの価値の希釈も発生させましたが、ビットコインキャッシュの生存という点においては上手く機能しました。先述の通り現在EDAは使われていませんが、今後のフォークにおける一つのケーススタディとして面白い題材だと思いますので、本記事ではEDAについて簡単にまとめてみます。

急激な採掘難易度の変化

Bitcoin, Bitcoin Cash Difficulty chart

上の図は、青線がビットコインの採掘難易度、赤線がビットコインキャッシュの採掘難易度を表しています。 8月1日に誕生したビットコインキャッシュの採掘難易度が日々調整されていき、10日後には約13%程度にまで下落していることが分かります。

EDAの仕組みについては後述しますが、このグラフからビットコインキャッシュの採掘難易度の上下がかなり激しいことが見て取れます。マイナーは「どのコインをマイニングすれば一番利益を出せるか?」を基準にマイニングするコインを選ぶため、ハッシュパワーを多く集めるには収益性が重要になります。そして収益性はコインの価格と採掘難易度によって決定されるので、採掘難易度の変動が激しくなれば、マイナーにとっての収益率もそれに伴って激しく上下することになります。

以下のマイナーにとっての収益率グラフをご覧下さい。
Coin Dance | Daily Bitcoin Cash Profitability Against Original Chain Summary

最近の収益性の変化は、BCHの価格の乱高下に拠る部分もあるのですが、マイナーにとってのBCHの収益性が大きく変化していることが分かります。マイナーは基本的に経済合理性に基いて動くので、ビットコインキャッシュの方が収益性が高ければビットコインキャッシュを採掘します。「オリジナルビットコインしか認めない」という態度は基本的に取りません。ただ、マイナー側にも思惑があるため、彼らが私達一般ユーザーにとっての合理性に基いて動くかは分かりません。

ビットコインキャッシュEDAの仕組み

EDAの発動条件はシンプルなものです。

  • 現在のブロックのMTP(Median Time Past)が、6ブロック前のMTPよりも12時間以上である場合、EDAが発動する
  • EDAが発動した場合、採掘難易度は20%低下する

MTPはBIP-113によって定義されており、現在のブロックを除く直近11ブロックのタイムスタンプの中央値のことです。簡単に言えば、過去11ブロックを採掘された時間順に並び替え、その丁度真ん中に位置するブロックの採掘時刻がMTPになります。

現行のブロックのMTPと6ブロック前のMTPを較べて、12時間以上の開きがあった場合、EDAが発動するわけです。

少し見づらいですが、Difficulty Adjustment?がYesになっている段に注目すれば、現行のMTPと6ブロック前のMTPに12時間以上の開きがある場合にのみ、EDAが発動していることが分かると思います。

Bitcoin Cash Difficulty Adjustments – Jimmy Song – Medium

ここで面白いのは、採掘難易度を下げるためには「ブロックを意図的に採掘しない」選択肢が有効である点です。ビットコインキャッシュの収益率がビットコインよりも低い場合に採掘しないのは当然ですが、既に収益率が十分に改善されている場合でさえ「あえて採掘しない」という選択肢が生まれます。しかしマイナー間でカルテルが結ばれているわけではないので、例えばAntpoolとF2Poolは異なる動きをします。故にビットコインキャッシュの採掘ペースが、特定のマイナーによって操作されているわけではなく、あくまでそれぞれの戦略に従ってハッシュパワーの割り振りを行っていると言えそうです。

適切なEDA開発は今後のフォークコイン開発者にとって必須

もう使われていない機能をここで紹介するのも無意味かとも思ったのですが、EDAは少なくともフォーク直後においては弱小ハッシュパワーしか持てないフォークコインの生存戦略として興味深い機能で、今後のフォーク戦略において考慮しなければならない要素の一つだと思うので記事にしておきました。


Bitcoin Cash Difficulty Adjustments – Jimmy Song – Medium