コンテンツへスキップ
0%

Ethereumノードの種類:フル・アーカイブ・ライトの違い

Alchemy team headshot

執筆者 Alchemy

2022年8月11日 公開読了時間 1 分

Ethereumブロックチェーンは、世界中に分散したコンピュータのネットワークであり、ノード同士が処理能力やリソースをプールし、ブロック検証の責務を分担することで、ネットワークがコンセンサスに達する(つまり共有された状態について合意する)ことを可能にしている。

この記事では、Ethereumブロックチェーンで使われている各種のEthereumノード(フルノード、アーカイブノード、ライトノード)とその違いについて解説する。

フルノードとは何か

フルノードはブロックチェーンデータの完全なコピーを保持し、他のフルノードからトランザクションとブロックを受信・検証し、他のフルノードへ転送することでネットワークに貢献する。

スマートコントラクトのトランザクションが実行されると、Ethereumのフルノードはそのスマートコントラクト内のすべての命令を実行する。フルノード全体として、スマートコントラクトの実行が意図した結果を生んでいるかどうかを判定する。ただし、フルEthereumノードの運用にはコストがかかり、多くの電力を消費する。

フルノードクライアント

クライアントとは、各ブロック内のすべてのトランザクションを検証し、ネットワークの安全性とトランザクションデータの正当性を保証するEthereumソフトウェア実装のことである。Ethereumフルノードクライアントは各ブロック内のすべてのトランザクションを検証し、ネットワークにセキュリティとデータの正確性を提供する。

各Ethereumクライアントはそれぞれ独自の機能と利点を備えている。実装が多様であるため、異なるユーザー層に合わせて選択できる。Ethereumノードクライアントを選ぶ際には、機能、サポート体制、web3プログラミング言語、ライセンスを考慮する必要がある。

フルノードクライアントのソフトウェア実装(execution layerクライアント)

execution layerのフルノードクライアント実装には、主に4種類がある。

  1. Geth(Go Ethereum) - Goで書かれている
  2. Nethermind - C#と.NETで書かれている
  3. Erigon - Goで書かれている
  4. Hyperledger Besu - Javaで書かれている

The Merge以降、EthereumがProof-of-WorkからProof-of-Stakeへ移行すると、各フルノードは前述のexecution layerクライアントのいずれかと合わせてconsensus layerクライアントを実行する必要がある。

フルノードクライアントのソフトウェア実装(consensus layerクライアント)

主なconsensus layerクライアントは5種類ある。

  1. Prsym - Prysmatic LabsによってGoで構築
  2. Teku - BesuチームによってJavaで構築
  3. Lighthouse - Sigma Primeによって構築され、Rustで書かれている
  4. Nimbus - NimbusチームによってRustで構築
  5. Lodestar - ChainSafe SystemsによってTypescriptで構築

ライトノードとは何か

ライトノードは、フルノードのようにブロックデータ全体を保持するのではなく、直前のブロックのハッシュやタイムスタンプといったブロックヘッダーデータのみを保持する。ライトノードはフルノードへオンデマンドでリクエストを送り、ユーザーが必要とする状態の部分のみを検証する。

パーソナルコンピュータのような低スペックのデバイスは、コストのかかるデータ保存・書き込み処理を行わないため、ライトノードの恩恵を受けやすい。

ライトノードのユースケース例:

  1. 残高の確認
  2. トランザクションがネットワークによって承認されたかどうかの検証
  3. イベントログの確認

パーソナルコンピュータに加え、ライトノードはモバイル端末やRaspberry Piといった低スペックデバイスでも効率的に稼働させることができる。

アーカイブノードとは何か

アーカイブノードは、フルノードと同じデータをすべて保持しているのに加えて、Genesis Block(つまり最初のブロック)まで遡るブロックチェーンの履歴状態データもすべて保持している。

フルノードでも過去のブロックチェーン状態データを再構築することはできるが、この同期処理には時間がかかり、非効率である。ユースケースによっては、このデータを迅速に提供する必要がある場合もある。アーカイブノードは最初のブロックまで遡る履歴データを保持しているため、トランザクションのトレースが可能である。

アーカイブノードは過去のデータを数ギガバイト単位で保存するため、一般的なユーザーにとっては扱いにくい一方、ブロックエクスプローラー、ウォレット、オンチェーン分析企業といったサービスプロバイダーにとっては価値がある。

Erigon対Geth

Ethereumプロトコルの公式なGolang実装がGo Ethereum(Geth)である。Gethは最も広く使われているEthereumクライアントであり、ユーザー数も最多で、開発者向けにGoベースの幅広いツール群を提供しており、それらはすべてオープンソースでGNU LGPL v3のもとでライセンスされている。

ErigonはGethのフォークであり、速度とディスク容量の節約に重点を置いている。ErigonはGoで開発された、完全に再設計されたEthereumノードクライアント実装であり、将来的には他の言語への移植も計画されている。Erigonは、よりモジュール性が高く、高速で、洗練されたEthereum実装の提供を目指している。

Gethと比較して、Erigonは並列化された開発、フラットなストレージ構造、前処理、段階的な同期処理により、より小さなストレージフットプリント、より速い同期速度を実現しており、trace APIを利用する必要がある開発者にとって全体的に優れた体験を提供する。

フルノードとアーカイブノードの違いは何か

フルノードとアーカイブノードの主な違いは、アーカイブノードがチェーンの過去のすべての状態(つまりEthereumエコシステムの完全な記録)を保持するのに対し、フルノードは現在の状態データのスナップショットのみを保持すればよいという点である。

簡単に言えば、アーカイブノードは最初のブロック以降のすべての履歴データを保持するのに対し、フルノードは新規トランザクションの検証に必要な、最も重要な現在のデータのみを保持し、不要なブロックチェーンデータは「プルーニング」される。

適切なノードの種類を選ぶ方法

どの種類のEthereumノードを展開すべきかは、ノードのセットアップや機能が大きく異なるため、ユースケースとリソースによって決まる。

自分のノードを運用することで、プライベートかつ自己完結的で、信頼を必要としない(trustless)方法でEthereumを利用できる。データは自分自身のノードクライアントで検証できるため、ネットワークを信頼する必要がない。

フルノードの利点は、パブリックブロックチェーン上のあらゆるスマートコントラクトと直接通信できる点である。また、フルノードを通じてパブリックブロックチェーンへスマートコントラクトをデプロイすることも可能である。

ただし、無制限のデータ利用、ストレージ、直接的なスマートコントラクトとのやり取りといった機能は無償ではなく、フルノードはマシンのハードウェアや帯域幅に負荷をかける場合がある。

アーカイブノードはフルノードが保持するすべての情報を保持し、さらにブロックチェーンの状態履歴を作成する。クライアントの同期が完了した後も、アーカイブノードは過去のデータを保存し続ける。

アプリケーションが過去のブロックチェーンデータを必要とする場合は、自分でアーカイブノードを運用するか、アーカイブノードへのアクセスを提供するブロックチェーンノードプロバイダーを選ぶ必要がある。

ライトノードはフルノードに似ているが、扱うデータ量はごくわずかである。ライトノードはヘッダーチェーンのデータのみを保存し、追加データはリクエストがあった場合にのみ受信する。データの妥当性を検証することはできるが、ブロック検証そのものには本格的に関与しない。

Alchemyのノードインフラストラクチャ

Alchemyはweb3ノードインフラストラクチャプロバイダーであり、Alchemyのノード APIとツール群一式を通じて、web3開発者に強化されたスケーラビリティ、安定性、データの正確性を提供するブロックチェーン開発者向けプラットフォームである。AlchemyのCortexエンジンは、専用の分散システムと独自開発のコーディネーターサービスを用いることで、ノード機能のあらゆる側面を強化し、リアルタイムでのデータの正確性を保証する。

ノードは汎用的に設計されており、高可用性を前提とした設計になっていないため、自前でノードを運用するアプリケーションは、ノードプロバイダーを利用する場合と比較して、レイテンシやダウンタイムが平均より高くなる可能性がある。

スケーラブルで、信頼性が高く、正確

Alchemyのノード APIは、99.99%の稼働率保証付きのスケーラブルなノードアーキテクチャを提供しており、dApp開発者は製品やユーザーへの中断なくスケーリングを続けることができる。

Alchemyの無限にスケール可能なノードインフラストラクチャ、他に類のない信頼性、速度、そしてデータの正確性は、Polygonを支えるために使われており、Polygonはアダプションの触媒として機能し、Polygon上に構築されるアプリの数の大幅な増加をもたらしている。

分散型取引所のグローバルな基盤であり、数千億ドル規模の取引をあらゆる主要ブロックチェーン上で流通させている0xも、信頼性の高いノードインフラストラクチャとしてAlchemyを採用している。

無料のアーカイブノードアクセス

Alchemyは、mainnetとtestnetの両方で無料のアーカイブアクセスを提供する充実した無料プランを用意している。Alchemyについてさらに詳しく知り、無料のアーカイブアクセスを得るには、今すぐ無料アカウントに登録すること。

Background gradient

ブロックチェーンで魔法を生み出す

Alchemyは、最も強力なweb3開発者向けプロダクトとツールを、豊富なリソース、コミュニティ、そして卓越したサポートと組み合わせて提供します。