UNPKG

snarky-smt

Version:

Sparse Merkle Tree for SnarkyJS

25 lines (24 loc) 779 B
import { SMT_DEPTH, EMPTY_VALUE } from './constant'; export { defaultNodes }; let defaultNodesMap = new Map(); function defaultNodes(hasher, treeHeight = SMT_DEPTH) { let innerMap = defaultNodesMap.get(hasher); if (innerMap === undefined) { innerMap = new Map(); } let nodes = innerMap.get(treeHeight); if (nodes === undefined) { let nodes = new Array(treeHeight + 1); let h = EMPTY_VALUE; nodes[treeHeight] = h; for (let i = treeHeight - 1; i >= 0; i--) { const newH = hasher([h, h]); nodes[i] = newH; h = newH; } innerMap.set(treeHeight, nodes); defaultNodesMap.set(hasher, innerMap); return nodes; } return nodes; }