---
title: "イーサリアムのアーカイブ・ノード"
description: "アーカイブ・ノードの概要"
lang: ja
sidebarDepth: 2
---

アーカイブ・ノードは、すべての履歴状態のアーカイブを構築するように設定された[イーサリアム](/)クライアントのインスタンスです。特定のユースケースにおいて有用なツールですが、フル・ノードよりも運用が難しい場合があります。

## 前提条件 {#prerequisites}

[イーサリアムのノード](/developers/docs/nodes-and-clients/)の概念、[そのアーキテクチャ](/developers/docs/nodes-and-clients/node-architecture/)、[同期戦略](/developers/docs/nodes-and-clients/#sync-modes)、およびノードの[運用](/developers/docs/nodes-and-clients/run-a-node/)と[使用](/developers/docs/apis/json-rpc/)に関する実践について理解しておく必要があります。

## アーカイブ・ノードとは {#what-is-an-archive-node}

アーカイブ・ノードの重要性を理解するために、「状態」の概念を明確にしましょう。イーサリアムは「トランザクションベースの状態遷移マシン」と呼ぶことができます。イーサリアムは、トランザクションを実行して自身の状態を変更するアカウントとアプリケーションで構成されています。各アカウントとコントラクトに関する情報を持つグローバルデータは、状態と呼ばれるトライデータベースに保存されます。これは実行レイヤー (EL) クライアントによって処理され、以下が含まれます。

- アカウントの残高とナンス
- コントラクトのコードとストレージ
- コンセンサス関連のデータ（例：ステーキング・デポジット・コントラクト）

ネットワークとやり取りし、新しいブロックを検証および生成するために、イーサリアムクライアントは最新の変更（チェーンの先端）と現在の状態を常に把握しておく必要があります。フル・ノードとして設定された実行レイヤークライアントは、ネットワークの最新の状態を検証して追跡しますが、チェーンの再編成（reorg）を処理し、最近のデータへの高速なアクセスを提供するために、過去のいくつかの状態（例：過去128ブロックに関連する状態）のみをキャッシュします。最近の状態は、すべてのクライアントが受信したトランザクションを検証し、ネットワークを使用するために必要とするものです。

状態は特定のブロックにおけるネットワークの瞬間的なスナップショットであり、アーカイブは履歴のリプレイであると想像できます。

履歴状態はネットワークの運用に必要ではなく、クライアントがすべての古いデータを保持することは無駄に冗長であるため、安全にプルーニング（削除）できます。最近のブロック（例：先頭から128ブロック前）より前に存在した状態は、事実上破棄されます。フル・ノードは、履歴のブロックチェーンデータ（ブロックとトランザクション）と、要求に応じて古い状態を再生成するために使用できる時折の履歴スナップショットのみを保持します。これは、EVMで過去のトランザクションを再実行することによって行われますが、目的の状態が最も近いスナップショットから遠く離れている場合、計算負荷が高くなる可能性があります。

しかし、これはフル・ノードで履歴状態にアクセスすると大量の計算を消費することを意味します。クライアントは、すべての過去のトランザクションを実行し、ジェネシスから1つの履歴状態を計算する必要があるかもしれません。アーカイブ・ノードは、最新の状態だけでなく、各ブロックの後に作成されたすべての履歴状態を保存することでこれを解決します。基本的には、より大きなディスク容量を必要とするというトレードオフになります。

ネットワークは、すべての履歴データを保持および提供するためにアーカイブ・ノードに依存しているわけではないことに注意することが重要です。前述のように、すべての履歴の中間状態はフル・ノードで導出できます。トランザクションは任意のフル・ノードに保存されており（現在は400GB未満）、リプレイしてアーカイブ全体を構築することができます。

### ユースケース {#use-cases}

トランザクションの送信、コントラクトのデプロイ、コンセンサスの検証など、イーサリアムの通常の利用では、履歴状態へのアクセスは必要ありません。ユーザーがネットワークとの標準的なやり取りを行うためにアーカイブ・ノードを必要とすることは決してありません。

状態アーカイブの主な利点は、履歴状態に関するクエリへの迅速なアクセスです。たとえば、アーカイブ・ノードは次のような結果を即座に返します。

- _ブロック15537393におけるアカウント 0x1337... のETH残高はいくらだったか？_
- _ブロック1920000におけるコントラクト 0x 内のトークン 0x の残高はいくらか？_

上で説明したように、フル・ノードはCPUを使用し時間がかかるEVMの実行によってこのデータを生成する必要があります。アーカイブ・ノードはディスク上のデータにアクセスし、即座に応答を返します。これは、インフラストラクチャの特定の部分にとって有用な機能です。例えば：

- ブロックエクスプローラーなどのサービスプロバイダー
- 研究者
- セキュリティアナリスト
- 分散型アプリケーション (dapp) の開発者
- 監査とコンプライアンス

履歴データへのアクセスを可能にする様々な無料の[サービス](/developers/docs/nodes-and-clients/nodes-as-a-service/)もあります。アーカイブ・ノードの運用はより要求が厳しいため、このアクセスはほとんど制限されており、時折のアクセスにのみ機能します。プロジェクトで履歴データへの継続的なアクセスが必要な場合は、自分でアーカイブ・ノードを運用することを検討すべきです。

## 実装と使用方法 {#implementations-and-usage}

この文脈におけるアーカイブ・ノードとは、状態データベースを処理し、JSON-RPCエンドポイントを提供する、ユーザー向け実行レイヤークライアントによって提供されるデータを意味します。設定オプション、同期時間、データベースのサイズはクライアントによって異なる場合があります。詳細については、使用するクライアントのドキュメントを参照してください。

独自のアーカイブ・ノードを起動する前に、クライアント間の違い、特に様々な[ハードウェア要件](/developers/docs/nodes-and-clients/run-a-node/#requirements)について学んでください。ほとんどのクライアントはこの機能に最適化されておらず、そのアーカイブには12TB以上の容量が必要です。対照的に、エリゴンのような実装は同じデータを3TB未満で保存できるため、アーカイブ・ノードを運用する最も効果的な方法となります。

## 推奨される実践 {#recommended-practices}

[ノードの運用に関する一般的な推奨事項](/developers/docs/nodes-and-clients/run-a-node/)とは別に、アーカイブ・ノードはハードウェアとメンテナンスの面でより要求が厳しい場合があります。エリゴンの[主要な機能](https://github.com/ledgerwatch/erigon#key-features)を考慮すると、最も実用的なアプローチは[エリゴン](/developers/docs/nodes-and-clients/#erigon)クライアントの実装を使用することです。

### ハードウェア {#hardware}

常にクライアントのドキュメントで、特定のモードのハードウェア要件を確認するようにしてください。
アーカイブ・ノードの最大の要件はディスク容量です。クライアントによって異なりますが、3TBから12TBの範囲です。大量のデータにはHDDがより良い解決策と考えられるかもしれませんが、同期を行い、チェーンの先頭を常に更新するにはSSDドライブが必要になります。[SATA](https://www.cleverfiles.com/help/sata-hard-drive.html)ドライブで十分ですが、少なくとも[TLC](https://blog.synology.com/tlc-vs-qlc-ssds-what-are-the-differences)のような信頼できる品質のものであるべきです。ディスクは、デスクトップコンピュータや十分なスロットを持つサーバーに取り付けることができます。このような専用デバイスは、高い稼働率でノードを運用するのに理想的です。ノートパソコンで運用することも完全に可能ですが、携帯性には追加のコストがかかります。

すべてのデータは1つのボリュームに収まる必要があるため、例えば[RAID0](https://en.wikipedia.org/wiki/Standard_RAID_levels#RAID_0)やLVMなどでディスクを結合する必要があります。また、低レベルのエラーなしにデータがディスクに正しく書き込まれることを保証する「コピーオンライト（Copy-on-write）」をサポートしているため、[ZFS](https://en.wikipedia.org/wiki/ZFS)の使用を検討する価値もあるかもしれません。

偶発的なデータベースの破損を防ぐための安定性とセキュリティをさらに高めるために、特にプロフェッショナルなセットアップでは、システムがサポートしている場合は[ECCメモリ](https://en.wikipedia.org/wiki/ECC_memory)の使用を検討してください。RAMのサイズは一般的にフル・ノードと同じであることが推奨されますが、RAMが多いほど同期を高速化するのに役立ちます。

初期同期中、アーカイブモードのクライアントはジェネシス以降のすべてのトランザクションを実行します。実行速度は主にCPUによって制限されるため、より高速なCPUは初期同期時間の短縮に役立ちます。平均的な消費者向けコンピュータでは、初期同期に最大1か月かかる場合があります。

## 参考文献 {#further-reading}

- [Ethereum Full Node vs Archive Node](https://www.quicknode.com/guides/infrastructure/ethereum-full-node-vs-archive-node) - _QuickNode、2022年9月_
- [Building Your Own Ethereum Archive Node](https://tjayrush.medium.com/building-your-own-ethereum-archive-node-72c014affc09) - _Thomas Jay Rush、2021年8月_
- [How to set up Erigon, Erigon’s RPC and TrueBlocks (scrape and API) as services](https://magnushansson.xyz/blog_posts/crypto_defi/2022-01-10-Erigon-Trueblocks) _– Magnus Hansson、2022年9月更新_

## 関連トピック {#related-topics}

- [ノードとクライアント](/developers/docs/nodes-and-clients/)
- [ノードの運用](/developers/docs/nodes-and-clients/run-a-node/)