Helios は、Rust で書かれたトラストレスで効率的でポータブルなマルチチェーン ライト クライアントです。
Helios は、信頼できない集中型 RPC エンドポイントを、ユーザーにとって安全で操作できないローカル RPC に変換します。数秒で同期し、ストレージを必要とせず、モバイル デバイスで実行できるほど軽量です。
Helios はバイナリ サイズが小さく、WebAssembly にコンパイルされます。そのため、ウォレットや dapps 内に直接埋め込むのに最適なターゲットになります。
まず、Helios のインストーラーであるheliosup
をインストールします。
curl https://raw.githubusercontent.com/a16z/helios/master/heliosup/install | bash
Helios をインストールするには、 heliosup
を実行します。
Ethereum で Helios を実行するには、以下のコマンドを実行します。 $ETH_RPC_URL
Alchemy などの RPC プロバイダー URL に置き換えます。
helios ethereum --execution-rpc $ETH_RPC_URL
$ETH_RPC_URL
eth_getProof
エンドポイントを提供する、サポートされている Ethereum 実行 API プロバイダーである必要があります。 Infura は現在これをサポートしていません。錬金術を使用することをお勧めします。
Helios はhttp://127.0.0.1:8545
でローカル RPC サーバーを実行するようになります。
Helios は、サポートされている RPC メソッドのドキュメントも rpc.md ファイルで提供します。
OP スタック チェーンで Helios を実行するには、以下のコマンドを実行して、 $ETH_RPC_URL
Alchemy などの RPC プロバイダー URL に置き換え、 $NETWORK
サポートされている OP スタック ネットワークに置き換えます。
helios opstack --network $NETWORK --execution-rpc $ETH_RPC_URL
現在サポートされているネットワーク値はop-mainnet
とbase
ですが、さらに多くの値が近々追加される予定です。
--consensus-rpc
または-c
使用して、カスタム コンセンサス レイヤー RPC エンドポイントを設定できます。これは、ライト クライアント ビーコンチェーン API をサポートするコンセンサス ノードである必要があります。これには Nimbus を使用することをお勧めします。コンセンサス RPC が指定されていない場合は、デフォルトで当社が運営するhttps://www.lightclientdata.org
が使用されます。
--checkpoint
または-w
使用して、カスタムの弱い主観性チェックポイントを設定できます。これは、エポックの最初のビーコン ブロック ハッシュと等しくなければなりません。弱い主観性のチェックポイントは、システムの信頼の根源です。これが悪意のある値に設定されている場合、攻撃者はクライアントを間違ったチェーンに同期させる可能性があります。 Helios は最初にデフォルト値を設定し、後で使用できるように、確認された最新の完成したブロックをキャッシュします。
--network
または-n
同期先のネットワークを設定します。現在有効なオプションはmainnet
、 sepolia
、およびholesky
ですが、ユーザーは構成ファイルにカスタム ネットワークを追加できます。
--rpc-port
または-p
ローカル RPC を実行するポートを設定します。デフォルト値は8545
です。
--rpc-bind-ip
または-b
JSON-RPC サーバーにバインドする IP を設定します。デフォルトでは、Helios は127.0.0.1
を使用します。リモート アクセスを許可するには、 0.0.0.0
を使用します。
--data-dir
または-d
キャッシュされた弱い主観性チェックポイントを保存するために Helios が使用するディレクトリを設定します。各ネットワークは、わずか 32 バイトの最新のチェックポイントのみを保存します。
--fallback
または-f
チェックポイント フォールバック URL (文字列) を設定します。これは、 --checkpoint
フラグで提供されるチェックポイントが古すぎて Helios が同期に使用できない場合にのみ使用されます。何も指定されず、 --load-external-fallback
フラグが設定されていない場合、Helios はエラーになります。たとえば、次のようにフォールバックを指定できます: helios --fallback "https://sync-mainnet.beaconcha.in"
(または、次のように省略表現を使用します: helios -f "https://sync-mainnet.beaconcha.in"
)
--load-external-fallback
または-l
、弱い主観性チェックポイントのフォールバックを有効にします (値は必要ありません)。たとえば、設定したチェックポイント値が古すぎて Helios が同期できないとします。このフラグが設定されている場合、Helios は ethpandaops/checkpoint-sync-health-checks にあるコミュニティによって管理されているリスト内のすべてのネットワーク API に対して最新のスロットをクエリします。スロットのリストは健全な API に対してフィルターされ、最新のエポックで発生した最も頻繁なチェックポイントが返されます。注: これはコミュニティによって管理されているリストであるため、セキュリティの保証はありません。 --checkpoint
に渡されたチェックポイントが失敗した場合の最後の手段としてこれを使用してください。リストされた API からは、正常であるとみなされる場合でも、悪意のあるチェックポイントが返される可能性があるため、これは推奨されません。これは次のように実行できます: helios --load-external-fallback
(または短縮形のhelios -l
)。
--strict-checkpoint-age
または-s
厳密なチェックポイント経過時間チェックを有効にします。チェックポイントが 2 週間以上経過していて、このフラグが有効になっている場合、Helios はエラーになります。このフラグがないと、Helios は代わりにユーザーに警告を表示して続行します。チェックポイントが 2 週間以上前のものである場合、Helios およびオーバーライト クライアントが誤って同期する原因となる理論上の攻撃が存在します。これらの攻撃は複雑でコストがかかるため、Helios はデフォルトでこれを無効にしています。
--help
または-h
ヘルプ メッセージを出力します。
すべての構成オプションは~/.helios/helios.toml
でネットワークごとのレベルで設定できます。構成ファイルの例を次に示します。
[メインネット]consensus_rpc = "https://ethereum.operationsolarstorm.org"execution_rpc = "https://eth-mainnet.g.alchemy.com/v2/XXXXX"checkpoint = "0x85e6151a246e8fdba36db27a0c7678a575346272fe978c9281e13a8b26cdfa68"[op-mainnet]consensus_rpc = "https://op-mainnet.operationsolarstorm.org"execution_rpc = "https://opt-mainnet.g.alchemy.com/v2/XXXXX"[base]consensus_rpc = "https://base.operationsolarstorm.org"execution_rpc = "https://base-mainnet.g.alchemy. com/v2/XXXXX"
構成オプションの包括的な内訳は、config.md ファイルで確認できます。
Helios を Rust ライブラリとして実行する例は、example ディレクトリにあります。
チェックポイントは、実行層ブロック ハッシュではなく、ビーコン チェーン コンセンサス層ブロック ハッシュです。 Holesky の実行層ブロック ハッシュの例は、https://holesky.etherscan.io/blocks に示されています。
チェックポイントは次のリンクから取得できます。
イーサリアムメインネット https://beaconcha.in
Holesky テストネット https://holesky.beaconcha.in
2 週間以内のチェックポイントとしてブロック ハッシュを使用することをお勧めしますが、実際には古いチェックポイントを使用することもでき、引き続き機能しますが、警告が表示されます。作成されてから 2 週間未満のチェックポイントを使用すると、実行が非常に困難ないくつかの攻撃を防ぐことができます。
たとえば、Holesky Testnet の最近のチェックポイントを取得するには、https://holesky.beaconcha.in/ に移動し、最終的なエポックの最初のブロックのブロック ハッシュを取得します。執筆時点では、エポック 78425 の最初のブロック ハッシュは、ブロック ルート 0x60409a013161b33c8c68c6183c7753e779ec6c24be2f3c50c6036c30e13b34a6 を持つ最も古いスロット 2509600 であり、使用する最新のチェックポイント値です。
この最新のチェックポイントは、Ethereum Holesky Testnet で Helios Light Client ノードを実行するためのコマンド ラインの追加 CLI オプションとして提供される場合があります。
ヘリオスイーサリアム --ネットワークホールスカイ --consensus-rpc http://testing.holesky.beacon-api.nimbus.team --execution-rpc https://ethereum-holesky.g.allthatnode.com --チェックポイント 0x60409a013161b33c8c68c6183c7753e779ec6c24be2f3c50c6036c30e13b34a6
たとえば、イーサリアム メインネットの最近のチェックポイントを取得するには、https://beaconcha.in に移動し、最終的なエポックの最初のブロックのブロック ハッシュを取得します。書き込み時点では、エポック 222705 の最初のブロック ハッシュは、ブロック ルート 0xe1912ca8ca3b45dac497cae7825bab055b0f60285533721b046e8fefb5b076f2 を持つ最も古いスロット 7126560 であり、使用する最新のチェックポイント値です。
この最新のチェックポイントは、Ethereum メインネット上で Helios Light Client ノードを実行するためのコマンド ラインの追加 CLI オプションとして提供される場合があります。
ヘリオスイーサリアム --ネットワークメインネット --consensus-rpc https://www.lightclientdata.org --execution-rpc https://ethereum-mainnet.g.allthatnode.com --チェックポイント 0xe1912ca8ca3b45dac497cae7825bab055b0f60285533721b046e8fefb5b076f2
CLI 引数の代わりに設定ファイルを使用する場合は、設定ファイル内のサンプル チェックポイントを上記で取得した最新のチェックポイントに置き換える必要があります。
Helios が期待どおりに動作することを確認するために、実行できる包括的なテスト スイートが用意されています。テストを実行する前に、必ずプロジェクト ディレクトリのルートに.env
ファイルを作成してください。 .env.example
ファイルの内容をコピーして、独自のシークレットを入力できます。
cp .env.example .env
すべてのテストを実行するには、次のコマンドを使用します。
貨物テスト-すべて
個々のパッケージのテストを実行するには、次のコマンドを使用し、テストするパッケージに置き換えます。
カーゴテスト -p <パッケージ名>
Helios へのあらゆる貢献を歓迎します。 PR を開く前に、バグまたは機能の詳細を説明する問題を送信してください。 PR を開くときは、コントリビューションがビルドされ、 cargo fmt
でリントされていること、および該当する場合はテストが含まれていることを確認してください。
Helios に問題がある場合、または貢献を検討している場合は、こちらからお気軽にテレグラムにご参加ください。
このコードは現状のまま提供されています。コードの安全性や正確性については、明示的か黙示的かを問わず、いかなる保証も表明も保証も行われません。監査されていないため、意図したとおりに動作するという保証はなく、ユーザーは送信された情報の遅延、障害、エラー、欠落、または損失を経験する可能性があります。このリポジトリのいかなる内容も、特定の事実や状況に対する投資アドバイスや法的アドバイスとして解釈されるべきではなく、有能な弁護士に代わるものではありません。これに関する質問や懸念がある場合は、あなたの管轄区域で評判の良い弁護士に問い合わせることを強くお勧めします。 a16z は前述の使用について一切の責任を負いません。ユーザーは慎重に使用し、自己の責任で使用する必要があります。詳細については、a16z.com/disclosures を参照してください。