Augur Version 2における変更点

先日、AugurのVersion 2における変更点の詳細が公式ブログで公表されました。その記事に個人的に調査した内容を加筆し、概要などまとめました。
なお、変更点は飽くまで暫定的であり、今後変更される可能性があるのでご注意ください。

DAIの実装(DAI Integration)

概要

マーケットで使用する通貨を、ステーブルコインのDAIとします。

経緯・目的

V1では、マーケットで使用する通貨はETHでした。しかし、ETHのボラティリティは高くマーケットもその影響を受けていました。特に長期間に渡ってマーケットのシェアを保有する場合、そのリスクは大きくなります。そこでステーブルコインを使用し、ボラティリティの影響を小さくします。

フォークに参加するか失うか(Use or Lose Forking)

概要

フォーク期間内にチャイルドユニバースへ移行した場合の「REPの+5%ボーナス」は廃止され、フォーク期間が過ぎた場合の移行は不可能になります。

経緯・目的

V1では、フォーク発生時の移行インセンティブとして、フォーク期間(60日)内にチャイルドユニバースへ移行するとREPが+5%付与されました。さらに、フォーク期間終了後でも(+5%のボーナスは付与されませんが)移行は可能でした。V2では、+5%のボーナスは廃止しフォーク期間が過ぎるとチャイルドユニバースへの移行は不可能になります。これにより、REP保有者の移行への参加が促進されます(強制される、とも言えます)。そして、この変更によりコントラクトはよりシンプルになります。さらにAugurをセキュアに保ちつつレポーティング手数料を削減することができます。

オークションベースのREP価格オラクル(Auction-Based REP Price Oracle)

概要

REPの価格オラクルは「ダブルオークション」を行うことで実現します。このオークションでは必要に応じてREPが新規発行されオークションにかけられます。

経緯・目的

Augurではシステムをセキュアに保つために、レポーティング手数料をREP価格から算出しています。そのため、Augurのシステムに対してREP価格の情報を提供するオラクルが必要です。

V1では、そのREP価格オラクルをAugurの開発者が担っており、定期的に手動でREP価格をAugurに反映しています。これは特定の人物に依存した中央集権的な運用であり、完全な非中央集権化を目指すAugurではV1リリース時から改修すべき点として認識されていました。

この問題を解決するため、V2では「ダブルオークション」でREP価格を決定します。

ダブルオークションとは、「REPの上限価格を決定するためのREPオークション(REPをETHで販売)」と「REPの下限価格を決定するためETHオークション(ETHをREPで販売)」の2つのオークションを同時に行うことを指します。それぞれのオークションの落札額からETH建てのREP価格を算出し、それぞれ二値の平均を”REP価格”として、その情報をAugurのシステムに提供します。

このオークションでは必要に応じてREPが新規発行されオークションにかけられます。

新規発行について具体的に説明します。
ETHオークションを行うためには当然オークションに出品するETHが必要です。そのETHをどこから仕入れるかというと、最初のREPオークションです。REPをETHで販売することでETHを仕入れるのです。では、その最初のREPオークションで出品するREPをどこから仕入れるかというと、、、REPを新規発行するのです。つまり、最初のREPオークションで出品するREPが新規発行分です。発行量は「0.25%×総発行量」です。現在のユニバースにおける総発行量は1100万REPであるため、この場合新規発行量は、0.25%×1100万=27,500 REPです。
※最初のREPオークション以外でもREPが新規発行されるケースがあるようですが、詳細は調査中です。

現在の計画では、V2のリリース当初このオークションを開催しますが、そこで得られたREP価格は使用せず、現状のままAugur開発者がREP価格を決定します。オークションが正常に稼働するか、また、オークションによって決定したREP価格がまともな価格であるかを監視するだけで、システムへの反映は行いません。その後、このオークションが正常に稼働することが確認できればシステムを切り替えてダブルオークションでのREP価格を反映させ、Augur開発者はREP価格を設定するための権利を破棄します。

バイバック&バーンフィーシステム(Buy Back & Burn Fee System)

概要

パーティシペーショントークンは廃止します。集まった手数料はオークションにかけられ、REPで販売されます。そのオークションで集まったREPは焼却(burn)されます。手数料オークションにかけられREPで買い戻され(buy buck)、オークションで得られたREPは焼却(burn)されることから、Buy Back & Burn Fee Systemと呼ばれます。

経緯・目的

V1では、レポーターへの支払対象となる手数料は、手数料期間(fee window)のコントラクトに送信されています。そしてこのコントラクトは7日毎(=手数料期間が終了する毎)に変更されます。レポーターは手数料を得るためには、パーティシペーショントークンを購入するか、争議に参加する必要がありました。

しかしこれはとても複雑で非効率な方法です。REP保有者が手数料を得るためにはトークンを購入し、そのトークン保有者に対してAugurは手数料を分配せねばならず、手間がかかることはもちろん、各操作でgasコストもかかります。

この方法に代わりV2では、単一のコントラクトで手数料をプールします。そしてプールされた手数料はREPでオークションにかけ、オークションで集まったREPは焼却(Burn)します。つまり手数料分のREPが消滅するため、(理論上は)残ったREPにその価値が分配されるという仕組みです。これにより実質的にREP保有者に対してgasコスト0で手数料が分配されるという仕組みです。

また、トークンの交換(REP⇔パーティシペーショントークン)時に課税される国に住むREP保有者は、この改修により手数料の入手にトークンの交換が不要となるため、税制的に有利になるでしょう。

※個人的には、REP焼却時にその焼却分の価値が残りのREPに反映されるかは疑問が残ります。特に、集まる手数料額が小さく、さらにREPの流動性も低くボラティリティが高い現状では、焼却によるREP価格への影響はほとんど無いのではないでしょうか。(現状では、やや大口のREPを購入/売却するだけで、その価格が乱高下するため)

バグ修正(Bugfixes)

V1ローンチ以降に発見された各種バグの修正を行います。

ERC-777のサポート(ERC-777 Support)

Augurで扱う全てのトークンの規格をERC-20の上位互換であるERC-777に変更します。

可変的有効性保証金(Variable Validity Bond)

概要

マーケット作成者がマーケット作成時に有効性保証金を通常よりも高く設定することが可能になります。

経緯・目的

V1では、有効性保証金の金額は、直前の手数料期間にinvalid(無効)にファイナライズしたマーケットの数に応じ、Augurが動的に決定しています。マーケット作成者は、マーケット作成時にこの保証金を支払う必要があり、もしマーケットがinvalidにファイナライズしなければこの保証金は作成者に返却されますが、invalidにファイナライズすると没収されてしまいます。

V2では、Augurが決定する支払わなくてはならない有効性保証金よりも、高い保証金を支払うことが可能となります。これにより、トレーダーは「このマーケットはinvalidになる可能性が低い(少なくともマーケット作成者はinvalidにならないと信じている)」シグナルとして認知し、より安心してそのマーケットでトレードが行える、という仕組みです。

Invalidを明示的なアウトカムにする(Invalid as Explicit Outcome)

概要

マーケットで購入できるアウトカムに「無効(INVALID)」を追加します

経緯・目的

例えばYes/Noマーケットの場合、V1で購入できるシェアは「YES」と「NO」の2つだけでした。もし「INVALID」にファイナライズすると、各シェアに同額が払い戻される仕様でした。
V2では、「YES」と「NO」に加えて「INVALID」も購入可能となります。

争議による収益の焼却(Burning Dispute Profits)

概要

争議で発生した利益の一部を焼却します(暫定的に1/5を焼却する予定)。

経緯・目的

V1では、REPの大口保有者は経済的損失をほとんど伴わず、マーケットのファイナライズを意図的に遅延させることができます。V2では、争議で発生した利益の一部を焼却することで、この可能性を除去します(遅延させようとすると経済的損失が発生する)。

保証金の増加速度UP(Accelerated Bond Increases)

概要

有効性保証金と不参保証金の増加率と減少率について、増加は乗算的に行い、減少は加算的に行います。

経緯・目的

有効性保証金と不参保証金は、invalidにファイナライズしたマーケット数と、指名レポーターがレポートを行わなかったマーケット数に応じて、Augurが動的に増減させます。この変動は、V1では、増加率と減少率は同じでした。V2では、増加は乗算的に行い、減少は加算的に行います。従って、一旦増加すると減少にはより時間がかかります。

争議でのメッセージ投稿(Optional messaging for dispute contributions)

概要

イニシャルレポートと、争議においてレポーターはテキストメッセージをレポートに含めることができます。

経緯・目的

このメッセージに「なぜそのアウトカムにレポートしたか」を含めることで、レポーターは自身のレポートの意図を示すことができます。

指名レポート期間の短縮(Designated Report Time reduced to 1 day from 3 days)

概要

指名レポーティングフェーズを1日に短縮します。

経緯・目的

V1では、指名レポーティングフェーズは3日間ですが、現状指名レポートは即行われる傾向にあります。そのため、V2ではこのフェーズを1日に短縮しマーケットのファイナライズにかかる日数を短縮します。

連続的争議ラウンド(Continuous Dispute Rounds)

概要

争議ラウンドにあるマーケットは、その争議ラウンドでステーク額が争議保証金額に達すると、即座に次の争議ラウンドに突入します。

経緯・目的

V1では、争議ラウンドにあるマーケットでステーク額が争議保証金額に達しても、次の手数料期間の開始を待つ必要がありました。手数料期間は7日間であるため、例えばあるマーケットが1回目の争議ラウンドにあるとして、その争議ラウンドの初日にステーク額が争議保証金額に達したとしても、2回目の争議ラウンドに突入するには、次の手数料期間が開始するまで、つまり6日間待つ必要がありました。特に争議ラウンドの初めの内は争議保証金額が小さいため、比較的早期にステーク額が争議保証金額に達する傾向にあり、この待ち時間が頻繁に発生していました。

V2では、争議ラウンドでステーク額が争議保証金額に達すると、即時に次の争議ラウンドに突入します。つまり次の手数料期間の開始を待つ必要が無いため、争議のプロセスの高速化が期待できます。

でも、そもそも何のためにV1では次の手数料期間の開始を待っていたのでしょうか?それは、各マーケットの争議ラウンドの開始タイミングを合わせるためです。開始タイミングを合わせることで「REP保有者が争議に参加すべきマーケットが無いかチェックするのは週に一回だけでよい」となっていたわけです。

しかし、マーケットがファイナライズするには必ず一週間は待つ必要があります。従って、争議ラウンドの開始タイミングがバラバラであろうと、REP保有者は最低週に一回チェックすれば、争議に参加すべきマーケットが無いかを見落とすことが無いのです。

このような考えから、争議ラウンドは待ち時間なく連続して行われるよう仕様変更されました。

トレード用APIの変更(Trading API Changes)

省略

メールボックスのgasコスト最適化(MailBoxes:Gas & Transaction Optimizations)

概要

マーケット作成者一人に対し、一つのメールボックスを提供します。

経緯・目的

V1ではマーケット作成の都度、作成者にメールボックスを付与し、そのメールボックスで手数料の受取や引き出しを行っていました。V2で、マーケット作成者一人に対し、一つのメールボックスを提供するよう変更することで、コードは単純化されマーケット作成コストも低減します。

トレードのgasコスト最適化(Trading:Gas & Transaction Optimizations)

トレード用コントラクトのコードを最適化することで、トレード時のgasコストを約1/4に低減します。

最後に

以上が公式発表されたAugur V2の概要ですが、個人的にかなり盛り沢山な印象です。リリースのタイミングは2019年Q1などの噂があります(開発者の一人もそう予想していました)が、Augurはコードレビューや外部監査もしっかりやるので、もう少しかかるのではないでしょうか。

上記の変更点はコントラクトに関わる内容ばかりですが、UIの改修もredditに開設された修正希望リストを考慮し、並行して開発を進めるようです。

また、V2へのバージョンアップ後のREPの移行は、REP保有者自身が手動で行わなくてはならないので注意してください(V1リリース時は開発チームにより自動移行されました)。V2リリースが近づけば、公式から注意喚起やその方法が告知されると思います(おそらく移行方法は、用意されたUIでボタンをポチッ、だと思います)。