コンセンサス・メカニズム
コンセンサスメカニズム(アルゴリズム)とは、信頼のないエンティティ間でコンセンサスを得るための方法である。 ブロックチェーン技術では、ブロックが有効かどうかのコンセンサスを得るために使われる。 ブロックチェーン・ネットワークの性能は、採用されたコンセンサス・メカニズムの性能に依存し、ブロックチェーン・アプリケーションのユーザビリティに大きな影響を与える。
カイヤメインネットは以下の性能を発揮する。
- 毎秒4,000トランザクションを処理。
- 取引の即時ファイナリティ。
- ブロック生成時間は1秒。
- 50以上のコンセンサスノードがコンセンサスプロセスに参加できる。
この文書では、カイアがどのように高パフォーマンスのコンセンサスプロセスを実施したかを説明する。
背景
ビットコインはPoW(Proof-of-Work)を採用しているが、イーサリアムは最近、ブロック生成ノードをノードの賭け金で決めるPoS(Proof-of-Stake)に移行した。 通常、これらのアルゴリズムは、ブロックの有効性を決定する際にノード間の通信を伴わない。
つまり、これらのシステムでは、2つ以上の異なるブロックが同じ高さにできるフォークが起こり得るのだ。 通常、フォーク条件を解決するために「最も長いチェーンが勝つ」ルールが適用される。 これは、これらのフォークが最終的に単一の正規のチェーンにマージされることを意味するが、ブロックのリストが短いチェーンに属している場合、ある程度の期間で差し戻すことができることも意味する。 そのため、これらのアルゴリズムでは、ブロックとトランザクションの最終性は保証されない。 最終的な結末は、一定期間後に確率的に達成されるものであり、100%保証されるものではない。
この最終性の欠如は、ブロックチェーンプラットフォームを使用する顧客向けサービスでは非常に難しい問題である。 なぜなら、フォークが解決され、トランザクションが可逆的でないと考えられるだけのブロックが転送後にスタックされるまで待たなければならないからである。 これは利用者とサービス提供者の双方に悪影響を及ぼす。
この問題の単純な例は、金融サービスにおいて示すことができる。 あるユーザーが誰かに送金したとする。その送金が有効かどうかは、30分から60分経たないとサービスが確認できない。 なぜなら、フォークが単一のチェーンにマージされ、トランザクションがリバーシブルでないことを確認するために、転送後にいくつかのブロックがスタックされるまで待たなければならないからだ。
PBFT(実用的ビザンチン耐障害性)
上記の問題を防ぐためには、ファイナリティを保証する他のアルゴリズムが必要である。 BFTアルゴリズムはその一つで、1982年にLamport, Shostak, Peaseによって初めて公開された。 1999年、Miguel CastroとBarbara Liskovは、高性能なステートマシン・レプリケーションを提供する "Practical Byzantine Fault Tolerance" (PBFT)を発表した。
上記のPoWアルゴリズムでは、各ノードがブロックを受信して検証するものの、コンセンサスを得るためのノード間のメッセージ交換は行われない。 しかしPBFTでは、各ノードが他の参加ノードと通信してコンセンサスを得るため、ノードがコンセンサスに達した時点でブロックの最終性が保証される。
ノード間の通信は基本的に以下のように進行する。 しかし、それぞれのシステムの特徴を反映したいくつかのバリエーションがある。
このように、PBFTに参加するノードは、基本的にネットワーク上のすべてのノードといくつかのフェーズに分けて通信を行う。 この特性により、ノード数が増加すると通信量が指数関数的に増加するため、ノード数が制限される。
カイアのコンセンサスメカニズム
Kaiaはエンタープライズ対応でサービス中心のプラットフォームを目指している。 したがって、上に書いた最終性の問題を解決し、多くのノードがネットワークに参加できるようなネットワークにする必要がある。 これを可能にするため、Kaiaはブロックチェーン・ネットワークの特性に対応するよう修正されたPBFTを実装するIstanbul BFTの最適化バージョンを使用している。
Kaiaには、CN(Consensus Node)、PN(Proxy Node)、EN(Endpoint Node)の3種類のノードがある。 CNはCCO(コアセルオペレーター)によって管理され、ブロック生成を担当する。 これらのブロックは、ネットワーク内のすべてのノードによって検証される。 このネットワーク・トポロジーの詳細については、こちらを参照されたい。
カイアはイスタンブールBFTを採用し、改良することで、高速決勝を実現した。 検証とコンセンサスはブロックごとに行われるため、フォークが発生することはなく、コンセンサスが得られ次第、即座にブロックの最終性が保証される。
また、BFTアルゴリズムにおける通信量 の増大の問題は、ランダムに選択された「委員会」を利用することで解決している。 CNは集合的に「協議会」を形成し、ブロック生成ごとに、その一部がVRF(検証可能ランダム関数)を使って「委員会」のメンバーとして選ばれる。
コンセンサスメッセージは委員間でしかやり取りされないため、CNの総数が増えても通信量は設計レベル以下に抑えることができる。
現在、カイア・メインネットは、1秒間のブロック生成間隔で1秒間に4,000件のトランザクションという高いスループットを提供できる。 現在50以上のコンセンサスノードがCNN(コンセンサスノードネットワーク)に参加することができ、カイアがアルゴリズムを積極的に最適化し続けるにつれて、その数は継続的に増加する。