---
title: "Ethereumノードの種類:フルノード vs. アーカイブノード vs. ライトノード"
description: "Ethereumノードの種類、仕組み、違いを解説"
---

# Ethereumノードの種類:フルノード vs. アーカイブノード vs. ライトノード

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

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

## **フルノードとは何か**

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

スマートコントラクトのトランザクションが実行されると、Ethereumのフルノードはスマートコントラクト内のすべての命令を実行する。フルノード同士が協調することで、スマートコントラクトの実行が期待通りの結果を生み出しているかどうかを判定する。しかし、[フルEthereumノードの運用](https://www.alchemy.com/overviews/running-your-own-node)にはコストがかかり、大量の電力を消費する。

### **フルノードクライアント**

クライアントとは、各ブロック内のすべてのトランザクションを検証し、ネットワークの安全性とトランザクションデータの正当性を保証するEthereumのソフトウェア実装である。[Ethereumフルノードクライアント](https://ethereum.org/en/developers/docs/nodes-and-clients)は各ブロック内のすべてのトランザクションを検証し、ネットワークにセキュリティとデータの正確性を提供する。

各Ethereumクライアントには、それぞれ独自の機能と利点がある。実装は多様であるため、異なるユーザー層に合わせて選択することができる。Ethereumノードクライアントを選ぶ際には、機能、サポート、[web3プログラミング言語](https://www.alchemy.com/overviews/web3-programming-languages)、ライセンスを考慮するとよい。

#### **フルノードクライアントのソフトウェア実装\(実行層クライアント\)**

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

1. **[Geth](https://www.alchemy.com/overviews/what-is-a-geth-node-and-how-to-run-one) \(Go Ethereum\)** - Goで書かれている
1. **[Nethermind](https://www.alchemy.com/dapps/nethermind)** - C\#と.NETで書かれている
1. **Erigon** - Goで書かれている
1. **Hyperledger Besu** - Javaで書かれている

The Mergeの後、EthereumがProof-of-WorkからProof-of-Stakeに移行すると、各フルノードは前述の実行層クライアントのいずれかと合わせて[コンセンサス層クライアント](http://www.alchemy.com/overviews/execution-layer-and-consensus-layer-node-clients)を実行する必要がある。

#### **フルノードクライアントのソフトウェア実装\(コンセンサス層クライアント\)**

コンセンサス層クライアントには、主に5つの種類がある。

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

## **ライトノードとは何か**

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

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

**ライトノードの利用例には以下が含まれる。**

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

パーソナルコンピュータの他にも、[ライトノード](https://www.parity.io/blog/what-is-a-light-client/)は携帯電話やRaspberry Piのような低性能なデバイスでも効率よく動かすことができる。

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

[**アーカイブノード**](https://www.alchemy.com/overviews/archive-nodes)は、フルノードと同じデータに加え、Genesis Block\(つまり最初のブロック\)まで遡るブロックチェーンの全履歴の状態データを保持する。

フルノードも過去のブロックチェーンの状態データを再構築することはできるが、この同期プロセスには時間がかかり非効率である。ユースケースによっては、このデータを迅速に提供する必要がある場合がある。しかし、アーカイブノードは最初のブロックまで遡る履歴データを持っているため、[トランザクションを追跡する](https://www.alchemy.com/docs/node/trace-api/trace-api-endpoints/trace-block)ことができる。

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

### **ErigonとGethの比較**

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

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

[Gethと比較すると](https://medium.com/@giulio.rebuffo/silkworm-and-akula-the-future-of-erigon-fda4d6813505)、Erigonの並列化された開発、フラットストレージ、事前処理、段階的な同期により、Erigonはストレージのフットプリントを小さくし、同期速度を速め、trace APIを使う必要がある開発者にとって全体的により良い体験を実現している。

### **フルノードとアーカイブノードの違いとは**

フルノードとアーカイブノードの主な違いは、アーカイブノードがチェーンの過去のすべての状態\(つまり[Ethereumエコシステム](https://www.alchemy.com/dapps/ecosystem/ethereum)の全体像\)を保持するのに対し、フルノードは現在の状態データのスナップショットのみを保存すればよいという点である。

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

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

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

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

**フルノード**の利点は、パブリックブロックチェーン上の任意のスマートコントラクトと直接通信できることである。フルノードは、パブリックブロックチェーンにスマートコントラクトを新たにデプロイすることもできる。

しかし、無制限のデータ利用、ストレージ、直接的なスマートコントラクトの機能は無料ではなく、フルノードはマシンのハードウェアや帯域幅のリソースに負荷をかける可能性がある。

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

アプリケーションが過去のブロックチェーン情報を必要とする場合は、自分自身でアーカイブノードを運用するか、アーカイブノードへのアクセスを提供する[ブロックチェーンノードプロバイダーを選ぶ](https://www.alchemy.com/overviews/how-to-choose-a-blockchain-node-provider)必要がある。

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

## **Alchemyのノードインフラ**

Alchemyは、[web3ノードインフラプロバイダー](https://www.alchemy.com/overviews/blockchain-node-providers)であり、SupernodeとAlchemyのツールスイートを通じて、web3開発者に強化されたスケーラビリティ、安定性、データの正確性を提供するブロックチェーン開発者向けプラットフォームである。Supernodeは、専用の分散システムと独自のコーディネーターサービスを使用して、ノード機能のあらゆる側面を強化し、リアルタイムのデータ精度を確保する。

ノードは汎用的なものであり、高い可用性を持つように設計されていないため、[自前でノードを運用する](https://www.alchemy.com/overviews/running-your-own-node)アプリは、ノードプロバイダーを利用する場合と比べて、平均以上のレイテンシやダウンタイムを経験する可能性がある。

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

Alchemyの[Supernode](https://www.alchemy.com/supernode)は、99.99%のアップタイムを保証するスケーラブルなノードアーキテクチャを提供し、dApp開発者は製品やユーザーへの中断なくスケールし続けることができる。

Alchemyの無限にスケーラブルなノードインフラ、比類ない信頼性、速度、[データの正確性](https://www.alchemy.com/blog/data-accuracy)は**Polygon**を支えるために使われており、これはアダプションの触媒となることが証明されており、Polygon上に構築される[アプリ](https://www.alchemy.com/dapps/top/defi-dapps)の数の大幅な増加につながっている。

主要なすべてのブロックチェーンを通じて数千億件もの取引を流通させる、分散型取引所のためのグローバルなバックボーンである**0x**は、信頼できるノードインフラとしてAlchemyを利用している。

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

Alchemyは、メインネットとテストネットの両方に対して無料のアーカイブアクセスを提供する充実した無料プランを用意している。Alchemyについて詳しく知り、無料のアーカイブアクセスを取得するには、[今すぐ無料アカウントに登録する](https://www.alchemy.com/?a=260a7bfa7d)。
