Solana Labsバリデータクライアントの最新アップグレードであるSolana v1.16アップデートについて学びましょう
この記事の内容は何ですか?
Solana のバリデーター ネットワークは、Solana Labs バリデーター クライアントの最新アップグレードであるバージョン 1.16 の採用において、圧倒的多数に達しました。ボランティアとカナリア ノードの献身的な努力に支えられた徹底的な監査期間を経て、このマイルストーンは、約 10 か月に及ぶ厳しい開発の集大成です。
次のセクションでは、v1.16 がどのようにテストされたか、および Solana の機能ゲート システム (新機能がネットワークに段階的に導入される方法を管理するフレームワーク) について詳しく説明します。次に、v1.16 で実装された新機能について説明します。
v1.16のテスト方法
v1.16は、過去数か月にわたって厳格なテストを受けています。v1.16リリースは、2023年6月7日からテストネットで実行されており、多数のストレステストを受けています。さらに、2023年8月23日から、ボランティアノードの小さなサブセットがv1.16にアップデートされました。これらのボランティアは、RPCノードの起動が遅い、一般的な保護違反など、さまざまな問題を特定して解決することができました。Solana Labsは、メインネットベータにいくつかのカナリアノードも展開しました。これは、実際の状況下でのv1.16ノードの安定性を監視するために行われました。これらのカナリアノードの過去のアクティビティと進捗状況を確認するには、Solana Tech Discordの#canaries-monitoringチャンネルにアクセスしてください。
エッジ ケースやまれな競合状態を捕捉するために、複数のランタイム ファザーを使用して、部分的にランダム化されたトランザクションを実行しました。これらのトランザクションは、一貫したパフォーマンスを確保するために、異なるランタイム バージョン間で実行されました。v1.16 は、Halborn によって徹底的に監査されています。監査レポートは、時間の経過とともに利用可能になると、このリポジトリに公開されます。
フィーチャーゲート
次のセクションで説明する機能の一部は、現在ライブではないことに注意してください。代わりに、機能は機能ゲート システムを使用して徐々に展開されます。機能は、相対的な優先度と、他のネットワークでアクティブ化された順序に基づいて、特定のエポックでアクティブ化されます。機能ゲートのアクティブ化スケジュールは、これまで、ここで確認できる基準のリストに基づいてアドホックに行われてきました。基本的に、これらのゲートは最初に tesnet でアクティブ化され、次に devnet、最後に mainnet-beta でアクティブ化される必要があります。機能をアクティブ化するには、必要なアクティブ化キー ペアを持つエンジニアがトランザクションを送信します。このトランザクションは処理され、次のエポックで機能がライブになります。適切なパフォーマンスを確保するために、ネットワークごとに一度にアクティブ化できる機能ゲートは 1 つだけです。一部の機能には「ソーク」期間が必要な場合があり、これにより優先度の低いゲートのアクティブ化が遅れる可能性があることにご注意ください。
この機能ゲート システムは、コンセンサスを破る変更によって、新しいバージョンを実行しているバリデータが正規チェーンから分岐してブロックの生成を継続することがないようにするために導入されています。たとえば、v1.14 バリデータは新しい v1.16 機能について認識しておらず、紛争が発生するとネットワークがクラッシュする可能性があります。今週 Solana のコードベースにマージされたコミットでは、すべてのコンセンサスを破る変更に Solana 改善ドキュメント (SIMD) を含めることが推奨されています。機能ゲートの問題テンプレートには、問題の SIMD へのリクエストが含まれるようになりました。これにより、開発プロセスの標準化が促進され、新しい変更に対するドキュメント化によって透明性が向上します。
機密移転
Token2022 が導入した機能である Confidential Transfers は、ゼロ知識証明を利用して SPL トークンの残高と取引額を暗号化します。この機能の主な目的は、匿名性よりも機密性を重視することでユーザーのプライバシーを向上させることです。
機密転送では、暗号化された金額に対する数学的演算に Twisted ElGamal 暗号化が活用されます。これらの転送は、シグマ プロトコルを使用して検証されます。シグマ プロトコルは、一方の当事者 (証明者) がもう一方の当事者 (検証者) に対して、特定の秘密を実際に開示することなく、その秘密を知っていることを証明できる、ゼロ知識証明の特殊なカテゴリです。機密転送の複雑さについて詳しくは、当社の記事「Token2022 とは?」をお読みください。
機密転送の展開に伴う便利な機能として、コマンド ライン インターフェイス (CLI) サポートが追加されました。create-token コマンドが拡張され、--enable-confidential-transfers フラグが含まれるようになりました。これにより、ユーザーは機密転送を有効にしてトークンを発行できます。また、update-confidential-transfer-settings コマンドが追加され、特定のミントの機密転送構成を動的に変更できるようになりました。これにより、監査キーと承認設定を更新できます。
ゼロ知識証明のランタイムサポートの向上
v1.16 リリースでは、ゼロ知識計算、特に 128 ビットの楕円曲線演算のランタイム サポートが強化され、Solana のゼロ知識機能が強化されました。v1.16 では、証明を効率的に生成するために重要な alt_bn128 システム コールが導入されています。
alt_bn128 は、暗号化操作に使用される楕円曲線の特定の実装を指し、Barreto-Naehrig 曲線 (BN-128) として知られています。BN-128 は、ペアリングに適した楕円曲線の特定のタイプであり、zk-SNARK (ゼロ知識簡潔非対話型知識論証) の効率的な実装を可能にします。余談ですが、楕円曲線は、特定の計算をより効率的に実行できる場合に「ペアリングに適している」と見なされます。したがって、この場合、BN-128 曲線を使用すると、ゼロ知識計算と証明の作業が大幅に高速化されます。
Syscall、つまりシステム コールは、オペレーティング システム カーネルからサービスを要求するために使用されます。Solana のコンテキストでは、Syscall により、Solana 仮想マシン (SVM) で実行されているプログラムが外部のリソースと対話できるようになります。
alt_bn128 システムコールは、Solana プログラムが高効率の BN-128 曲線と対話するために使用できる呼び出しです。これにより、ゼロ知識証明の検証が合理化され、Solana のセキュリティとプライバシー機能が向上します。alt_bn128 g1 および g2 システムコールも最近追加され、Groth16 証明の圧縮が可能になりました。これらのタイプの証明は証明ごとに 256 バイトの命令データを占有し、プライベート Solana プログラム (PSP) は現在 2 つの Groth16 証明を検証する必要があるため、これは重要です。g1 および g2 圧縮により、証明ごとに必要なバイトを半分の 128 バイトに削減できます。これはスペース効率にとって重要です。
さらに、Solidity ベースのコントラクトに、楕円曲線演算用の次のプリコンパイル済みコントラクトの呼び出しが含まれている場合、Solana との互換性の問題が発生します。
bn256Add - 楕円曲線演算の加算を実行します
bn256ScalarMult - 楕円曲線演算でスカラー乗算を実行します
bn256Pairing - ブロックガス制限内で zkSNARKs 検証を実行するための楕円曲線ペアリング操作
これらの操作は、EIP-196、EIP-197、EIP-198 を通じて Ethereum で標準化されています。alt_bn128 システムコールの導入は、互換性のギャップを埋めるための大きな一歩です。これらの楕円曲線操作に依存する Solidity コントラクトは、Solana への移行や相互運用が容易になる可能性があります。
Solana の v1.16 アップデートに alt_bn128 システムコールが追加されたことにより、ゼロ知識証明を効率的かつ安全に処理する Solana の能力が大きく向上しました。