1.1.0 • Published 5 years ago

@jharrilim/merkletree-js v1.1.0

Weekly downloads
-
License
GPL-3.0
Repository
github
Last release
5 years ago

merkletree-js

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.

BuildStatusCoverageScoreDownloadsCount
OverallBuild StatusCodacyCodacy BadgeNPMNPM Downloads
Node 8Node 8CoverallsCoverallsGithubGithub Releases
Node 9Node 9CodecovCodecov
Node 10Node 10
Node 11Node 11

Table of Contents

Install via NPM

npm i @jharrilim/merkletree-js

Usage

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) {
        uhOhMadeAMistake(e);
        return false;
    }

    return firstTreeHash === secondTreeHash;
}
1.1.0

5 years ago

1.0.7

5 years ago

1.0.6

5 years ago

1.0.5

5 years ago

1.0.4

5 years ago

1.0.3

5 years ago

1.0.2

5 years ago

1.0.1

5 years ago

1.0.0

5 years ago