https://github.com/popzxc/merkle-patricia-trie
Python implementation of the Modified Merkle Patricia Trie
https://github.com/popzxc/merkle-patricia-trie
cryptography data-structure ethereum merkle-patricia-trie python
Last synced: about 1 month ago
JSON representation
Python implementation of the Modified Merkle Patricia Trie
- Host: GitHub
- URL: https://github.com/popzxc/merkle-patricia-trie
- Owner: popzxc
- License: mit
- Created: 2019-03-01T19:57:51.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2024-09-03T05:27:35.000Z (10 months ago)
- Last Synced: 2025-05-05T13:59:20.166Z (about 1 month ago)
- Topics: cryptography, data-structure, ethereum, merkle-patricia-trie, python
- Language: Python
- Size: 43 KB
- Stars: 34
- Watchers: 2
- Forks: 7
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Modified Merkle Paticia Trie
MPT is the data structure used in [Ethereum](https://www.ethereum.org/) as a cryptographically authenticated key-value data storage.
This library is a Python implementation of Modified Merkle Patrica Trie with a very simple interface.
## Example
```python
storage = {}
trie = MerklePatriciaTrie(storage)trie.update(b'do', b'verb')
trie.update(b'dog', b'puppy')
trie.update(b'doge', b'coin')
trie.update(b'horse', b'stallion')old_root = trie.root()
old_root_hash = trie.root_hash()print("Root hash is {}".format(old_root_hash.hex()))
trie.delete(b'doge')
print("New root hash is {}".format(trie.root_hash().hex()))
trie_from_old_hash = MerklePatriciaTrie(storage, root=old_root)
print(trie_from_old_hash.get(b'doge'))
try:
print(trie.get(b'doge'))
except KeyError:
print('Not accessible in a new trie.')
```## Installing
Install and update using [pip](https://pip.pypa.io/en/stable/quickstart/):
```
pip install -U eth_mpt
```## Documentation
Documentation can be found on [readthedocs](https://merkle-patricia-trie.readthedocs.io/en/latest/).
## Contributing
All the contributors are welcome. If you can make this library better, don't hesitate to :)
## Testing
```bash
python -m unittest
```