分散型システムとコンセンサスの歴史を知っておこう
Avalancheは、分散型金融(DeFi)のためのプラットフォームになることを目指しているパブリックチェーンです。
パブリックチェーンでありながらも、独自のサブネットを活用することでプライベートチェーンにカスタマイズすることが可能です。
これは、各国によって金融業界の法律が異なることに対応するための仕組みであり、分散型金融だけでなく既存金融にもブロックチェーンを導入する未来を想定しています。
Avalancheの最大の特徴は、独自のコンセンサスにあります。
これは、ビットコインによって提唱されたナカモトコンセンサスの抱える課題を解決するために開発されたものです。
そもそもコンセンサスとは、ブロックチェーンのような分散型システムにおいてどのように意思決定をくだすかを決める仕組みです。
従来の集権型システムであれば、管理者が自身の判断でその都度意思決定を行いますが、分散型システムには管理者が存在しないため予めアルゴリズムを決めておく必要があるのです。
コンセンサスの歴史は分散型システムと共に歩んできており、約45年前より研究が進められてきました。
Avalancheコンセンサスの誕生以前は、先述のナカモトコンセンサスがサトシ・ナカモトによって発明され、その前にはそれらの元となるクラシカルコンセンサスが誕生しています。
Check your achievement
Click the “Tick” button
if you understand the lesson so far.
全てのコンセンサスの元になるクラシカルコンセンサス
クラシカルコンセンサスは、全てのコンセンサスの元になる概念です。
代表的なものに、PBFT(Practical Byzantine Fault Tolerance)やHotStuffといったものがあります。
Peer−to−Peer型のネットワーク通信を基本として、ネットワークを構成する全てのノードが同じデータを共有します。
PtoP型にはなりますが、ノードの数は基本的に決められており、その中の管理ノードを通信しないと合意形成がなされない仕組みになっています。
クラシカルコンセンサスの問題点は、ノード全体のうち33%のシェアを獲得するとネットワーク全体をコントロールできてしまう点にあります。
また、ノードの数が増えるほど処理性能が低くなるという点もデメリットとしてあげられます。
つまり、ノードが自由にネットワークに出入りすることが難しく、オープンなパブリックチェーンを運営するには不向きなコンセンサスだといえるのです。
Check your achievement
Click the “Tick” button
if you understand the lesson so far.
オープンなコンセンサスとしてのナカモトコンセンサス
クラシカルコンセンサスの問題を解決するために誕生したのが、ナカモトコンセンサスです。
ナカモトコンセンサスは、ビットコインを動かすために発明されたものであり、ビットコインのためのコンセンサスといっても過言ではありません。
クラシカルコンセンサスでは、ネットワーク全体でトランザクションの承認(ファイナリティという)を確実なものにするために、ノード全体に情報が共有されるのを待つ必要がありました。
ナカモトコンセンサスでは、ファイナリティに絶対的な確実性ではなく確率論的なアプローチを取ることで、一定以上の時間が経てば覆ることはないとの前提を置くことで、オープンなネットワーク通信でも適用できることを証明してみせたのです。
これにより、ノードが自由にネットワークに出入りすることができるようになりました。
しかしながら、クラシカルコンセンサスにおける課題はまだ残されています。
それは、処理性能の問題です。
ビットコインは、そもそもリアルタイムでの支払いシーンなどを想定して開発されてはいません。
そのため、送金後に少し時間が経ってから相手に届くという点を問題にはしていないのです。
しかしながら、リアルタイム決済や大量のトランザクションが飛び交うDeFiのようなシーンでは、高い処理性能が求められるでしょう。
Check your achievement
Click the “Tick” button
if you understand the lesson so far.
処理性能を高めたAvalancheコンセンサス
クラシカルコンセンサスに残された処理性能の問題を解決するのがAvalancheコンセンサスです。
分散型システムにおけるコンセンサスでは、全てのノードが常に同じデータを保有していることで安全性と透明性を担保しています。
そして、全てのノードが全てのトランザクション情報を確認し合意することで、ファイナリティが実現される仕組みになっています。
この場合、ノードの数が増えるほど安全性は高まるものの処理速度は低下していきます。
例えば、ネットワークが5つのノードによって構成されている場合、全体の通信回数は25回で済みますが、現在のビットコインのように10,000ものノードが存在する場合、通信回数は1億におよびます。
Avalancheコンセンサスは、ナカモトコンセンサスと同様に確率論的なアプローチを取っています。
リピートランダムサブサンプリングと呼ばれるプロセスを通して、ネットワークを構成するバリデータ(ノード)がトランザクションを承認します。
この時、全てのノードが全てのトランザクションを承認するのではなく、確率論的に覆ることがないとされる割合のノードのみが承認します。
例として、A・Bというトランザクション、C・D・E・Fというノードがあった場合を想定しましょう。
クラシカルコンセンサスやナカモトコンセンサスでは、トランザクションA・Bそれぞれに対してC・D・E・F全てのノードが承認していました。
Avalancheコンセンサスでは、トランザクションAはノードC・Eが、トランザクションBはノードD・Fが承認するといった具合に役割分担しているのです。
ここではノードを4つにしましたが、数万というノードが同時に複数のトランザクションの承認作業を行なっているため、並列処理を実現することができ処理性能を高めることができます。
1つのトランザクションに対していくつのノードが承認作業を行うかは、その都度ネットワークに参加するノードの数によって決められます。
その数の決定方法に確率論的なアプローチを取っていますが、具体的には「2万年に1度は覆される可能性がある」という確率に設定されています。
レッスン1で学習した通り、1秒間に4,500トランザクションを処理可能であるとした場合、2万年で2,800兆以上のトランザクションを処理することになります。
つまり、2,800兆に1回は誤ったトランザクションを承認してしまうことを意味します。
この確率を高いとみるか低いとみるかは個人によると思われますが、宝くじで1億円が当たる確率が1000万回に1回であるというところをみると、その3億倍に近い数字は途方も無いように感じるのではないでしょうか。
Check your achievement
Click the “Tick” button
if you understand the lesson so far.