TypeScript icon, indicating that this package has built-in type declarations

    1.1.0 • Public • Published


    NPM Version Issues Pull Requests License Gitter

    Merkle Tree for Javascript/Typescript on Node. Currently, browser is not supported. API documentation can be found here.

    Build Status Coverage Score Downloads Count
    Overall Build Status Codacy Codacy Badge NPM NPM Downloads
    Node 8 Node 8 Coveralls Coveralls Github Github Releases
    Node 9 Node 9 Codecov Codecov
    Node 10 Node 10
    Node 11 Node 11

    Table of Contents

    Install via NPM

    npm i @jharrilim/merkletree-js


    Create a Merkle Tree

    To create a Merkle Tree, you may do so in one of the following ways:

    Without Data

    import { MerkleTree } from '@jharrilim/merkletree-js';
    // Creates a new instance of the MerkleTree
    const newTree = MerkleTree.create();

    With Data

    You may create a MerkleTree with some data that you already have defined.

    import { MerkleTree } from '@jharrilim/merkletree-js';
    const data = [ 'some', 'data', { msg: 'of any type', except: 'no nulls, functions, or undefined' }, true ];
    (async () => {
        const newTree = await MerkleTree.createWith(data);
    })().catch(_ => {});

    Add Some Data

    To add data, you may use either #addNode to add one thing, or #addNodes to add multiple things.

    import { MerkleTree } from '@jharrilim/merkletree-js';
    export async function doCoolThings() {
        const newTree = MerkleTree.create();
        await newTree.addNodes(['hello', 'world']);
        await newTree.addNode(42);

    Compare Data

    To make use of the merkle tree, you will want to compare data across multiple trees. You may do so by using MerkleTree#compareWith, or by using MerkleTree#computeRootHash and comparing the hash yourself:

    import { MerkleTree } from '@jharrilim/merkletree-js';
    export async function compareTrees() {
        const sharedData = ['this', 'is', 'shared', 'data'];
        const firstTree = await MerkleTree.createWith(sharedData);
        const secondTree = await MerkleTree.createWith(sharedData);
        // Does intermediate actions with the hashes
        const attempt1 = await compareAndSave(firstTree, secondTree);
        // Compare directly
        const attempt2 = await firstTree.compareWith(secondTree);
        return attempt1 && attempt2;
    async function compareAndSave(firstTree, secondTree) {  // This is not price matching
        const firstTreeHash = await firstTree.computeRootHash();
        const secondTreeHash = await secondTree.computeRootHash();
        try {
            // Perhaps do stuff such as
            await SomeMongooseModel.save(firstTreeHash);
            await SomeMongooseModel.save(secondTreeHash);
        } catch (e) {
            return false;
        return firstTreeHash === secondTreeHash;


    npm i @jharrilim/merkletree-js

    DownloadsWeekly Downloads






    Unpacked Size

    58.3 kB

    Total Files


    Last publish


    • jharrilim