# Ethereum state and storage: what contracts remember

Ethereum state records account information and contract storage at a particular point in the chain. Persistent storage holds a contract’s data between transactions; execution memory and calldata serve different roles during calls. A token balance is usually a value in the token contract’s accounting, not native ETH stored inside the holder’s account.

Evidence: [Ethereum accounts](https://ethereum.org/en/developers/docs/accounts/); [Layout of State Variables in Storage and Transient Storage](https://docs.soliditylang.org/en/v0.8.30/internals/layout_in_storage.html); [Solidity: Delegatecall and Libraries](https://docs.soliditylang.org/en/v0.8.30/introduction-to-smart-contracts.html); [ERC-20 Token Standard](https://eips.ethereum.org/EIPS/eip-20)

Canonical: https://degreesofsatoshi.com/encyclopedia/ethereum-state-and-storage/
Published: 2026-10-02
Substantively modified: 2026-10-02
Independently verified by an automated reviewer: 2026-10-02T18:12:41.505Z
Data current through: 2026-10-02

AI-assisted research and drafting with a separate automated source-verification pass; no external expert or named human review is implied.

## Key facts

- **Account fields:** Account state includes balance, nonce and commitments to code and storage. ([Ethereum accounts](https://ethereum.org/en/developers/docs/accounts/))
- **Slots:** Solidity arranges persistent values into storage slots according to layout rules. ([Layout of State Variables in Storage and Transient Storage](https://docs.soliditylang.org/en/v0.8.30/internals/layout_in_storage.html))
- **Token balance:** ERC-20 exposes balances through its contract interface. ([ERC-20 Token Standard](https://eips.ethereum.org/EIPS/eip-20))

## One address can participate in many ledgers

An address has a native ETH balance in account state. A token contract can separately record how many of its own units that address holds. Another token maintains its own accounting.

This is why a token balance query needs the token contract and network, not just the holder’s address.

Evidence: [Ethereum accounts](https://ethereum.org/en/developers/docs/accounts/); [ERC-20 Token Standard](https://eips.ethereum.org/EIPS/eip-20)

## Storage has a layout that code must respect

Small values can share a slot, while mappings and dynamic arrays use derived storage locations. A source-level variable name is not itself an on-chain storage address.

Proxy upgrades must preserve the intended interpretation of existing storage. A new implementation can compile successfully while reading the wrong slot or packed field.

Evidence: [Layout of State Variables in Storage and Transient Storage](https://docs.soliditylang.org/en/v0.8.30/internals/layout_in_storage.html)

## Read state at a stated block

RPC methods can query state at a selected block or tag when the provider has the necessary data. A value at an earlier block need not equal the latest value.

An execution simulation reads one state context and models changes from it. A public citation should identify the relevant chain and block when the value is time-dependent.

Evidence: [Ethereum JSON-RPC](https://ethereum.org/en/developers/docs/apis/json-rpc/)

## Questions

### Are event logs the same as contract storage?

No. Logs are emitted execution records, while storage is persistent contract state read and modified by contract code. An indexer may use logs to reconstruct a view, but the two are distinct.

Evidence: [Solidity: Delegatecall and Libraries](https://docs.soliditylang.org/en/v0.8.30/introduction-to-smart-contracts.html); [Layout of State Variables in Storage and Transient Storage](https://docs.soliditylang.org/en/v0.8.30/internals/layout_in_storage.html)

## Claims and scope

### ethereum-state-and-storage-quick-answer

Ethereum state records account information and contract storage at a particular point in the chain. Persistent storage holds a contract’s data between transactions; execution memory and calldata serve different roles during calls. A token balance is usually a value in the token contract’s accounting, not native ETH stored inside the holder’s account.

Scope: {"collection":"ethereum","dataAsOf":"2026-10-02","blockHeight":null}

### ethereum-state-and-storage-fact-account-fields

Account fields: Account state includes balance, nonce and commitments to code and storage.

Scope: {"collection":"ethereum","dataAsOf":"2026-10-02","blockHeight":null}

### ethereum-state-and-storage-fact-slots

Slots: Solidity arranges persistent values into storage slots according to layout rules.

Scope: {"collection":"ethereum","dataAsOf":"2026-10-02","blockHeight":null}

### ethereum-state-and-storage-fact-token-balance

Token balance: ERC-20 exposes balances through its contract interface.

Scope: {"collection":"ethereum","dataAsOf":"2026-10-02","blockHeight":null}

## Sources

- [Ethereum accounts](https://ethereum.org/en/developers/docs/accounts/) — ethereum.org contributors. Key-controlled and code-controlled accounts, balances, nonces and storage. Locator: Account types; An account examined; Account creation. Retrieved: 2026-10-02T17:03:41.958Z.
- [Layout of State Variables in Storage and Transient Storage](https://docs.soliditylang.org/en/v0.8.30/internals/layout_in_storage.html) — Solidity contributors. Persistent storage slots, packing and mappings. Locator: Layout of State Variables; Mappings and Dynamic Arrays. Retrieved: 2026-10-02T17:03:42.820Z.
- [Solidity: Delegatecall and Libraries](https://docs.soliditylang.org/en/v0.8.30/introduction-to-smart-contracts.html) — Solidity contributors. Execution uses another contract’s code in the caller’s context and storage. Locator: Delegatecall and Libraries; Storage, Memory and the Stack; Logs; Message Calls. Retrieved: 2026-10-02T17:03:42.822Z.
- [ERC-20 Token Standard](https://eips.ethereum.org/EIPS/eip-20) — Ethereum Improvement Proposals. Token supply, displayed units and balance accounting. Locator: totalSupply; balanceOf; transfer; decimals; approve; allowance; transferFrom; Transfer. Retrieved: 2026-10-02T17:03:45.826Z.
- [Ethereum JSON-RPC](https://ethereum.org/en/developers/docs/apis/json-rpc/) — ethereum.org contributors. RPC response fields, transaction receipts, call simulation and log filtering. Locator: eth_getTransactionByHash; eth_getTransactionReceipt; eth_call; eth_getLogs; eth_getCode; eth_estimateGas; eth_getBalance; eth_getStorageAt; eth_getTransactionCount; default block parameter. Retrieved: 2026-10-02T17:03:42.060Z.

## Revision history

- 2026-10-02: First publication after primary-source research and independent automated verification.

## Cite this entry

Degrees of Satoshi editorial project. “Ethereum state and storage: what contracts remember.” Published 2026-10-02; updated 2026-10-02. https://degreesofsatoshi.com/encyclopedia/ethereum-state-and-storage/
