New:Microsoft Teams Notifications Are Now Available in Socket.Learn more →
Get Started

@forestrie/merklelog

Package Overview
Dependencies
Maintainers
1
Versions
10
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@forestrie/merklelog

MMR (merkle mountain range) proofs and massif storage format for Forestrie transparency logs

latest
Source
npmnpm
Version
0.5.0
Version published
Weekly downloads
452
-41.83%
Maintainers
1
Weekly downloads
 
Created
Source

@forestrie/merklelog

TypeScript implementation of the MMR (Merkle Mountain Range) merklelog format.

This package provides TypeScript implementations of the algorithms and data structures defined by the go-merklelog project.

Overview

The package is organized into three main modules:

  • uint64: BigInt-based wrapper for 64-bit unsigned integer operations
  • mmr: Core MMR algorithms including inclusion proofs, consistency proofs, and mathematical operations
  • massifs: Efficient buffer-based access to massif blob data

Installation

pnpm add @forestrie/merklelog

Usage

Uint64

import { Uint64 } from "@forestrie/merklelog";

const a = new Uint64(42);
const b = new Uint64(10);
const sum = a.add(b);
console.log(sum.toBigInt()); // 52n

Massif

import { Massif } from "@forestrie/merklelog";

const buffer = new Uint8Array(/* massif blob data */);
const massif = new Massif(buffer);

// Read fields dynamically
const lastID = massif.lastID;
const massifIndex = massif.massifIndex;

// Get complete start information
const start = massif.getStart();

// Access field by index
const field = massif.fieldref(0); // Returns 32-byte field at index 0

MMR Algorithms

import { bagPeaks, verifyInclusion, Hasher } from "@forestrie/merklelog";

// Bag peaks to compute root (hasher.digest() is async)
const root = await bagPeaks(hasher, peakHashes);

// Verify inclusion proof
const isValid = await verifyInclusion(hasher, leafHash, proof, root);

Terminology

This package follows the terminology defined in the term cheatsheet:

  • mmrIndex: Zero-based index of a node in the MMR
  • mmrPosition: One-based position of a node (mmrIndex + 1)
  • leafIndex: Zero-based index of a leaf node
  • heightIndex (g): Zero-based height index
  • height (h): One-based height (g + 1)

References

License

See LICENSE file in the repository.

FAQs

Package last updated on 22 Sep 2026

Related posts