Metadata-Version: 2.1
Name: eth-mpt
Version: 0.1.0
Summary: A simlpe Merkle Patricia Trie implementation
Home-page: https://github.com/popzxc/merkle-patricia-trie
Author: Igor Aleksanov
Author-email: popzxc@yandex.com
License: UNKNOWN
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Topic :: Security :: Cryptography
Description-Content-Type: text/markdown
Requires-Dist: cytoolz (==0.9.0.1)
Requires-Dist: eth-hash (==0.2.0)
Requires-Dist: eth-typing (==2.0.0)
Requires-Dist: eth-utils (==1.4.1)
Requires-Dist: pycryptodome (==3.7.3)
Requires-Dist: rlp (==1.1.0)
Requires-Dist: toolz (==0.9.0)

# 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.')
```

## Testing

```bash
python -m unittest
```


