【解説】マーケットの遷移

Augurのマーケットが作成され、ファイナライズするまでの流れを解説します。(長文ですがホワイトペーパーには無い情報も含まれているので、最後まで読んでいただけると嬉しいです)

※今回は「マーケット作成~ファイナライズ」の流れを解説することを目的とし、個別の詳細な内容(例えば「マーケットの作成方法」「手数料期間とは」「フォークとは」など)を含めると長くなりすぎるため省略しています。できれば別記事で解説したいと思います。

マーケットの流れをリスト化すると以下となります。(時系列順)

  • マーケット作成(pre-reporting)
  • レポーティング前(pre-reporting)
  • 指名レポーティング(designated reporting)
  • 公開レポーティング(open reporting)
  • 次の手数料期間開始待ち(waiting for the next fee window to begin)
  • 争議ラウンド(dispute round)
  • フォーク(fork)
  • ファイナライズ(finalized)
  • ファイナライズ後待ち期間(post-finalization waiting period)

ホワイトペーパーに記載されているファイナライズするまでの図「レポーティングフローチャート」は以下の通りです。

上記のリストと、このフローチャートは内容が若干異なりますが、リストはフローチャートをより細分化したものなので、その点を留意していただき以下を読み進めていただけると幸いです。

ではリストを順に解説します。

マーケット作成(pre-reporting)

その名の通り、マーケット作成者がマーケットを作成するフェーズです。

レポーティング前(pre-reporting)

マーケットが作成されてから、そのマーケットで設定されている「終了日時(End Time)」を迎えるまでの期間です。この期間が最もマーケットでトレードが行われます。

通常この「終了日時」には、マーケットのイベントの発生日時、あるいはそれ以降の日時が設定されます。

指名レポーティング(designated reporting)

マーケットの「終了日時」から始まる3日間です。

この期間では、マーケット作成者が作成時に設定した「指名レポーター(designated reporter)」がそのマーケットに対してレポートを行います。この時点でそのマーケットに対してレポートできるのは指名レポーターだけです。

指名レポーターによってレポートされたアウトカムを、一時的に決定したアウトカムという意味で「暫定アウトカム(tentative outcome)」と呼びます。

通常、指名レポーターはマーケット作成者が自身を指名すると思われます。なぜならば、マーケット作成者が作成時に「指名レポート不参保証金(designated report no-show bond)」を支払いますが、この保証金が返却されるのは指名レポーターがレポートを行った場合であり、指名レポートが行わなければこの保証金は没収されるためです。この仕組みにより、早期のレポートが期待できます。

なお、指名レポーターがレポートでステークするREPを「指名レポーターステーク(designated reporter stake)」と呼び、このステークするREP量はAugurにより動的に設定され、指名レポーターが任意のREP量をステークすることはできません。

この3日間内に指名レポーターがレポートを行えばマーケットは「次の手数料期間開始待ち」フェーズに突入しますが、もし3日間内にレポートが行われなければ「公開レポーティング」フェーズに突入します。

公開レポーティング(open reporting)

指名レポートが行われなかった場合に突入するフェーズで、誰かしらがこのマーケットのレポートを行えばこのフェーズは終了し「次の手数料期間開始待ち」フェーズに突入します。逆に、誰かにレポートされない限りマーケットはこのフェーズに留まり続けます。

この公開レポーティングフェーズで最初にレポーティングを行った人を「ファーストパブリックレポーター(first public reporter)」と呼びます。

ファーストパブリックレポーターはレポートでステークするためのREPを所有しておく必要がありません。なぜならば、マーケット作成者が作成時に支払った「不参保証金(no show bond)」がステーク用REPとして使用できるためです(裏を返すと、この「不参保証金」以外のREPをステークすることはできません)。

従って、仮にファーストパブリックレポーターがレポートしたアウトカムがファイナルアウトカムにならなかったとしても、タダで使用した「不参保証金」を失うだけで、自身の資産を失うことはありません。つまり、ファーストパブリックレポーターには支出が無いのです(厳密にはレポート時にETHでgasを支払う必要があります)。

このファーストパブリックレポーターには「早い者勝ち」でなることができます。指名レポーティングされず公開レポーティングフェーズに突入したマーケットをいち早く見つけ出し、一番乗りでレポートすればこのファーストパブリックレポーターになれるのです。

このように、公開レポーティングフェーズに入ったマーケットは即レポートされるようインセンティブ設計されています。指名レポーティングと同様に、公開レポーティングもマーケットのアウトカムをより早く決定させるため仕組みの一つと言えます。文頭で”誰かにレポートされない限りマーケットはこのフェーズに留まり続けます”と言いましたが、このようなインセンティブがあるためその可能性は低いと思われます。

なお、ファーストパブリックレポーターによってレポートされたアウトカムも、一時的に決定したアウトカムという意味で「暫定アウトカム」と呼ばれます。

次の手数料期間開始待ち(waiting for the next fee window to begin)

指名レポーティング、または、ファーストパブリックレポーターによるレポート(=ファーストパブリックレポート(first pablic report))が行われか、争議ラウンドでの争議成功後にと突入するフェーズです。

このフェーズに入るとマーケットは現在の手数料期間が終了するまで待機状態となります。次の手数料期間が開始するとマーケットは争議ラウンドフェーズに移行します。

この待ち期間の目的は、各マーケットの足並みを揃えることです。次の手数料期間が開始するとそのマーケットは争議ラウンドに突入しますが、この待ち期間があることで各マーケットの争議ラウンドへの突入タイミングが同時になるのです。

タイミングが同時になることでREP保有者のチェック作業が減ります。具体的には、REP保有者が争議すべきマーケットが無いかを探す作業が7日間に1回で済みます。このようにREP保有者の作業負担を減らし、定期的にAugurへの参加を促すためこの待ち期間は設けられました。定期的なAugurへの参加は、REP保有者のフォーク発生検知にも繋がります。

争議ラウンド(dispute round)

次の手数料期間開始待ちフェーズが終了すると突入するフェーズで、このフェーズは7日間続きます。

このフェーズでは、現在の暫定アウトカムに不服がある場合、REP保有者は保有するREPをステークすることで不服申し立て=「争議(dispute)」を行うことができます。

この争議でステークするREPを「争議ステーク(dispute stake)」と呼び、一人のREP保有者が全額支払っても構いませんし、複数のREP保有者でステークしても構いません。

この争議ラウンド中に争議ステークがある金額「争議保証金(dispute bond)」に達すると、その争議は成功です。逆に争議保証金に達しなければ、その争議は失敗です。なお、争議保証金はAugurにより動的に設定されます。

争議の成功/失敗により、マーケットは以下のように状態が遷移します。


【争議に成功した場合】
争議ラウンド中に争議ステークが争議保証金に到達すれば、その争議は成功となり、争議でステークされたアウトカムが新たな暫定アウトカムとなります。

その後、マーケットは現在の争議ラウンドが終了するまで(=7日経過するまで)「次の手数料期間が開始待ち」状態となり、現在の争議ラウンドが終了すると、もう一度争議ラウンドが開始され(争議ラウンド2回目)、1回目と同じように争議の受付が行われます。この争議ラウンドの繰り返しは、争議が失敗するか、争議ラウンドが20回に達するまで行われます。


【争議に失敗した場合】
争議ラウンド中に争議ステークが争議保証金に到達しなければ、その争議は失敗となり、マーケットはファイナライズ状態に移行します。

例えば、指名レポーター/ファーストパブリックレポーターがレポートした暫定アウトカムに誰も不服が無く争議ステークが集まらなければ、争議ラウンド1回目で争議が失敗となり、ファイナライズ状態に移行します。


【争議ステークがフォーク閾値を超過した場合】
争議ステークが「フォーク閾値(fork threshold)」に達するとフォークフェーズへと移行します。フォーク閾値(fork threshold)は全REPの2.5%です。

フォーク(fork)

争議ステークがフォーク閾値を超過した場合にのみ突入するフェーズで、60日間続きます。

フォークが発生すると、マーケットのアウトカム単位で「ユニバース(universe)」が生成されます。生成された各ユニバース内では、その対応するアウトカムがファイナルアウトカムとして扱われます。

例えば、アウトカムが A / B / 無効 の3つあるマーケットがフォークすると、ユニバースは ユニバースA / ユニバースB / ユニバース無効 の3つが生成されます。「ユニバースA」はアウトカムAがファイナルアウトカムであり、「ユニバースB」はアウトカムBがファイナルアウトカムであり、「ユニバース無効」は無効がファイナルアウトカムとなっています。

また、この新たに生成された各ユニバースを「チャイルドユニバース」と呼びます。

REP保有者はREPをチャイルドユニバースに移行することができます。60日内に移行すれば、早期移行ボーナスとして移行先のチャイルドユニバースでREPが+5%付与されます。REPの移行に制限時間は無く、60日以降に移行してもペナルティはありません(ただし+5%のボーナスはありません)。

なお、フォーク対象のマーケットで既にいずれかのアウトカムにREPをステークしている場合、そのREPは自動的にステーク対象のアウトカムに対応したユニバースに移行されます。

例えば、アウトカムが A / B / 無効 の3つあるマーケットで、争議ステークとしてアウトカムAにステークしていれば、そのREPは「ユニバースA」に移行される、ということです。

ファイナライズ(finalized)

フォークが終了する、あるいは、争議が失敗するとマーケットはファイナライズします。

ファイナライズしたアウトカムのことを「ファイナルアウトカム(final outcome)」と呼びます。

フォーク終了時であれば、そのチャイルドユニバースに対応したアウトカムがファイナルアウトカムです。
争議失敗時であれば、その時点の暫定アウトカムがファイナルアウトカムです。

ファイナライズすれば、トレーダーは所有するシェアを「決済(settlement)」し、ETHを取得することができます。

ファイナライズ後待ち期間(post-finalization waiting period)

マーケットのファイナライズ後から3日間続く、トレードが停止される期間で、この期間が終了すればそのマーケットのシェアを決済しETHを払い戻すことができます。

この期間はセキュリティ上の予防措置として設けらました。もし攻撃者によってマーケットが不当なアウトカムにファイナライズされた場合、開発チームがこの期間中にシステムを停止させるなどの対抗措置を取ることができます。

この期間は「Augurは十分に安全である」と開発チームが確信した際に撤廃されます(デベロッパーモード(developer mode)中のみ設定される期間と思われます)。一時的なものであるため、ホワイトペーパーにも記載はありません。