# Hash

### 📖 Definition:

In the MPT, the [`Hash Node`](https://github.com/Aleksao998/MerklePatriciaTrie/blob/main/trie/nodes/hash.go) isn’t directly involved in the trie's navigational pathways or in holding the end data. Instead, it stands as a symbolic reference, encapsulating the hash of a node. This encapsulation is instrumental during the trie's persistence and retrieval stages, ensuring efficient and accurate reconstruction.

### 📌 Key Characteristics:

1. **Storage Optimizer**: When committing the trie to persistent storage, nodes such as Branch and Extension which previously pointed to other nodes, now reference a Hash Node. This facilitates a streamlined storage process and reduces overhead.
2. **Reconstruction Aid**: By preserving a hash reference in the Hash Node, the trie can be effectively rebuilt or a segment of it can be retrieved. Starting from the root hash and progressing through the storage, the full tree or desired parts of it can be recreated with precision.
3. **Consistent Referencing**: The Hash Node ensures that every node in the trie can be deterministically pointed to, based on its content, offering a consistent mechanism to access and verify data.

### 🛠️ Structure:

The Hash Node's Go representation is succinctly crafted as:

```go
type HashNode struct {
	Hash []byte
}
```

`Hash`: This contains the cryptographic hash, which acts as a key when saving in storage and provides a consistent reference for node retrieval.
