Skip to main content

Modified Merkle Paticia Trie

MPT is the data structure used in Ethereum 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

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:

pip install -U eth_mpt

Documentation

Documentation can be found on readthedocs.

Contributing

All the contributors are welcome. If you can make this library better, don't hesitate to :)

Testing

python -m unittest

Release files for eth-mpt 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for eth-mpt 0.2.0
File Size Uploaded
eth_mpt-0.2.0.tar.gz 10.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for eth-mpt 0.2.0
File Interpreter ABI Platform
eth_mpt-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 22.4 kB

Release files / eth_mpt-0.2.0.tar.gz

Download URL eth_mpt-0.2.0.tar.gz
Size 10.0 kB
Tags Source
SHA-256 checksum
How to use checksums
387af0775cd9509cfe863b11dbe7115185fcddf2783d7a72fef0377f6def866e
BLAKE2b-256 checksum
How to use checksums
093dd9b6056f84c67a0bd57702ef3e0d1b4946bd41ecb18672481dae286b5d8c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.1

Release files / eth_mpt-0.2.0-py3-none-any.whl

Download URL eth_mpt-0.2.0-py3-none-any.whl
Size 12.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2da48228d807ee4c86b4194ff9416d5b3db8da319027662334ddb091fb3a9de0
BLAKE2b-256 checksum
How to use checksums
7df19e81d43dd3d195e0ee091ecafbe086be6792dee0065925d20554727a7c34
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.1

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page