先日、SKALE LabsのCTO/Co-FounderであるStan Kladko氏にインタビューする機会があり、SKALEネットワークの設計や、他のEthereumスケーリングやレイヤー2ソリューションとの違いについての考えを聞きました。私たちは、プロダクション・システムとリサーチ・プロジェクト、数学的アルゴリズム、バイナリー・コンセンサス、ブロック提案、モジュール化、自己回復ネットワークなどについて話をしました。

今回の私たちの講演では、ブロックチェーンの内部動作に関する詳細について説明し、セキュリティを犠牲にすることなく、コンセンサス・アルゴリズムの高速化やエネルギーや資源の効率化を実現する方法を説明しました。

SKALEチェーンにおける設計上の決定事項について説明していただけますか?

Stan氏: 私たちが設計したSKALEネットワークはEthereumと互換性があります。Ethereum上で実行できることはすべて、SKALE上でより速く実行することができます。さらに、SKALEチェーンは数学的に証明することができるように設計・構築されており、SKALEチェーン内のすべてのシングルポイントが、特定の前提の下で数学的に証明することができるアルゴリズムを持っています。これらの前提は、すべての機能に共通しています。

私たちの知る限り、これらのチェーンは現在市場に出回っている数学的に証明可能な唯一のプルーフ・オブ・ステーク(PoS)ブロックチェーンです。大学の学術論文はたくさんありますが、生産品質のシステムとしては、私たちのシステムが最初だと思っています。 あなたは自身の資金を数学基礎論を持つものに保管したいと考えるため、この厳密さは非常に重要となります。

SKALEチェーンは他のブロックチェーンとどう違うのですか?

Stan氏: SKALEは次世代のブロックチェーンです。前世代のブロックチェーンであるBitcoinやEthereum、その他の多くのブロックチェーンは、ブロックタイムが固定されています。これは、ブロックが一定の時間順序でリリースされることを意味し、通常は10秒または15秒ごとに行われます。SKALEでは、必要に応じてブロックをリリースすることができます。取引がなければブロックもないので、CPUの時間を節約することができます。もし誰かが現れて取引を行えば、その数秒後には新しいブロックが出現します。

なお、最新のリリースでは、10秒ごとに空のブロックを作成しています。これは、チェーンが機能していることを示す何らかの信号や証拠を見たいというニーズがあるためです。理論的には、SKALEチェーンを運用してもブロックを生成しないか、月に1度だけ生成することも可能です。このような必要に応じたアプローチにより、同じノード上に多くのチェーンを持つことができる可能性があり、ユーザーのコストとリソースを節約することができます。

通常、人々は単一のブロックチェーンとフルノードを使用します。ノードごとに多くのチェーンを持つことはユニークです。コンセンサス・アルゴリズムの進化により、多くのブロックチェーンにノードを分散させることができ、バリデーターにとっては非常に便利です。また、私たちのノードは超高額ハードウェアで動いているわけではありません。安価なAWSやDigital Oceanのマシンにも対応しています。典型的なSKALEノードは、中規模の仮想マシン上で動作しますが、そのコストは月に数百ドル程度です。

SKALEコンセンサスの他との違い、そしてそれがなぜ重要なのかを説明していただけますか?

Stan氏: ブロックチェーンの世界では、生産志向のシステムと学術研究のシステムが常に分かれています。実用レベルでは、BitcoinやEthereum、そしてCosmosやTendermintのようなプルーフ・オブ・ステーク(PoS)システムが存在します。アカデミックな世界では、ABBAをはじめ、数学的に証明可能なアルゴリズムが数多く存在しています。

Tendermintのような実用的なシステムでは、ABBAコンセンサスやその他のバイナリー・コンセンサス・アルゴリズムは使用されません。その代わり、エンジニアが構築した最もらしい証明を使用します。Tendermintは今のところ最も優れたシステムであり、2番目に優れているPolkadotでさえ、安全性と正確性に欠けています。さらに、EOSが使用している先進的ではないアルゴリズムは、数学基礎論がありません。彼らの論文を読むと、数学的証明が不要という意味で研究レベルではありません。

エンジニアは「これは特定の方法で動いているが、どこで問題が起きるか考えてみましょう」と言います。そして想定することができる悪い事態の発生をどのようにして防止できるかについて論理的根拠を示します。1つの問題を解決した後、また別の問題が発生して解決されていきます。しかし、現在のところ、バイナリー・コンセンサスや、その他のリサーチ・アルゴリズムが本番システムに組み込まれたことはありません。

一時的なエンジニアリングによる修正だけで不十分な場合は、セキュリティの脆弱性が存在しないことを正確に証明する必要があります。SKALEは数学的証明と現実世界とのギャップを埋めることに取り組んでいます。私たちは、最初から最後まですべて証明可能であることを主張できると強く信じています。それが私たちの主張です。他の生成アルゴリズムが悪いと言っているわけではなく、大抵の状況では機能するかもしれません。ただし、私たちは数学的証明を可能にするものを作ることに興味があるだけです。

SKALEのブロックタイムが2秒以下になる理由とは?
Stan氏: ほとんどのプルーフ・オブ・ステーク(PoS)アルゴリズムはシンプルな方法で動作します。あなたはブロックチェーンを使用しています。ブロックを追加する必要がある場合、ブロックが現れ、前のブロックと接着されます。ETH2、Tendermint、EOS、Polkadotなど、殆どのプルーフ・オブ・ステーク・アルゴリズムは、単一のブロック提案者を使用するという点で、同じ仕組みになっています。

任意の時点で、ブロックを提案できる唯一のノードとして指定されたノードが存在します。他のブロックが認められることで、そのブロックはチェーンに追加され、さらに別のブロック提案者が選択されます。この選択は、ラウンドロビン方式、ランダム選択方式、またはその他のメカニズムによって行われます。

このシーケンスは、提案者がブロックを提案することができる一定期間が存在するという点で、時間的に区切られています。指定された提案者がブロックを提案しない場合、次の提案者にオプションが移るタイムアウト期間が存在します。例えば、ETH2には、10秒-15秒のタイムアウト期間が発生しますが、これは指定された各提案者がブロックを提案するのに必要な時間がそれだけ掛かることを意味します。また、その期間が終了するまで、他のユーザーはブロックを提案することができません。さらに提案者は、無反応等により最悪の場合は悪意があるとみなされないように、取引がない場合には空のブロックを提案しなければならない場合もあります。

SKALEのコンセンサス・アルゴリズムは、チェーンを構築するすべてのノードがブロック候補を提案できるという点で異なります。つまり、1つのチェーンを構成する16のノードが同時に候補を提案することができます。この16個の候補の中から1つが選択されます。アルゴリズムの背景にある数学に基づいて、候補のうち大半はタイムアウトがあってはならないことを意味する有効な候補であると推定されます。つまり、一定の期間は必要ないということです。また、ブロックが追加された後、ノードがすぐに新しい候補を送信するため、チェーンの作成が高速になります。

すべてのノードが同時に提案を提出した場合、不要なネットワーク・トラフィックが発生しますか?

Stan氏: この場合は違います。通常、16個のブロック提案を持つことは、すべてのノードが他のすべてのノードに提案を送信する必要があるため、ネットワーク手数料が発生します。この非効率性は、比較的簡単に解決できることが分かっています。Honeybadgerでは、非常に高度な数学的アルゴリズムを用いて解決されていました。私たちはより実用的でシンプルな方法で解決します。

16個のノードがあり、それらがブロック提案を実行している場合、すべてのノードが保留キューとしてトランザクションを持ち、お互いにゴシップします。このようなキューやゴシップはEthereumやBitcoinでも発生しており、基本的にブロックチェーンのはじまりから存在しています。

すべてのノードには保留キューがありますが、キューは全く同じではありません。ネットワークの遅延、伝搬の遅延、遅いネットワークのトラフィック遅延などがありますが、それでも保留キューはほぼ同じです。あるノードがキューにトランザクションを持っている場合、他のノードは100ミリ秒後にトランザクションを受け入れるかもしれませんが、ほとんどの場合、99%のキューは同じで、1%の違いはネットワーク遅延によるものです。

私が提案を行う場合、実際のトランザクションも存在するため、実際のトランザクションを送る必要はありません。私が送る必要があるのは、トランザクションのハッシュやフィンガープリントのみであり、提案を送信する時は非常に軽量な提案になります。実際のトランザクションではなく、基本的には単一の数字のみになります。

ハッシュのフィンガープリントを取得後、保留中のキューを調べてトランザクションを見つけ、提案を再構築します。トランザクションを送信するのではなく、フィンガープリントを送信するため、これは非常に大きな圧縮になります。保留中のキューに入れられなかったトランザクションがいくつかあるかもしれませんが、その場合、「これらのトランザクションの99%は取得しましたが、この3つのトランザクションについては分かりません」と伝えてください。その場合、私はその3つのトランザクションだけを送信します。このようなアプローチをとっているため、ブロック提案は非常に軽量です。各ノードが他のすべてのノードに提案を送信することは重要ではありません。

Bitcoin、ETH1、ETH2で同じメカニズムを使用する提案がありましたが、現状実現していません。他のプルーフ・オブ・ステーク(PoS)システムも同様に考えておりますが、私の知る限り、このアイデアを実現したのは私たちがはじめてです。そのため、私たちの提案はBitcoinやETH2の提案に比べて、文字通り100分の1の小ささになります。

高速のブロックタイムを持つSKALEと同様の主張をする他のチェーンとの違いとは?

Stan氏: それは重要な質問です。プルーフ・オブ・ステーク(PoS)ブロックチェーンは、10から20のノードで構成され、次のブロックからまた次のブロックと連鎖していきます。ブロックチェーンの中にはファイナリティに時間がかかるものもあります(ここでいう「ファイナリティ」とは、このブロックは絶対にこのブロックだと言い切れるということです)。

バイナリー・コンセンサスを数学的にM個のメッセージよりも速く行うことができないことは、数学の文献で良く知られています。100ノードのバイナリー・コンセンサスを行いたい場合、数学的に証明可能な最良のアルゴリズムは、ノードあたり100メッセージを必要とします。各ノードは基本的に他のすべてのノードに少なくとも最低1つメッセージを送ります。1,000ノードのバイナリー・コンセンサスが必要な場合は、1,000メッセージを送信する必要があります。

このバイナリー・コンセンサスをより少ないメッセージで行うことは不可能です。プルーフ・オブ・ステークの世界に存在する問題は、次に開発されるすべてのプロジェクトが他のプロジェクトよりも優れた性能を備えていることを主張する必要があります。その結果、彼らは文字通り光の速度を超えるシステムを作ると主張しています。

Tendermintよりも速いと主張するものはすべて、光の速さを超えるという議論をしていることを意味しています。この非常に優れたアプローチのホワイトペーパーを読むと、必ずと言ってよいほど、何かを隠そうとしている疑似数学的な言語が使われています。

これらのアルゴリズムは機能するのでしょうか? 答えはイエスです。しかし、問題はなぜこれらのアルゴリズムが機能するのかという点にあります。これらのアルゴリズムの多くは、内部的にすべてのバリデーター、つまりすべてのノードが正常であるということを仮定しています。もし、すべてのノードが正常であるという仮定を立てることができれば、より高速なアルゴリズムを採用することができます。しかしブロックチェーンでセキュリティの前提が崩れると、人々は損失を被る可能性が発生します。

SKALEでは、ある時点におけるバリデーターの1/3が不正を働いても、安全に動作するという前提で、できるだけ高速に動作させることを名言しています。これは、パフォーマンスとセキュリティのトレードオフです。他のネットワークでは、バリデーターがすべて正常であれば、より高速なシステムを運用できるというケースもあるかもしれませんが、私たちはそのようなアプローチは取りません。

SKALEネットワークのモジュール性と、チェーンサービスの拡張性を高めるためにSKALEで行われていることに関する説明

Stan氏: SKALEにおいて、必要なのは最小限のコアだけであると考えています。もし、何かを排除して時間が節約できるのであれば、そうしたいと考えています。しかし、私たちのチェーンは機能を捨てるとユーザーがシステムを実行できなくなるようなものではありません。とはいえ、私たちがすべてに対応すべきではないと考えています。もし誰かがSKALEで何かを開発し、SKALEを拡張したいと考えているのであれば、私たちは彼らの邪魔をしたくありません。

SKALEの理想的なシナリオは、Linuxと同じようにシステムを極めてモジュール化することです。Linuxの場合、Linuxチームが気にしているのはLinuxカーネルだけであり、完全にモジュール化されています。カーネルは30年前から開発されており、非常にゆっくりと進化をし続けています。それ以外のことは、他の会社や他のチームが行っています。SKALEは、Linuxカーネルのようなもので、コアを完成させ、パッケージなどを介して新しいものを公開する方法を提供します。

パッケージやカスタマイズが機能する方法 - チェーンベース毎にチェーン上で機能するのでしょうか?

Stan氏: 2つの異なるシナリオがあります。1つは、Solidityで完全に実装可能な機能がある場合です。Ethereumのコミュニティに近いうちに提供されると思われるEthパッケージ・マネージャーを使用することで、Linuxのインストーラと同様に、SKALEチェーンにインストールすることができます。これは私たちにとって簡単な方法です。

チェーンをより深く修正した場合は、プリコンパイルされたコントラクトを使用することができます。例えば、チェーン上で非常に高速なものを実行したい場合、Solidityはかなり低速になる可能性があるため、PythonまたはC++で作成したいでしょう。そのためには、通常のパッケージ・マネージャを使用して、これをプリコンパイルとしてインストールし、コントラクトに組み込みことができます。

Ethereumメインネットの問題点の1つは、どのアルゴリズムを搭載するかが主観的判断になってしまうことです。さまざまな暗号化手法のために、8~10種類のプリコンパイルされたパッケージを持っていると思いますが、仮想通貨ではアルゴリズムが爆発的に増えています。Ethereumメインネットの問題点は、どれを含めるかを何らかの方法でフィルタリングする必要があるということです(私たちの場合、それはあなたのチェーンです)。特定のアルゴリズムが必要な場合、自身にとって最適なソリューションを実行したいのであれば、それをパッケージに含めて実行することができます。

ネットワークの自己回復とサバイバビリティの仕組みについて説明できますか?

Stan氏: SKALEは、チェーンがクラッシュした場合に対処をする必要があります。Bitcoinのような古いブロックチェーンを見てみると、非常にシンプルなコードで、比較的ゆっくり稼働しているため、クラッシュすることはありません。なぜなら、シンプルなシステムであれば、安全でバグのないシステムを構成することができるからです。Ethereumの場合は、サービス拒否(DoS)攻撃を受けてチェーンがクラッシュしたことが1度や2度あったかもしれません。

プルーフ・オブ・ステーク(PoS)システムにおいては、高速で実行する必要があるため、より複雑なアルゴリズムを使用する必要があります。複雑なシステムでは、クラッシュや大災害に備えて計画を立てる必要があります。チェーンが停止したときのシナリオに対処する必要があります。そうでない場合、あなたは否定していることになります。

それはソフトウェアのバグが原因なのか、AWSのクラッシュが原因なのか、ネットワーク内のイベント等が原因であると考えられます。これに対処するソリューションが必要です。SKALEでは、16個のノードのうち5個以下のノードが無くなった場合、プルーフ・オブ・ステーク・アルゴリズムが気づかないため、チェーンは通常通りに運用されます。

ノードがダウンした場合、そのノードをチェーンに動機させるには、短期と長期の2つのメカニズムが存在します。ノードが数時間停止している場合、他のノードにブロックのキャッシュが保存されています。再起動されたノードは、それらのブロックをダウンロードしてキャッチアップすることができます。ノードが長時間ダウンしていた場合は、他のノードからスナップショットを取得し、そこからキャッチアップしてチェーンに復帰することができます。

深刻な問題が発生し、すべてが停止した場合、システムは停止してしまいます。再びノードをオンラインに戻してチェーンを開始、または最悪の場合はスナップショットから再起動することになります。各ノードは、24時間ごとに自身のスナップショットを作成します(将来的には更に高速化する予定ですが、最初のリリースでは24時間です)。各ノードは独自のコピーが保存されますが、誰でもコピーをダウンロードすることができます。これは、1つまたは複数のノードがダウンした場合に、別の場所に保存されているため、開発者やコミュニティがその処理をできるようにするためです。

SKALE上の活動を通して、最も誇りに思っていることは何ですか?

Stan氏: ソフトウェアのリリースと並行して、私たちのチームは物事の仕組みを理解するという点でとても成長していました。ブロックチェーンは非常に新しいテーマです。はじめた頃は魔法のボタンもありませんでした。当時の人々は、今ほど多くのことを知りませんでした。私たちは論文を研究し、長い学習曲線を描きました。今、1からはじめるとした場合、更に早く開発することができるでしょう。しかし、当時は将来の経験を積んだ人材を雇う方法がありませんでした。

ブロックチェーンは、ユーザーができることとできないことの狭間にあり、従来のシステム開発よりも遥かに複雑な要素を含んでいます。ブロックチェーンは複数のコンピュータ上に存在し、その一部には悪意があり、何か悪いことをする可能性があると考えられています。これは次のレベルの問題が発生します。ブロックチェーンシステムは、開始しても何かが可能かどうかはわかりません。現時点で、それなりに稼働しているのは素晴らしいことだと思います。

また、人々が複雑な分野における専門家になるのを見るのも素晴らしいことです。以前は難しかったことが、急に簡単になったのです。誰もがそれぞれの種類のサブシステムの専門家になりました。チームのメンバーはとてもフレンドリーで、何年経っても友達のような存在です。これはSKALEにとって非常に明るい兆しだと思います。なぜなら、今後物事を素早く発展できると考えているからです。誰もが将来に大きな期待を持っています。これは重要な成果だと思います。