Augurの機能としてのフォーク

Augurの特徴の一つである、システム自体に実装されているフォークについて説明したいと思います。

一般的なフォーク

Augurのフォークは一般的なフォークと大きく異なります。
ここで言う「一般的なフォーク」とは、BTCのフォークのような元々所有しているコインとは別のコインがその所有者に付与されることです。この場合、所有者はBTC+α(BCHなど)のコインを保有することとなり、コインの所有量は増えます。

Augurの機能としてのフォーク

AugurもBTCのようなフォークは起こり得ますが、それとは別に機能としてのフォークが実装されています。
このフォークは、争議(他レポーターのレポート内容に異議を唱えること)時に、争議を実行するために必要なREP=争議保証金が、一定額に到達した時に発動します。
具体的に説明します。例えばマーケット「2016年の米国大統領選で当選するのはヒラリー・クリントン/ドナルド・トランプのどちらか?」があったとします。選挙が終了し、レポートされた結果、暫定アウトカム(=レポーターのレポートにより一時的に決定した結果)が「ヒラリー」になったとします。トランプが当選した、と信じる他レポーターは争議を起こすため争議保証金をステークします。この争議保証金はREPで支払われ、一人のレポーターだけで支払う必要は無く、クラウドファンディングのように複数のレポーターで募ることが可能です。争議は一週間単位で何度も繰り返し行うことが可能で、繰り返しのたびに争議を成功させるための目標額「争議保証金」は増加していきます。そして、争議保証金が存在するREPの2.5%以上になるとフォークが発生します。

フォークが発生するとどうなるか?

Augurでフォークが発生すると、アウトカム単位で「ユニバース」が分裂します。ユニバースとは、全てのマーケットとREPが存在する箱のようなものです。そして、それぞれ分裂先のユニバースでは、それぞれのアウトカムが正しいアウトカムとして扱われます。先ほどの例で挙げたマーケットで考えてみましょう、アウトカムは「ヒラリー」「ドナルド」「無効」(「無効」とはマーケットの質問内容が不明瞭/不明確なために、レポーターが正確なジャッジができない際に選択されるアウトカムです)の3つあるため、ユニバースは3つに分かれます。便宜上、それぞれのユニバース名を「ユニバース-ヒラリー」「ユニバース-ドナルド」「ユニバース-無効」とします。「ユニバース・ヒラリー」では、このマーケットの正しいアウトカムは「ヒラリー」となります。すなわち「2016年の米国大統領選で当選したのはヒラリー・クリントンである」というユニバースです。同様に「ユニバース-トランプ」では、正しいアウトカムは「ドナルド・トランプ」となり、「ユニバース-無効」では、正しいアウトカムは「無効」となります。

フォーク発生時、REP保有者はどうするのか?

REPを分裂先のユニバースに移行しなくてはなりません。分裂元のユニバースはロックされ、このユニバースではREP保有者は報酬を得ることができなくなります。自身が正しいと思う分裂先のユニバースに移行しますが、この時注意しなくてはならないのは、移行は不可逆で一方向である点です。一度移行したREPは元には戻せません。また、「ユニバース-ヒラリー」→「ユニバース・トランプ」のように分裂先ユニバース間の移行もでないため、極めて慎重に移行しなくてはなりません。これこそがAugurの機能としてのフォークが「一般的なフォーク」とは異なる点です。フォークによって単純に所有するコインが増えるのではなく、移行先を自身で決定しなくてはならないのです。

なぜこのようなフォーク機能が実装されているのか?

市場に結果を判断してもらうため、と考えています。先述の通り、ユニバースとは全てのマーケットとREPが存在する箱のようなものであるため、REPもそのユニバースの数だけ存在します。先程の例であれば、フォークするとREPは分裂し「REP-ヒラリー」「REP-トランプ」「REP-無効」が誕生します。そして、これらのREPは取引所などの市場で取引され価格が決まります。実際にはドナルド・トランプが当選したため、取引によって「REP-トランプ」以外はその価値がゼロになるでしょう。つまり、REP保有者だけでなく、市場での取引=REPを売買する人により、そのマーケットの結果判定が行われるのです。

フォーク時の懸念事項

移行ミス
移行先の判断を誤ると所有するREPの価値がゼロになり、資産を失います。
取引所の取り扱い
市場で価格が付くためには、取引所などが取り扱ってくれる必要がありますが、その保証はありません。
分裂後のREPの名称
分裂後のREPの名前で混乱する可能性があります。先程の説明では「REP-ドナルド」などの名前を付けましたが、実際には分裂前後で変わらず「REP」であり、違いがありません。違いを見分けるにはコントラクトアドレスを確認する必要がありますが、これはユーザーの混乱を招く可能性があります。つまり、フォーク終了後に、分裂後のREPが生成されますが、この分裂後の複数のREPの呼び名が定まりません。また、分裂前のREPとも名前に違いが無いため、フォークが発生するほどどのユニバースのREPなのか、呼び名は混乱すると思われます(ただしコントラクトアドレスを見れば区別できます)。一昨日、Discordで分裂後のREPに「REP-1Az」のようにBase58方式で接尾辞を付けるか否か議論していましたが、今のところ付けるつもりは無さそうです。理由は、一言で言えば「付けても無駄」、具体的には、コントラクトアドレスがあれば不要、付けるべき適切な文字列が決まらない、そもそも付けたところでその名前を取引所やウォレットが採用してくれる確証はない、などでした。

最後に

上記の通りAugurはかなり実験的なことに挑戦しており、特にフォークの機能はその最たる例だと思います。果たしてこの仕組みは正しく動くのか、見守っていきたいと思います。