> For the complete documentation index, see [llms.txt](https://ethernal-2.gitbook.io/blade/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ethernal-2.gitbook.io/blade/detailed-design/evm-compatible-data-structures/state-tries.md).

# State Tries

World State Trie

The **World State Trie** (WST), also called the **State Trie** or **Global State Trie**, is a critical data structure that represents the current state of all accounts on the Ethereum network.

* The trie is persisted to disk.
* All of the values are **RLP-serialized accounts**.

The figure below shows an example of world state trie with detailed node structure.

<figure><img src="/files/uovLC9BicaYHVxJ84Eil" alt=""><figcaption><p>World State Trie Example</p></figcaption></figure>

***

## Account Storage Trie

The **Account Storage Trie** is a data structure used to store the persistent data of a smart contract. It is a **Merkle Patricia Trie**, like the World State Trie, and it maps storage keys to storage values for a specific contract account.

More details:

* Each contract account on Ethereum has its **own Account Storage Trie**, which stores the contract's persistent state variables.
* The storage trie is specific to a single contract and is **separate from the World State Trie**, which stores the global state of all accounts.
* The **root hash** of the Account Storage Trie is stored in the `storageRoot` field of the contract's account state (in the World State Trie).

<figure><img src="/files/FRxrtcu7KkAORIEPqBp3" alt=""><figcaption><p>Account storage trie example.</p></figcaption></figure>

***

## Transaction Trie

In the context of Ethereum, the **Transaction Trie** is a data structure used to store and organize all the transactions included in a specific block.

* Each block contains a Transaction Trie that holds all the transactions in that block.
* The transactions are indexed by their position in the block and are RLP-encoded.
* The root hash of this trie is stored in the block header (`transactionsRoot` field).

<figure><img src="/files/djV5u4me8FU7LhxgtQnf" alt=""><figcaption><p>Transaction trie example.</p></figcaption></figure>

***

## Transaction Receipt Trie

The **Transaction Receipt Trie** records the **receipts (outcomes)** of transactions.

* A **receipt** is the result of a transaction that was executed successfully.
* Each receipt includes:
  * The **transaction hash**
  * **Block number**
  * **Amount of gas used**
  * **Contract address** (if a new contract was created)
  * Other execution metadata
* Like the Transaction Trie, this is a Merkle Patricia Trie whose root hash is stored in the block header (`receiptsRoot` field).

<figure><img src="/files/g6C0DDTxlFkDS6oGxUip" alt=""><figcaption><p>Transaction receipt trie example.</p></figcaption></figure>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://ethernal-2.gitbook.io/blade/detailed-design/evm-compatible-data-structures/state-tries.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
