- Smart Contract
- dApp(Decentralized Application)
- the DAO
- Bootstrap Node
- Merkle Patricia Trie
- Bloom Filter
- Uncle Block
- GHOST Protocol
- Zero Knoweldge Proof
- Raiden Network
- Mnemonic code
Merkle Patricia Trie
There are three Merkle trees for three objects in the header of every block in the ethereum. Transaction, receipt such as transaction log, and merkle root of changing state due to transaction will be placed in block header. It writes only the updated part through the Merkle tree, and the part without updating is referenced through the Merkle tree of the previous block, making it possible to use the light client protocol that has header information.
(Image source : https://blog.ethereum.org/2015/11/15/merkling-in-ethereum/)
Ethereum uses the Merkle tree, which has a slightly more complex functionality in the Merkle tree. The patricia tree is characterized by its ability to save space and efficiently use it by sharing common parts for each node.
(Image source : https://en.wikipedia.org/wiki/Radix_tree#PATRICIA)
The transaction and receipt among the trees that exist in the Ethereum block header do not change after they are stored within the block. Accounts can be created or deleted at any time, and balances can change from time to time, so the state that contains the account information is changed frequently because it is a map structure of keys and values. Because of this feature, the State tree uses the Merkle patricia tree, which combines the features of the patricia tree with the Merkle tree. Limit the depth of the tree to reduce recalculation of frequently changed parts and hash values, and assign numeric values to root to prevent Merkle root from changing. This tree structure is implemented in such a way that each node in the tree receives a numerical value and displays the path.
(Reference - Core Ethereum Programming)