SKALEネットワークは、ここ数週間にわたってインセンティブ付きのテストネットを運営しています。SKALEネットワークのコア開発者であるSKALE Labsは、05月20日にネットワークの初期バリデータ数名と一緒にテストネットを開始しました。このテストネットの初期バージョンは、さらに数週間にわたって実行され続けます。

テストネットの初期段階では、実際のSKALEネットワークバリデータを使用して、(a)バリデータノードの設定に関するテストと検証、(b)バリデータとデリゲーターの操作が適切に行われているかについて確認を行うことを目的としています。また、このテストネットは、SKALEネットワークメインネットのローンチに先立ち、初期の多くの主要なバリデータがネットワークのユニークな機能に慣れるための手段として役立ちました。

ここで注意したいのは、このテストはネットワークの他の厳密なテストに加えて行われたということです。ネットワークのすべてのバージョンは、大規模なバリデータプール内での集中的な品質保証テストを受けています。さらに、SKALEネットワークのスマートコントラクトは、高い評価を受けている独立した監査法人による2つのセキュリティ監査を受けています。このテストネットの目的は、運用テストのレベルをさらに高め、実際の状況でバリデータのオンボーディングプロセスを実行し、バリデータにネットワークの内部動作を理解してもらうことにあります。

テストフェーズ

テストは幾つかのフェーズを経て行われました。このプロセスでは、一連のステップを経てバリデータをグループ化し、マルチパーティー・トランザクションをテストするための様々なパーティとしてバリデータを参加させました。例えば、あるバリデータがバリデータとして機能し、別のバリデータがデリゲーターの役割を果たすことで、バリデータ/デリゲーターの操作をテストするだけでなく、デリゲーターの視点からプロセスを確認することができます。

このテストネットの初期バージョンには、以下のフェーズが含まれていました。

  • バリデータノードの設定
  • デリゲートの運用
  • バウンティの支払い
  • SKALEチェーンの作成とノードのローテーション
  • バックアップテスト/リストア

最初の数フェーズのテストでは、「キリマンジャロへのハイキング」というラベルが貼られていたことに注意が必要です。これは、最初のセットアップと操作が、より複雑なテストのステップやフェーズの準備であることを意味しています。後のフェーズでは、より洗練された操作を特徴とし、ランダム性や予期せぬ動作の要素を導入します。(乱流条件に耐えうるネットワークの能力の信頼性を確保するために、カオス工学の側面を利用しています)

具体的な操作に加えて、パフォーマンスの問題を特定し、ネットワーク内のダウンタイムの原因を特定し、トークン支払いの異常を発見するために、様々なフェーズで多くのデータポイントを詳細に分析しました。これらのデータポイントには、以下の測定値が含まれています。

  • SKALEマネージャが受信したデータの待ち時間のヒストグラム
  • SKALE管理者が受信したダウンタイムのヒストグラム
  • バリデータへのバウンティ支払いの時系列

テスト参加者

このバージョンのテストネットには、20名のバリデータが参加しています。これらのバリデータは、経験豊富なネットワーク運用チームから、経験豊富な仮想通貨マイナー、経験豊富なETH開発者まで多岐にわたっています。

セットアップの段階で、私たちが素晴らしいバリデータのグループと一緒に仕事をしていることがすぐに明らかになりました。彼らは幅広い分野で多くの経験を持っています。複雑なインフラストラクチャのセットアップやオーケストレーションに長年の経験があり、EthereumやEVMに関する確固たる実績がありました。セットアッププロセスで受け取ったフィードバックだけでも、バリデータのオンボーディングプロセスを強化し、システムのセキュリティをさらに強化するのに役立ちました。

これらすべての洞察と経験のバリエーションは、ネットワークチームによってテストネット学習としてすぐに考慮され、ノードのエンドツーエンドのセットアップが可能な限りスムーズに行えるようになりました(SKALEネットワークの全体的な目標は真の分散型ネットワークになることであり、ノードのセットアップを可能な限りターンキーにすることは、このプロセスの重要なステップです)。

ノード運営者の中には、バリデータはセットアップのハードルを通過することを通過儀礼として参加する必要があると感じている人もいますが、SKALEのコアエンジニアリングチームとソリューションエンジニアリングチームはこれとは異なる考えを持っており、2時間以内で完了するような確実なセットアッププロセスの実現に取り組んでいます(この閾値は、改善前のセットアップ段階でもほとんどのバリデータで達成されていました)。

SGXウォレットとABBAベースのコンセンサスレイヤーのテスト

ノード設定のステップは、バリデータとノード登録に続いて行われました。ほとんどのバリデータは他のマイニングや操作の検証の経験があるため、これらの操作はすべてバリデータに理解されていました。少し時間がかかりましたが、特にSKALEネットワークの特有の分野に重点を置いたテストを行いました。

これらの分野には、SGXウォレットや、SKALE EVMで使用されるABBAベースのコンセンサスレイヤーなどがあります。SGXウォレットは、バリデータや開発者が機密データを保護し、トランザクションを継続的に確認する必要性を減らし、BLS署名やデジタルキー生成などの SKALE暗号処理のゲートウェイとしての役割を果たすことで、バリデータや開発者を支援します。ABBAベースのコンセンサスレイヤーは、安全で信頼性の高いコンセンサスプロセスを提供すると同時に、高いトランザクションスループットとレイテンシーにおいて、高パフォーマンスを発揮するメカニズムを提供します。

インテルSGX

SKALEネットワークはインテルSGXベースのチップセットを利用して、セキュリティ強化、データ保護の強化、デジタルキー生成の高速化を実現しています。インテルSGX(Software Guard Extensions)は、開発者が機密情報をメモリ内の実行領域である別の区域に分割することを可能にし、より高いセキュリティ保護を提供します。インテルSGXベースのサーバーを利用するもう一つの利点は、SKALEネットワークで大きく取り上げられている BLS(Boneh-Lynn-Shhacham)署名を使用することです。SKALEネットワークバリデータのFAQには、インテル SGX、BLS署名、SKALE ネットワークでの役割についての詳細が記載されています。

ABBAベースのコンセンサス

非同期バイナリビザンチン協定(ABBA)プロトコルの変形版が、SKALEネットワークコンセンサスモデル内で使用されています。ABBAプロトコルの基本的な利点は、各潜在サブノードやダウンサブノードが低速リンクとみなされるサブノードダウンタイムの場合にロバスト性を発揮するように設計されていることです。ABBAベースのコンセンサス層は、各ノード内のコンテナとして含まれるEVM(Ethereum Virtual Machine)のデフォルトのコンセンサスモデルを置き換えます。このEVMは各仮想化サブノード内でインスタンス化され、各SKALEチェーンを管理・維持します(ABBAベースのプロトコルの詳細はこちらをご覧ください。コンテナ化と仮想化の仕組みの詳細は、Containerization & The Future of Decentralized Infrastructureに掲載されています)。

バリデータの中には、SGXの使用経験が豊富な人もいれば、SGXの設定や可用性についてスピードを上げる必要がある人もいました。また、ローカルSGXとネットワークSGXの違いをより明確にしました(ノードクラスタは、ネイティブSGXサーバ上で実行することも、デジタルキー生成やその他の SGX依存の操作のためにネットワーク化された SGX サーバを利用することもできます)。

その過程で、クラウドプロバイダーやハードウェアの設定についても多くの素晴らしいフィードバックをいただきました。バリデータの中には、独自のSGX専用サーバーを運用している人もいれば、様々なクラウドプロバイダーで実験を行い、設定やパフォーマンスを分析している人もいました。クラウドプロバイダーの中には、作業が簡単なものもあれば、適切な設定を行うために追加の努力が必要なものもありました。全体として、バリデータがノードのセキュリティを確保し、SGXベースのチップセットが提供するメリットを活用するために行った作業に感銘を受けました。

バリデータのデリゲートとバウンティペイアウトのテスト

もう1つの重要なテスト領域は、すべてのバリデータおよび、デリゲーターのトランザクションフローです。委任サポートはSKALEネットワークの重要な要素です。SKALEトークンプロトコルによって強化された委任操作を考慮すると、この分野でバリデータを重要なテストを実施することが重要でした。SGXウォレットは、SKALEネットワーク内の取引を完璧にする上で特に重要な役割を果たしており、バリデ ータはバリデータウォレットを使用してバウンティを受け取り、委任操作を管理していました。バウンティはバリデータに支払われ、それが引き金となって(バリデータが代行)デリゲーターへの支払いが行われました。バウンティの出金と手数料の出金もテストフェーズの1部でした。

これまでの学び

インセンティブを与えられたテストネットの初期フェーズでは、大きな問題は発生しませんでした。あるノードでは、1つのコンテナからのEthereumコールを過剰に実行したため、ノードが1日のトランザクション制限を超えてしまうという状況に遭遇しました。この問題は特定され、解決されました。

我々が直面したもう1つの問題は、SKALEデーモン内のコードとSGX署名生成へのインターフェイスで、特定の条件がパフォーマンスに影響を与えていることが判明しました。チームは、アルゴリズムを特定して修正することで、このパフォーマンスの低下に対処し、問題を解決することができました。また、デジタル鍵生成と BLS 公開鍵署名に関する他のいくつかの暗号問題も修正し、すべての変更点を SKALEメインネットに導入しました。

その他の問題は、ドキュメント、要求された機能、ハードウェアの設定が中心でした。バリデータの中には、情報の不足しているトピックについての知識を不当に仮定した説明が原因で、特定のセットアップの問題で行き詰ってしまった人も存在しました。他のバリデータは、ノードの設定と操作をよりシームレスにするために、特定のCLIコマンドを要求しました。また、クラウドサービスやベアメタルセットアップに基づくハードウェア設定の問題を特定したバリデータもありました。これらの要求のほとんどすべては、短期間で解決されたか、または解決される予定です(ネットワークの手に負えない構成の問題は別として)。

次は何をするのか

このバージョンのテストネットでは、まだ複数のフェーズがあります。具体的には、SKALEチェーンが作成され、ランダムにサブノードが割り当てられます。サブノードのローテーションは、各スワップポイントでのブロック分析と検証とともに行われます。予期せぬ条件も導入され、検証者はノードの回復、コンセンサスの一時停止と継続、(ロスレストランザクションのスループットで)その他のSKALEチェーン関連の操作をテストすることができるようになります。

ノードが故障した場合のノード交換もテストされます。ノードやサブノードがダウンした場合、「このノードを修理してください」という技術サポートはありません。その代わりに、すべてのノードが特定の時点でスナップショットを撮影しています。ノード/サブノードがダウンした場合、新しいサブノードがチェーンにスワップされ、スナップショットが適用され、この新しいサブノードがチェーンに追いつくようになります(そしてSKALEチェーンに自己回復の方法を与えます)。この自己回復機能はQAテストネットでテストされており、SKALEネットワークのマスターコードベースに統合される最終的なコンポーネントです。このノード交換機能のテストはテストネットの次のフェーズに含まれています。

最後の感想

テストネットでのバリデータとの作業は、全体的に非常にやりがいのあるものでした。バリデータの知識レベルは素晴らしく、ノードの設定や運用を改善するための多くの方法を特定するのに役立ちました。彼らは最高の質問をしてくれて、正しい答えが得られるように私たちのチームに挑戦してくれました。

バリデータはまた、SKALEのアーキテクチャが他のネットワーク、特にコンテナ化と仮想化に関しては世代交代したものであることを実感させてくれました。これら2つの技術が提供する柔軟性と拡張性は、セットアップと運用の際に学習曲線をもたらします。このすべては確かに実行可能でしたが、それは彼らの現在のネットワーク技術スタックから少し離れており、完全にネットワークインフラストラクチャ内部の動作に適応するために少し時間がかかりました。

それはさておき、コンテナ化と仮想化を併用した方がはるかに良い結果が得られると考えており、我々のアプローチは、スループット、運用上の柔軟性、その他の利点を考慮すると、モデル化されることが多いと感じています。これらのバリデータのサポートに感謝し、本番環境で一緒に仕事ができることを楽しみにしています。

SKALEネットワークについて

SKALEネットワークは、オープンソースの弾性ブロックチェーンネットワークプロトコルです。その使命は、フルステートのスマートコントラクトを実行する費用対効果の高い高性能なサイドチェーンを素早く簡単にセットアップできるようにすることです。SKALEネットワークは、セキュリティや分散化を諦めることなく、スピードと機能性を提供し、開発者にパフォーマンスの高い体験を提供することを目指しています。

SKALEネットワークをTelegram(@SkaleOfficial)、Twitter (@SkaleNetwork)、Discord(www.skale.chat)でフォローしたり、SKALEウェブサイト(www.skale.network)にアクセスしたり、SKALE開発ポータル(skale.network/docs)で開発者向けのドキュメントを見たり、Github(github.com/skalenetwork)でコードを確認することができます。

参照先