@0xcert/merkle

Implementation of basic functions of binary Merkle tree.
22,664 343
Install
npm install @0xcert/merkle
Latest Version:2.1.1
License:MIT
Last Updated:Mar 28, 2023
Links: GitHub  ·  npm
Maintainer: xpepermint

Implementation of basic functions of a binary Merkle tree.

This module handles binary trees like this (v = value, n = node, r = nonce):

       n0
       |
   ---------
   |       |
   n1      n2
   |       |
|-----|    |
v0    r0   |
      ---------
      |       |
      n3      n4
      |       |
   |-----|    |
   v1    r1   r2

A user defines an array of values where these values are hashed into an imprint, which is a Merkle root tree hash. A user can expose selected values to a third-party by providing the evidence file which includes a recipe of values and nodes. This file holds enough information for a third-party to recreate the imprint.

import { sha } from '@0xcert/utils'; 
import { Merkle } from '@0xcert/merkle'; 

const merkle = new Merkle({
  hasher: (v, p, k) => sha(256, v),
  noncer: (p) => Math.random().toString(36).substring(7),
});
const values = ['A', 'B', 'C', 'D', 'E'];
const expose = [2, 3];
const fullRecipe = await merkle.notarize(values);
const minRecipe = await merkle.disclose(fullRecipe, expose);
const imprint = await merkle.imprint(minRecipe);

The 0xcert Framework is a free and open-source JavaScript library that provides tools for building powerful decentralized applications. Please refer to the official documentation for more details.

This module is one of the bricks of the 0xcert Framework. It's written with TypeScript and it's actively maintained. The source code is available on GitHub where you can also find our issue tracker.

Related Packages

@0xcert/ethereum-utils

General Ethereum utility module with helper functions for the Ethereum blockchai...

27,358 343
@0xcert/conventions

Module with implementation of all confirmed conventions.

24,512 343
@0xcert/ethereum-generic-provider

Basic implementation of communication provider for the Ethereum blockchain.

23,884 343
@0xcert/scaffold

Overarching module with types, enums, and interfaces for easier development of i...

23,595 343
@0xcert/utils

General utility module with common helper functions.

17,647 343

Version History

Version Released License
2.1.1 MIT
2.1.0 MIT
2.0.3 MIT
2.0.2 MIT
2.0.1 MIT
Pre-releases (52)
Version Released License
2.0.1-beta0 MIT
2.0.0-beta5 MIT
2.0.0-beta4 MIT
2.0.0-beta3 MIT
2.0.0-beta2 MIT