コンテンツ
コンセンサスアルゴリズムはユーザー、もしくはマシンが分散化しながらも協力することができる仕組みです。 システム内のすべてのエージェントが、たとえ一部のエージェントが失敗したとしても、単一の事実のソースに合意できることを保証する必要があります。言い換えれば、システムは
フォールトトレラントでなければなりません (詳しくは
ビザンツ将軍問題の説明をご覧ください。)。
中央集権型の場合、システム全体に対して単一の機関が権限を持っています。たいていの場合、その機関が自由に変更を行うことができるので、たくさんのアドミン間で合意に達するための複雑なガバナンスシステムは不要です。
分散型のシステムでは、まったく違う話になります。それでは、分散型データベースでは、どのようにして、どのエントリーが追加されたかに関して合意に達しているのでしょうか。
相互に信用をしていない人たちしかいない環境の中でこの課題を解決する方法を示したことが、
ブロックチェーンの最も重要な発見かもしれません。この記事では、暗号通貨と分散型台帳の機能において、コンセンサスアルゴリズムがどう必須なのかについて説明していきます。
暗号通貨では、ユーザーの残高は
ブロックチェーンと呼ばれるデータベースの中に記録されます。全員(より正確に言うと全
ノード)がデータベースの同一のコピーを維持することが必須です。そうでないと、矛盾する情報が発生するようになり、ブロックチェーンの目的を害することになります。
公開鍵暗号がユーザーが互いの
コインを使うことができないことを保証します。しかし、それでもネットワーク参加者は、資産がすでに使われたかどうかを判断することができる、事実の単一のソースを必要としています。
まず、
ブロックを追加したいユーザー(ここでは
バリデーターと呼ぶ)に
ステークを提供することを要求します。ステークとは、バリデータが不正な行動をしないようにするために、バリデータが提示しなければならないある種の価値のことです。バリデータが不正を行えば、そのステークを失うことになります。例としては、計算能力、暗号通貨、あるいは評判などが挙げられます。
ユーザーが自分自身のリソースをリスクにさらすのは、報酬を得ることができるからです。この報酬はたいていの場合、プロトコルのネイティブ暗号通貨で構成されており、他のユーザーによって支払われた手数料、発行されたばかりの暗号通貨、またはその両方で構成されています。
最後に必要なのは、
透明性です。誰かが不正をしたら検知できる必要があります。
ブロックを発行するにはコストがかかるものの、その検証は安価にできることが理想的です。これによって、バリデーターは一般のユーザーによって、監視され続けるようになります。
プルーフオブワーク(PoW)
プルーフオブワーク(PoW)は世界初のブロックチェーンコンセンサスアルゴリズムです。これはビットコインに初めて実装されましたが、実際のコンセプト自体はそれよりも前からありました。プルーフオブワークでは、バリデーター(
マイナーと呼ばれる)は特定の解を見つけ出すまで、追加したいデータを
ハッシュし続けます。
ハッシュは、一見ではただのランダムな文字と数字の文字列で、
ハッシュ関数を通してデータを実行したときに作成されます。しかし、同じデータでハッシュ関数を再度実行すると、いつも同じ出力になるようになっています。しかし、元のデータを少しでも変更すると、出力されるハッシュは全く違ったものになります。
出力された結果を見るだけでは、ハッシュ関数を実行する前の情報が何だったのかを予想することはできません。だから、ある時間より前にそのデータについて知っていたことを証明するのに便利です。誰かにそのハッシュを与えて、後でデータを公開したときに、その人は関数を通してそれを実行して、出力が同じであることを確認することができます。
プルーフオブワークでは、プロトコルが有効なブロックの条件を設定しています。例えば、00でハッシュが始まるブロックのみが有効みたいな条件が設定されているかもしれません。マイナーがその組み合わせに合うものを作る唯一の方法はブルートフォースでの総当たりしかありません。彼らは、正しいハッシュを得るまで、推測ごとに異なる結果を生み出すために、データのパラメータを微調整することができます。
主要なブロックチェーンでは、この条件は信じられないほど高く設定されています。他のマイナーと競争して、有効なブロックを発行する機会を得るには、特別なハッシュ用のハードウェア(
ASIC)でいっぱいの倉庫が必要です。
マイニングを行う時のステークは、これらのマシンのコストとそれらを動かすために必要となる電気代です。ASICは1つの目的のためだけに作られているので、
暗号資産マイニング以外のアプリケーションには使うことができません。初期投資を回収する唯一の方法はマイニングです。ブロックチェーンへの新しいブロックの追加に成功したら、大きな報酬を得ることができます。
ネットワークが、あなたが本当に正しいブロックを作成したかどうかを確認するのは簡単なことです。あなたが正しいハッシュを得るために何兆もの組み合わせを試したとしても、ネットワークはあなたのデータを一度だけハッシュ関数を通して実行すれば十分です。あなたのデータが有効なハッシュを生成した場合、それは受け入れられ、あなたは報酬を得ることができます。そうでなければ、ネットワークはそれを拒否し、そのために費やした時間と電気が無駄となります。
プルーフオブステーク(PoS)
プルーフオブステーク(PoS)はビットコインの初期にプルーフオブワークの代替として提案されました。PoSシステムでは、マイナーや専用のハードウェア、大量の電力消費は不要です。必要なのは普通のPCだけです。
とはいえ、このゲームに参加するためのコストは存在します。PoSでは、外部リソース(電気やハードウェアのような)ではなく、システム内部の要素である暗号資産を使います。それぞれのプロトコルでルールは違いますが、一般的に
ステーキングをするには、一定の資産を保有することが必要です。
そうしたら、
ウォレットに資産をロックします。(ステーキング中はこの資産を移動することはできません。)一般的には、他のバリデーターとともに、次のブロックにどのトランザクションが入るかを合意することになります。ある意味では、選択されるブロックに賭けていることになり、プロトコルがその中から1つを選びます。
あなたのブロックが選択されたら、トランザクション手数料の一部を受け取ります。より多くの資産をロックアップすると、より多くを手に入れることができます。しかし、無効なトランザクションを提案することで不正をしようとしたら、ステークしている資産の一部、もしくは全ての失うことなります。そのため、PoWと同様に誠実に行動することは不誠実に行動するよりも多くの利益を得られるというメカニズムが採用されています。
一般的に、バリデーターへの報酬の一部として、新しく作られたコインが配布されることはありません。したがって、ブロックチェーンのネイティブ通貨は、何らかの別の方法で発行されなければなりません。これは、最初の配布(すなわち、
ICOまたは
IEO)、または後にPoSに移行する前にPoWでプロトコルをローンチさせることによって行うことができます。
2020年5月時点では、純粋なプルーフオブステークは規模の小さい暗号資産でしかデプロイされていません。そのため、PoWの有効な代替として機能できるかはまだわかりません。理論的にはうまく行くように見えますが、実際に使ってみると課題が出てくるかもしれません。
PoWが大きな価値のあるネットワークで展開されたら、そのシステムは
ゲーム理論と金銭的インセンティブの分野になります。PoSシステムをハッキングするためのノウハウを持っている人は、そのハッキングによってより多くの利益を得られる場合のみ攻撃をします。そのため、PoSが安全に機能するかは実際にネットワーク上で稼働させてみないとわかりません。
イーサリウムネットワークのアップグレード(
イーサリウム2.0)の1つとして、
キャスパーが実装されるので、大規模なネットワークでのPoSが可能かどうかの答えは近い将来明らかになります。
プルーフオブワークとプルーフオブステークが最も議論されているコンセンサスアルゴリズムです。しかし、これら以外にも様々なコインがあり、それぞれに長所と短所があります。それらの詳細は以下の記事をご覧ください。
分散型システムを機能させるには、合意に達するためのメカニズムが必須です。多くの人は、共有された事実に関して、ユーザーが合意できるようにするためにプルーフオブワークを使ったことがビットコインの最大のイノベーションと信じています。
今日のコンセンサスアルゴリズムは、デジタルマネーシステムだけでなく、開発者が分散ネットワーク上でコードを実行することを可能にするブロックチェーンの基盤となっています。コンセンサスアルゴリズムは、現在ではブロックチェーン技術の礎となっており、現存する様々なネットワークの長期的な存続に欠かせないものとなっています。
すべてのコンセンサスアルゴリズムの中で、プルーフオブワークが依然として主流です。より信頼性が高く、より安全な代替案はまだ提案されていません。とはいえ、PoWの代替品については膨大な量の研究開発が行われており、今後数年のうちにさらに多くの代替となるメカニズムが登場することが予想されます。