Socket
Book a DemoInstallSign in
Socket

@jharrilim/merkletree-js

Package Overview
Dependencies
Maintainers
1
Versions
9
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@jharrilim/merkletree-js

JavaScript implementation of a Merkle Tree.

1.1.0
latest
Source
npmnpm
Version published
Weekly downloads
4
Maintainers
1
Weekly downloads
 
Created
Source

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;
}

Keywords

merkletree

FAQs

Package last updated on 27 Dec 2018

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

About

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.

  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc

U.S. Patent No. 12,346,443 & 12,314,394. Other pending.