Skip to content

A stream that generates a merkle tree based on the incoming data

License

Notifications You must be signed in to change notification settings

hyperpy/merkle-tree-stream

Repository files navigation

merkle-tree-stream

Build Status

A stream that generates a merkle tree based on the incoming data

A hash tree or merkle tree is a tree in which every leaf node is labelled with the hash of a data block and every non-leaf node is labelled with the cryptographic hash of the labels of its child nodes. Merkle trees in Dat are specialized flat trees that contain the content of the archives.

Install

$ pip install merkle-tree-stream

Example

import hashlib

from merkle_tree_stream import MerkleTreeGenerator


def _leaf(node, roots=None):
    return hashlib.sha256(node.data).digest()


def _parent(first, second):
    sha256 = hashlib.sha256()
    sha256.update(first.data)
    sha256.update(second.data)
    return sha256.digest()


merkle = MerkleTreeGenerator(leaf=_leaf, parent=_parent)

merkle.write(b"a")
merkle.write(b"b")

print(merkle._nodes)

Output:

[
 MerkleTreeNode(index=0, parent=1, size=1, data=b'a', hash=b'...'),
 MerkleTreeNode(index=2, parent=1, size=1, data=b'b', hash=b'...'),
 MerkleTreeNode(index=1, parent=3, size=2, data=b'', hash=b'...')
]

About

A stream that generates a merkle tree based on the incoming data

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages