{
  "$schema": "https://degreesofsatoshi.com/encyclopedia/schemas/article-v1.json",
  "schemaVersion": "1.0.0",
  "id": "ethereum-archive-nodes",
  "canonical": "https://degreesofsatoshi.com/encyclopedia/ethereum-archive-nodes/",
  "collection": "ethereum",
  "title": "Ethereum archive nodes: asking what an account held in the past",
  "description": "Learn why historical Ethereum state queries need suitable retention and how archive capabilities vary by Geth version and configuration.",
  "aliases": [
    "Ethereum archive node",
    "historical Ethereum balance"
  ],
  "dates": {
    "published": "2026-10-02",
    "modified": "2026-10-02",
    "verified": "2026-10-02T19:27:58.939Z",
    "dataAsOf": "2026-10-02"
  },
  "authorship": {
    "publisher": "Degrees of Satoshi editorial project",
    "process": "AI-assisted research and drafting with a separate automated source-verification pass; no external expert or named human review is implied."
  },
  "quickAnswer": {
    "text": "An archive node retains historical state so it can answer questions such as an account balance or contract storage value at an old block. Keeping block history alone is not the same capability. In Geth, historical flat-state queries and historical Merkle proofs have distinct retention and indexing requirements, so check the client version and requested RPC method.",
    "claimId": "ethereum-archive-nodes-quick-answer",
    "sourceIds": [
      "x425-eth-geth-archive"
    ]
  },
  "keyFacts": [
    {
      "label": "Historical state",
      "value": "Archive operation supports queries about past account and storage state.",
      "sourceIds": [
        "x425-eth-geth-archive"
      ],
      "id": "historical-state",
      "claimId": "ethereum-archive-nodes-fact-historical-state"
    },
    {
      "label": "Retention",
      "value": "Configured history limits determine which old states remain available.",
      "sourceIds": [
        "x425-eth-geth-archive"
      ],
      "id": "retention",
      "claimId": "ethereum-archive-nodes-fact-retention"
    },
    {
      "label": "Proofs",
      "value": "Historical proof support may require retained trie-node history.",
      "sourceIds": [
        "x425-eth-geth-archive"
      ],
      "id": "proofs",
      "claimId": "ethereum-archive-nodes-fact-proofs"
    }
  ],
  "prerequisites": [
    "ethereum-state-and-storage",
    "ethereum-nodes-rpc"
  ],
  "sections": [
    {
      "id": "question",
      "heading": "Specify which historical answer you need",
      "sourceIds": [
        "x425-eth-geth-archive",
        "x425-eth-eth-jsonrpc"
      ],
      "paragraphs": [
        "A block’s transactions describe activity, but an efficient query for an arbitrary old account balance needs the relevant state or a way to reconstruct it. A service can retain transaction history without offering every historical state query.",
        "State values and cryptographic proofs are also different outputs. Ask whether the endpoint supports the specific method at the target block."
      ]
    },
    {
      "id": "example",
      "heading": "An old balance and an old proof can have different support",
      "sourceIds": [
        "x425-eth-geth-archive"
      ],
      "paragraphs": [
        "The retrieved Geth documentation distinguishes path-based archive behavior across versions: v1.16.x does not support historical eth_getProof in that mode, while v1.17.x can support it with the required historical trie retention. This is a versioned example, not a blanket claim about every node.",
        "A successful historical balance lookup therefore does not prove that the same endpoint can supply the corresponding historical Merkle proof."
      ]
    },
    {
      "id": "configuration",
      "heading": "Retention and completed indexes matter",
      "sourceIds": [
        "x425-eth-geth-archive"
      ],
      "paragraphs": [
        "Geth documents configurable historical state retention and indexing. Pruned history cannot be recovered merely by changing a retention flag after the fact. A complete archive may require obtaining the missing history through an appropriate rebuild or other supported process.",
        "Confirm the retained range and indexing completion before relying on an audit query. Disk-size and synchronization-time estimates change with chain growth and hardware, so this article does not promise a fixed resource budget."
      ]
    }
  ],
  "faq": [
    {
      "question": "Is every full Ethereum node an archive node?",
      "answer": "No. Full validation and retention of arbitrary historical state are different capabilities. A node can validate current blocks while pruning old state.",
      "sourceIds": [
        "x425-eth-eth-nodes",
        "x425-eth-geth-archive"
      ]
    },
    {
      "question": "Does the word archive guarantee all historical RPC methods?",
      "answer": "No. Verify the client version, retained data, index completion and specific method. Historical values and historical proofs can have different requirements.",
      "sourceIds": [
        "x425-eth-geth-archive"
      ]
    }
  ],
  "claims": [
    {
      "id": "ethereum-archive-nodes-quick-answer",
      "articleSlug": "ethereum-archive-nodes",
      "statement": "An archive node retains historical state so it can answer questions such as an account balance or contract storage value at an old block. Keeping block history alone is not the same capability. In Geth, historical flat-state queries and historical Merkle proofs have distinct retention and indexing requirements, so check the client version and requested RPC method.",
      "sourceIds": [
        "source-d8710ea64bccd201"
      ],
      "sourceLocators": [
        {
          "sourceId": "source-d8710ea64bccd201",
          "locator": "Hash-based archive; path-based archive"
        }
      ],
      "scope": {
        "collection": "ethereum",
        "dataAsOf": "2026-10-02",
        "blockHeight": null
      },
      "qualification": "",
      "evidenceStatus": "documented",
      "verification": {
        "status": "verified",
        "method": "independent automated source review",
        "checkedAt": "2026-10-02T19:27:58.939Z",
        "reviewer": "Independent automated verification agent verify_bitcoin_stablecoins_100",
        "notes": [
          "Read full current Geth archive-mode document. v1.16.x path archive lacks historical proofs; v1.17.x can supply them with history.trienode retention. State values versus trie proofs and indexing completion are explicitly distinguished. Changing a retention setting does not recover already-pruned history. No resource-size promise."
        ]
      }
    },
    {
      "id": "ethereum-archive-nodes-fact-historical-state",
      "articleSlug": "ethereum-archive-nodes",
      "statement": "Historical state: Archive operation supports queries about past account and storage state.",
      "sourceIds": [
        "source-d8710ea64bccd201"
      ],
      "sourceLocators": [
        {
          "sourceId": "source-d8710ea64bccd201",
          "locator": "Hash-based archive; path-based archive"
        }
      ],
      "scope": {
        "collection": "ethereum",
        "dataAsOf": "2026-10-02",
        "blockHeight": null
      },
      "qualification": "",
      "evidenceStatus": "documented",
      "verification": {
        "status": "verified",
        "method": "independent automated source review",
        "checkedAt": "2026-10-02T19:27:58.939Z",
        "reviewer": "Independent automated verification agent verify_bitcoin_stablecoins_100",
        "notes": [
          "Read full current Geth archive-mode document. v1.16.x path archive lacks historical proofs; v1.17.x can supply them with history.trienode retention. State values versus trie proofs and indexing completion are explicitly distinguished. Changing a retention setting does not recover already-pruned history. No resource-size promise."
        ]
      }
    },
    {
      "id": "ethereum-archive-nodes-fact-retention",
      "articleSlug": "ethereum-archive-nodes",
      "statement": "Retention: Configured history limits determine which old states remain available.",
      "sourceIds": [
        "source-d8710ea64bccd201"
      ],
      "sourceLocators": [
        {
          "sourceId": "source-d8710ea64bccd201",
          "locator": "Hash-based archive; path-based archive"
        }
      ],
      "scope": {
        "collection": "ethereum",
        "dataAsOf": "2026-10-02",
        "blockHeight": null
      },
      "qualification": "",
      "evidenceStatus": "documented",
      "verification": {
        "status": "verified",
        "method": "independent automated source review",
        "checkedAt": "2026-10-02T19:27:58.939Z",
        "reviewer": "Independent automated verification agent verify_bitcoin_stablecoins_100",
        "notes": [
          "Read full current Geth archive-mode document. v1.16.x path archive lacks historical proofs; v1.17.x can supply them with history.trienode retention. State values versus trie proofs and indexing completion are explicitly distinguished. Changing a retention setting does not recover already-pruned history. No resource-size promise."
        ]
      }
    },
    {
      "id": "ethereum-archive-nodes-fact-proofs",
      "articleSlug": "ethereum-archive-nodes",
      "statement": "Proofs: Historical proof support may require retained trie-node history.",
      "sourceIds": [
        "source-d8710ea64bccd201"
      ],
      "sourceLocators": [
        {
          "sourceId": "source-d8710ea64bccd201",
          "locator": "Hash-based archive; path-based archive"
        }
      ],
      "scope": {
        "collection": "ethereum",
        "dataAsOf": "2026-10-02",
        "blockHeight": null
      },
      "qualification": "",
      "evidenceStatus": "documented",
      "verification": {
        "status": "verified",
        "method": "independent automated source review",
        "checkedAt": "2026-10-02T19:27:58.939Z",
        "reviewer": "Independent automated verification agent verify_bitcoin_stablecoins_100",
        "notes": [
          "Read full current Geth archive-mode document. v1.16.x path archive lacks historical proofs; v1.17.x can supply them with history.trienode retention. State values versus trie proofs and indexing completion are explicitly distinguished. Changing a retention setting does not recover already-pruned history. No resource-size promise."
        ]
      }
    }
  ],
  "sources": [
    {
      "id": "x425-eth-geth-archive",
      "label": "Geth archive node",
      "publisher": "Go Ethereum",
      "url": "https://geth.ethereum.org/docs/fundamentals/archive",
      "locator": "Hash-based archive; path-based archive",
      "note": "Historical state availability depends on client version and archive retention/index configuration.",
      "version": "Documentation snapshot retrieved 2 October 2026; response hash recorded separately",
      "checkedAt": "2026-10-02T18:55:26.554Z",
      "contentSha256": "26e93dc368d5e9a5b64383eb844929d77d9e05c78ebd17a361097cc2c8183e3a",
      "recordId": "source-d8710ea64bccd201"
    },
    {
      "id": "x425-eth-eth-jsonrpc",
      "label": "Ethereum JSON-RPC API",
      "publisher": "ethereum.org contributors",
      "url": "https://ethereum.org/en/developers/docs/apis/json-rpc/",
      "locator": "eth_getBalance; eth_getTransactionReceipt; block parameter; logs",
      "note": "RPC requests explicitly identify addresses and block scope; receipts and removed log fields support verification examples.",
      "version": "Documentation snapshot retrieved 2 October 2026; response hash recorded separately",
      "checkedAt": "2026-10-02T18:55:24.990Z",
      "contentSha256": "ed13997ec4f415dff80883add0730d4e64bcc8c17b95dd4f6c27aed0241a4073",
      "recordId": "source-a5154b4118a3d15f"
    },
    {
      "id": "x425-eth-eth-nodes",
      "label": "Ethereum nodes and clients",
      "publisher": "ethereum.org contributors",
      "url": "https://ethereum.org/en/developers/docs/nodes-and-clients/",
      "locator": "Execution and consensus clients; synchronization; node types",
      "note": "Post-Merge client roles, optional validators and synchronization modes.",
      "version": "Documentation snapshot retrieved 2 October 2026; response hash recorded separately",
      "checkedAt": "2026-10-02T18:55:26.405Z",
      "contentSha256": "504af7a98b297efac4a639ad20b92921c64db4df44e543acc2f75683f56420d2",
      "recordId": "source-81c7c6821c46702f"
    }
  ],
  "related": {
    "articles": [
      "ethereum-state-and-storage",
      "ethereum-nodes-rpc",
      "ethereum-smart-contracts",
      "ethereum-node-sync",
      "ethereum-light-clients"
    ],
    "dossiers": [],
    "wallets": []
  },
  "revisionHistory": [
    {
      "date": "2026-10-02",
      "kind": "published",
      "summary": "First publication after primary-source research and separate automated verification."
    }
  ],
  "citation": "Degrees of Satoshi editorial project. “Ethereum archive nodes: asking what an account held in the past.” Published 2026-10-02; updated 2026-10-02. https://degreesofsatoshi.com/encyclopedia/ethereum-archive-nodes/"
}
