{"_id":"merkle-lib","_rev":"21-404107a9671b593cd24486b68dab604a","name":"merkle-lib","dist-tags":{"latest":"2.0.10"},"versions":{"1.0.0":{"name":"merkle-lib","version":"1.0.0","keywords":["bitcoin","bitcoinjs-lib","leaf","merkle tree","merkle","root","hash","chain","tree"],"author":{"name":"Daniel Cousens"},"license":"MIT","_id":"merkle-lib@1.0.0","maintainers":[{"name":"dcousens","email":"email@dcousens.com"}],"homepage":"https://github.com/bitcoinjs/merkle-lib","bugs":{"url":"https://github.com/bitcoinjs/merkle-lib/issues"},"dist":{"shasum":"bd088b2c7b1026339103a0f3429ae09022cfb25c","tarball":"https://registry.npmjs.org/merkle-lib/-/merkle-lib-1.0.0.tgz","integrity":"sha512-5vTv1tasuWIS0F+5i88zvEDXu6JVvOP8tiAzA+fxc8SlTcYFnr3K4cwCDz6HCHDuBK1JN2xGKAZmAjAMYvM6Ww==","signatures":[{"sig":"MEUCIQC/jtO7+mhlzVJdH37Qpdyr3AYnEyXITUVwJeBGNTEhRQIgYHBRoMq/+FMwqEsLnoIAmcuFE2Bk4qg0J5BvBH1U1fg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","files":["index.js","fastRoot.js"],"_shasum":"bd088b2c7b1026339103a0f3429ae09022cfb25c","gitHead":"245d00083784d693d54a56172d3ff38a79a2a679","scripts":{"lint":"standard","test":"npm run lint && npm run unit","unit":"tape test/*.js","coverage":"nyc --check-coverage --branches 100 --functions 100 tape test/*.js","prepublish":"npm run test"},"_npmUser":{"name":"dcousens","email":"email@dcousens.com"},"repository":{"url":"git+https://github.com/bitcoinjs/merkle-lib.git","type":"git"},"_npmVersion":"3.10.8","description":"","directories":{},"_nodeVersion":"6.7.0","devDependencies":{"nyc":"^6.4.0","tape":"^4.5.1","standard":"*"},"_npmOperationalInternal":{"tmp":"tmp/merkle-lib-1.0.0.tgz_1475817619752_0.013189650606364012","host":"packages-12-west.internal.npmjs.com"}},"2.0.0":{"name":"merkle-lib","version":"2.0.0","keywords":["bitcoin","bitcoinjs-lib","leaf","merkle tree","merkle","root","hash","chain","tree"],"author":{"name":"Daniel Cousens"},"license":"MIT","_id":"merkle-lib@2.0.0","maintainers":[{"name":"dcousens","email":"email@dcousens.com"}],"homepage":"https://github.com/bitcoinjs/merkle-lib","bugs":{"url":"https://github.com/bitcoinjs/merkle-lib/issues"},"dist":{"shasum":"9ccc1e4f66fb5d43b9f1e746121eeb05f61a7907","tarball":"https://registry.npmjs.org/merkle-lib/-/merkle-lib-2.0.0.tgz","integrity":"sha512-rvXWBDAx5s4Evb4YYHhsfBPJSr49I1jZHsuCGOsctow/u/h7pfY4b6TdFBPkv3GmP8hNfOOfWX58EapCG/tRhw==","signatures":[{"sig":"MEUCIAJIKmdfzRjaYJTLHuqf2crhOWy5L+FUJuMAnlAu+fiDAiEA1yU6LgRJ1iT4bzw37slhwK/vr+CxN7xm9yoehMHOqjU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","files":["index.js","fastRoot.js"],"_shasum":"9ccc1e4f66fb5d43b9f1e746121eeb05f61a7907","gitHead":"73309e64a67eb7b7a807c65f76d1e91eb5b0cca0","scripts":{"lint":"standard","test":"npm run lint && npm run unit","unit":"tape test/*.js","coverage":"nyc --check-coverage --branches 90 --functions 90 tape test/*.js","prepublish":"npm run test"},"_npmUser":{"name":"dcousens","email":"email@dcousens.com"},"repository":{"url":"git+https://github.com/bitcoinjs/merkle-lib.git","type":"git"},"_npmVersion":"3.10.8","description":"[![Build Status](https://travis-ci.org/bitcoinjs/merkle-lib.png?branch=master)](https://travis-ci.org/bitcoinjs/merkle-lib) [![NPM](https://img.shields.io/npm/v/merkle-lib.svg)](https://www.npmjs.org/package/merkle-lib)","directories":{},"_nodeVersion":"6.7.0","devDependencies":{"nyc":"^6.4.0","tape":"^4.5.1","standard":"*"},"_npmOperationalInternal":{"tmp":"tmp/merkle-lib-2.0.0.tgz_1475910161122_0.5584095835220069","host":"packages-16-east.internal.npmjs.com"}},"2.0.1":{"name":"merkle-lib","version":"2.0.1","keywords":["bitcoin","bitcoinjs-lib","leaf","merkle tree","merkle","root","hash","chain","tree"],"author":{"name":"Daniel Cousens"},"license":"MIT","_id":"merkle-lib@2.0.1","maintainers":[{"name":"dcousens","email":"email@dcousens.com"}],"homepage":"https://github.com/bitcoinjs/merkle-lib","bugs":{"url":"https://github.com/bitcoinjs/merkle-lib/issues"},"dist":{"shasum":"30fa343e4c6475ffcce2e2bbf12f3d0467ca84d7","tarball":"https://registry.npmjs.org/merkle-lib/-/merkle-lib-2.0.1.tgz","integrity":"sha512-MiFabmFkgrMvIyxG0IjG64ymT6Rbap2GisIQ35V5LPP1I2CjY5o9X0NriqZutrEVKvrURIowU0IgPynJF2LfZQ==","signatures":[{"sig":"MEUCIClIifDIekibjoby1HS7NBzy6GD3baz9Y0d7lc6K3gIcAiEA3AARkVgBnCrwtHQgxiHSddnP99WGsyHQhE4Z1ZTqibU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","files":["index.js","fastRoot.js","proof.js"],"_shasum":"30fa343e4c6475ffcce2e2bbf12f3d0467ca84d7","gitHead":"5593a42ee428f6056c835ed0348d7e4141782657","scripts":{"lint":"standard","test":"npm run lint && npm run unit","unit":"tape test/*.js","coverage":"nyc --check-coverage --branches 90 --functions 90 tape test/*.js","prepublish":"npm run test"},"_npmUser":{"name":"dcousens","email":"email@dcousens.com"},"repository":{"url":"git+https://github.com/bitcoinjs/merkle-lib.git","type":"git"},"_npmVersion":"3.10.8","description":"[![Build Status](https://travis-ci.org/bitcoinjs/merkle-lib.png?branch=master)](https://travis-ci.org/bitcoinjs/merkle-lib) [![NPM](https://img.shields.io/npm/v/merkle-lib.svg)](https://www.npmjs.org/package/merkle-lib)","directories":{},"_nodeVersion":"6.7.0","devDependencies":{"nyc":"^6.4.0","tape":"^4.5.1","standard":"*"},"_npmOperationalInternal":{"tmp":"tmp/merkle-lib-2.0.1.tgz_1475910195860_0.15505661559291184","host":"packages-16-east.internal.npmjs.com"}},"2.0.2":{"name":"merkle-lib","version":"2.0.2","keywords":["bitcoin","bitcoinjs-lib","leaf","merkle tree","merkle","root","hash","chain","tree"],"author":{"name":"Daniel Cousens"},"license":"MIT","_id":"merkle-lib@2.0.2","maintainers":[{"name":"dcousens","email":"email@dcousens.com"}],"homepage":"https://github.com/bitcoinjs/merkle-lib","bugs":{"url":"https://github.com/bitcoinjs/merkle-lib/issues"},"dist":{"shasum":"8d380f151e4e381d6acbb4ece5082a8db34ef2d2","tarball":"https://registry.npmjs.org/merkle-lib/-/merkle-lib-2.0.2.tgz","integrity":"sha512-+rNlgwv/NKfY4hsFzyvlf+309/89YT1idCvRGMHP9WUA2T7PGc+KWeaKJ5Rf8cCRZmYby0/YDnr+5jTQWFdQiA==","signatures":[{"sig":"MEQCIATkU4OCa056uzb3sQpbFj6L/zHPZly2qZxlTrUXeidbAiAhI6nYkeN3XWkre8cBbjvfvWUBnFSFy0s8hGO2NQkHXg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","files":["index.js","fastRoot.js","proof.js"],"_shasum":"8d380f151e4e381d6acbb4ece5082a8db34ef2d2","gitHead":"3ae5edb85c885ff5b26c096e26d4ed4d6f4647b4","scripts":{"lint":"standard","test":"npm run lint && npm run unit","unit":"tape test/*.js","coverage":"nyc --check-coverage --branches 90 --functions 90 tape test/*.js"},"_npmUser":{"name":"dcousens","email":"email@dcousens.com"},"repository":{"url":"git+https://github.com/bitcoinjs/merkle-lib.git","type":"git"},"_npmVersion":"3.10.9","description":"A performance conscious library for merkle root and tree calculations.","directories":{},"_nodeVersion":"7.0.0","devDependencies":{"nyc":"^6.4.0","tape":"^4.5.1","standard":"*"},"_npmOperationalInternal":{"tmp":"tmp/merkle-lib-2.0.2.tgz_1478222722453_0.05017642956227064","host":"packages-18-east.internal.npmjs.com"}},"2.0.3":{"name":"merkle-lib","version":"2.0.3","keywords":["bitcoin","bitcoinjs-lib","leaf","merkle tree","merkle","root","hash","chain","tree"],"author":{"name":"Daniel Cousens"},"license":"MIT","_id":"merkle-lib@2.0.3","maintainers":[{"name":"dcousens","email":"email@dcousens.com"}],"homepage":"https://github.com/bitcoinjs/merkle-lib","bugs":{"url":"https://github.com/bitcoinjs/merkle-lib/issues"},"dist":{"shasum":"96d2a41c70919218d3c197f934f9376f568aa4fb","tarball":"https://registry.npmjs.org/merkle-lib/-/merkle-lib-2.0.3.tgz","integrity":"sha512-5vq7TSlGCpv3EebLgfOEjUFUGBzSTY++j0kUWEXyGgq08rtJ9rhyZLUP9BmXNy7BxljDK1YKg8AWEwNFzFjTOQ==","signatures":[{"sig":"MEUCIHlbrK88jkpi6CDimcXoPbU7PRxDtaMsIp00+jRhSkAzAiEA8J219H2lCUUxowibKJoMJ4+P1SgFkL03cCEZpI++X/A=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","files":["index.js","fastRoot.js","proof.js"],"_shasum":"96d2a41c70919218d3c197f934f9376f568aa4fb","gitHead":"95d8732a9f1cbd1a3047ce547f693f15be7b93f2","scripts":{"lint":"standard","test":"npm run lint && npm run unit","unit":"tape test/*.js","coverage":"nyc --check-coverage --branches 90 --functions 90 tape test/*.js"},"_npmUser":{"name":"dcousens","email":"email@dcousens.com"},"repository":{"url":"git+https://github.com/bitcoinjs/merkle-lib.git","type":"git"},"_npmVersion":"4.0.5","description":"A performance conscious library for merkle root and tree calculations.","directories":{},"_nodeVersion":"7.2.1","devDependencies":{"nyc":"^6.4.0","tape":"^4.5.1","standard":"*"},"_npmOperationalInternal":{"tmp":"tmp/merkle-lib-2.0.3.tgz_1481959451355_0.6252407890278846","host":"packages-12-west.internal.npmjs.com"}},"2.0.4":{"name":"merkle-lib","version":"2.0.4","keywords":["bitcoin","bitcoinjs-lib","leaf","merkle tree","merkle","root","hash","chain","tree"],"author":{"name":"Daniel Cousens"},"license":"MIT","_id":"merkle-lib@2.0.4","maintainers":[{"name":"dcousens","email":"email@dcousens.com"}],"homepage":"https://github.com/bitcoinjs/merkle-lib","bugs":{"url":"https://github.com/bitcoinjs/merkle-lib/issues"},"dist":{"shasum":"cfb03931595698528ac772b2dd76c15c1703a950","tarball":"https://registry.npmjs.org/merkle-lib/-/merkle-lib-2.0.4.tgz","integrity":"sha512-vB4SJbpDITkFvz93knTsIQTgkNgFg1LA4psNHyU0j/TyMRF4dJk3UctcuqrTn/lEJj1iUEqhh5KGLq8GiEJaTw==","signatures":[{"sig":"MEYCIQDXZMfuH9I5PXPDyDvEXmDP2A3zWN72hXg8tgm6L5qv2wIhAJFmOhlejRh445eN9UdxH+MN/wToFSIhlm8x5GHRmuJo","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","files":["index.js","fastRoot.js","proof.js"],"_shasum":"cfb03931595698528ac772b2dd76c15c1703a950","gitHead":"1b916f33992329709a3b776c7bae172661f6c917","scripts":{"lint":"standard","test":"npm run lint && npm run unit","unit":"tape test/*.js","coverage":"nyc --check-coverage --branches 90 --functions 90 tape test/*.js"},"_npmUser":{"name":"dcousens","email":"email@dcousens.com"},"repository":{"url":"git+https://github.com/bitcoinjs/merkle-lib.git","type":"git"},"_npmVersion":"4.0.5","description":"A performance conscious library for merkle root and tree calculations.","directories":{},"_nodeVersion":"7.2.1","devDependencies":{"nyc":"^6.4.0","tape":"^4.5.1","standard":"*"},"_npmOperationalInternal":{"tmp":"tmp/merkle-lib-2.0.4.tgz_1481963244488_0.08158747805282474","host":"packages-18-east.internal.npmjs.com"}},"2.0.5":{"name":"merkle-lib","version":"2.0.5","keywords":["bitcoin","bitcoinjs-lib","leaf","merkle tree","merkle","root","hash","chain","tree"],"author":{"name":"Daniel Cousens"},"license":"MIT","_id":"merkle-lib@2.0.5","maintainers":[{"name":"dcousens","email":"email@dcousens.com"}],"homepage":"https://github.com/bitcoinjs/merkle-lib","bugs":{"url":"https://github.com/bitcoinjs/merkle-lib/issues"},"dist":{"shasum":"9c531e384703c8db02cc131785b62258723e4578","tarball":"https://registry.npmjs.org/merkle-lib/-/merkle-lib-2.0.5.tgz","integrity":"sha512-mqyIEL+/8nbVy1diDR5FzKUhLqnkzvWdqLBUBOUb0pLxb6d+VervLDi1zZz89QpSEZocCfIpnyKP9DvkgC9lSA==","signatures":[{"sig":"MEQCHy2UWeC2Uhj6/PCdUs6SF57vDYawAhWS2LjJMA5j+qcCIQDbWEhpGgj1VD4VC+JQq/bEcG3E6JYBk9CS9HIsKpOmrQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","files":["index.js","fastRoot.js","proof.js"],"_shasum":"9c531e384703c8db02cc131785b62258723e4578","gitHead":"0db96164115074bf56ce2b8d540c625e2097113c","scripts":{"lint":"standard","test":"npm run lint && npm run unit","unit":"tape test/*.js","coverage":"nyc --check-coverage --branches 90 --functions 90 tape test/*.js"},"_npmUser":{"name":"dcousens","email":"email@dcousens.com"},"repository":{"url":"git+https://github.com/bitcoinjs/merkle-lib.git","type":"git"},"_npmVersion":"4.0.5","description":"A performance conscious library for merkle root and tree calculations.","directories":{},"_nodeVersion":"7.2.1","devDependencies":{"nyc":"^6.4.0","tape":"^4.5.1","standard":"*"},"_npmOperationalInternal":{"tmp":"tmp/merkle-lib-2.0.5.tgz_1481963325219_0.8534127057064325","host":"packages-12-west.internal.npmjs.com"}},"2.0.6":{"name":"merkle-lib","version":"2.0.6","keywords":["bitcoin","bitcoinjs-lib","leaf","merkle tree","merkle","root","hash","chain","tree"],"author":{"name":"Daniel Cousens"},"license":"MIT","_id":"merkle-lib@2.0.6","maintainers":[{"name":"dcousens","email":"email@dcousens.com"}],"homepage":"https://github.com/bitcoinjs/merkle-lib","bugs":{"url":"https://github.com/bitcoinjs/merkle-lib/issues"},"dist":{"shasum":"5fda3c655a3b2881ba66ee9677c019ba6de8cee3","tarball":"https://registry.npmjs.org/merkle-lib/-/merkle-lib-2.0.6.tgz","integrity":"sha512-+KnFENkGeF9+pifP1feDKacSnRAlWEAqzqfwz2KT1H7bQyDOK955+d0589QlHaNJA6LSDlCRcExmcwwMS1ryxw==","signatures":[{"sig":"MEUCIQC3jwD1VGNdj21bIC/6acQYRe+wQ6Oki+75zAAsn80vdwIgP4BHFZ5sFW+vwhJIlaIh2Y8PbOWxCsQdNMtG+zv5JkA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","files":["index.js","fastRoot.js","proof.js"],"_shasum":"5fda3c655a3b2881ba66ee9677c019ba6de8cee3","gitHead":"5fe254333e74c973b853e548a8706fc004c11faf","scripts":{"lint":"standard","test":"npm run lint && npm run unit","unit":"tape test/*.js","coverage":"nyc --check-coverage --branches 90 --functions 90 tape test/*.js"},"_npmUser":{"name":"dcousens","email":"email@dcousens.com"},"repository":{"url":"git+https://github.com/bitcoinjs/merkle-lib.git","type":"git"},"_npmVersion":"4.4.1","description":"A performance conscious library for merkle root and tree calculations.","directories":{},"_nodeVersion":"7.7.3","devDependencies":{"nyc":"^6.4.0","tape":"^4.5.1","standard":"*"},"_npmOperationalInternal":{"tmp":"tmp/merkle-lib-2.0.6.tgz_1490243472888_0.06450180127285421","host":"packages-18-east.internal.npmjs.com"}},"2.0.7":{"name":"merkle-lib","version":"2.0.7","keywords":["bitcoin","bitcoinjs-lib","leaf","merkle tree","merkle","root","hash","chain","tree"],"author":{"name":"Daniel Cousens"},"license":"MIT","_id":"merkle-lib@2.0.7","maintainers":[{"name":"dcousens","email":"email@dcousens.com"}],"homepage":"https://github.com/bitcoinjs/merkle-lib","bugs":{"url":"https://github.com/bitcoinjs/merkle-lib/issues"},"dist":{"shasum":"f9aba1a1e6fe0a038ebcb136d41d244391d70f63","tarball":"https://registry.npmjs.org/merkle-lib/-/merkle-lib-2.0.7.tgz","integrity":"sha512-9FiLptiagtad0JWk8Ng5mnMu1O1m8LJu30OdOfD1ImWAZkEBWxA16z5P/heq4R+W9KkbfP7192EroUscSlpDjA==","signatures":[{"sig":"MEQCIClGCO6N1e5X1bYPZrNuouJTyfVvAxyN0WaSXoa0c515AiAMjPLAnagQUVbVpsQLdQggE0rr+xoQKPcUSO3r1i/Ejw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","files":["index.js","fastRoot.js","proof.js"],"_shasum":"f9aba1a1e6fe0a038ebcb136d41d244391d70f63","gitHead":"a2e34dc8b7d01a7956fa05d1cdbd48b51430f742","scripts":{"lint":"standard","test":"npm run lint && npm run unit","unit":"tape test/*.js","coverage":"nyc --check-coverage --branches 90 --functions 90 tape test/*.js"},"_npmUser":{"name":"dcousens","email":"email@dcousens.com"},"repository":{"url":"git+https://github.com/bitcoinjs/merkle-lib.git","type":"git"},"_npmVersion":"4.4.1","description":"A performance conscious library for merkle root and tree calculations.","directories":{},"_nodeVersion":"7.7.3","devDependencies":{"nyc":"^6.4.0","tape":"^4.5.1","standard":"*"},"_npmOperationalInternal":{"tmp":"tmp/merkle-lib-2.0.7.tgz_1490243973801_0.33275901176966727","host":"packages-18-east.internal.npmjs.com"}},"2.0.8":{"name":"merkle-lib","version":"2.0.8","keywords":["bitcoin","bitcoinjs-lib","leaf","merkle tree","merkle","root","hash","chain","tree"],"author":{"name":"Daniel Cousens"},"license":"MIT","_id":"merkle-lib@2.0.8","maintainers":[{"name":"dcousens","email":"email@dcousens.com"}],"homepage":"https://github.com/bitcoinjs/merkle-lib","bugs":{"url":"https://github.com/bitcoinjs/merkle-lib/issues"},"dist":{"shasum":"5f1a01b04747d4015640eeae8eaf89e37c5375c4","tarball":"https://registry.npmjs.org/merkle-lib/-/merkle-lib-2.0.8.tgz","integrity":"sha512-Xv23+R68pkOl/PPW4P/TBJA39YZkT1HYr0RrTX4/Y03kZfkJcnvjw6E/OH+JlAk+I6jeUeL0zIOMob9+vY9rww==","signatures":[{"sig":"MEUCIFZDh2o4jS8uRVbmSaauXP1i64MlNjuB6eD2gJ6i+UkTAiEAwqDJt9kFjvF2fbwt3fX0dVLVBbmtmyX/jW5czkmKrno=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","files":["index.js","fastRoot.js","proof.js"],"_shasum":"5f1a01b04747d4015640eeae8eaf89e37c5375c4","gitHead":"4bd6ac3ae2c83cd32c8b55164a691bd165c29676","scripts":{"lint":"standard","test":"npm run lint && npm run unit","unit":"tape test/*.js","coverage":"nyc --check-coverage --branches 90 --functions 90 tape test/*.js"},"_npmUser":{"name":"dcousens","email":"email@dcousens.com"},"repository":{"url":"git+https://github.com/bitcoinjs/merkle-lib.git","type":"git"},"_npmVersion":"4.4.1","description":"A performance conscious library for merkle root and tree calculations.","directories":{},"_nodeVersion":"7.7.3","devDependencies":{"nyc":"^6.4.0","tape":"^4.5.1","standard":"*"},"_npmOperationalInternal":{"tmp":"tmp/merkle-lib-2.0.8.tgz_1490244029296_0.5873904046602547","host":"packages-18-east.internal.npmjs.com"}},"2.0.9":{"name":"merkle-lib","version":"2.0.9","keywords":["bitcoin","bitcoinjs-lib","leaf","merkle tree","merkle","root","hash","chain","tree"],"author":{"name":"Daniel Cousens"},"license":"MIT","_id":"merkle-lib@2.0.9","maintainers":[{"name":"dcousens","email":"email@dcousens.com"}],"homepage":"https://github.com/bitcoinjs/merkle-lib","bugs":{"url":"https://github.com/bitcoinjs/merkle-lib/issues"},"dist":{"shasum":"8ed2b0dc3b30eef6f934aa754e619330646b8eeb","tarball":"https://registry.npmjs.org/merkle-lib/-/merkle-lib-2.0.9.tgz","integrity":"sha512-m0C0ryD26+X3hkVMajX7P+pZ0e2MvNHotRoCYdWu0y4QJmy9GaVTcctQeJpOR0asPrHKacJTqJZo4ZNR+Bt5rw==","signatures":[{"sig":"MEQCID8r2O6QsjkFSXMxdqnbxdBKW2Fblivs4lB3vLKcNZEoAiASFWgSUL0PBxk6X8DuspjA91py98tc3AKKNDG13ARWEQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","files":["index.js","fastRoot.js","proof.js"],"_shasum":"8ed2b0dc3b30eef6f934aa754e619330646b8eeb","gitHead":"598b14e415ffcd9a098af2c3384d9bef2570f19a","scripts":{"lint":"standard","test":"npm run lint && npm run unit","unit":"tape test/*.js","coverage":"nyc --check-coverage --branches 90 --functions 90 tape test/*.js"},"_npmUser":{"name":"dcousens","email":"email@dcousens.com"},"repository":{"url":"git+https://github.com/bitcoinjs/merkle-lib.git","type":"git"},"_npmVersion":"4.4.1","description":"A performance conscious library for merkle root and tree calculations.","directories":{},"_nodeVersion":"7.7.3","devDependencies":{"nyc":"^6.4.0","tape":"^4.5.1","standard":"*"},"_npmOperationalInternal":{"tmp":"tmp/merkle-lib-2.0.9.tgz_1490246850548_0.237371691968292","host":"packages-18-east.internal.npmjs.com"}},"2.0.10":{"name":"merkle-lib","version":"2.0.10","keywords":["bitcoin","bitcoinjs-lib","leaf","merkle tree","merkle","root","hash","chain","tree"],"author":{"name":"Daniel Cousens"},"license":"MIT","_id":"merkle-lib@2.0.10","maintainers":[{"name":"dcousens","email":"email@dcousens.com"}],"homepage":"https://github.com/bitcoinjs/merkle-lib","bugs":{"url":"https://github.com/bitcoinjs/merkle-lib/issues"},"dist":{"shasum":"82b8dbae75e27a7785388b73f9d7725d0f6f3326","tarball":"https://registry.npmjs.org/merkle-lib/-/merkle-lib-2.0.10.tgz","integrity":"sha512-XrNQvUbn1DL5hKNe46Ccs+Tu3/PYOlrcZILuGUhb95oKBPjc/nmIC8D462PQkipVDGKRvwhn+QFg2cCdIvmDJA==","signatures":[{"sig":"MEUCIQCIwYEmu2erOMfBm77kWLDWk0Q8N1OoVBkZHfgb4bvUrQIgW4FLuNO2Jm4bHV80AYmne/QFOk0rKOIppNYnrKQ54XU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","files":["index.js","fastRoot.js","proof.js"],"_shasum":"82b8dbae75e27a7785388b73f9d7725d0f6f3326","gitHead":"3d2205c0130c664bb19f6aa39fecf6d92e9bd8a8","scripts":{"lint":"standard","test":"npm run lint && npm run unit","unit":"tape test/*.js","coverage":"nyc --check-coverage --branches 90 --functions 90 tape test/*.js"},"_npmUser":{"name":"dcousens","email":"email@dcousens.com"},"repository":{"url":"git+https://github.com/bitcoinjs/merkle-lib.git","type":"git"},"_npmVersion":"4.4.1","description":"A performance conscious library for merkle root and tree calculations.","directories":{},"_nodeVersion":"7.7.3","devDependencies":{"nyc":"^6.4.0","tape":"^4.5.1","standard":"*"},"_npmOperationalInternal":{"tmp":"tmp/merkle-lib-2.0.10.tgz_1490249996499_0.007461936445906758","host":"packages-18-east.internal.npmjs.com"}}},"time":{"created":"2016-10-07T05:20:19.992Z","modified":"2025-06-27T09:45:34.792Z","1.0.0":"2016-10-07T05:20:19.992Z","2.0.0":"2016-10-08T07:02:42.794Z","2.0.1":"2016-10-08T07:03:17.696Z","2.0.2":"2016-11-04T01:25:24.112Z","2.0.3":"2016-12-17T07:24:11.576Z","2.0.4":"2016-12-17T08:27:26.308Z","2.0.5":"2016-12-17T08:28:45.459Z","2.0.6":"2017-03-23T04:31:14.745Z","2.0.7":"2017-03-23T04:39:35.926Z","2.0.8":"2017-03-23T04:40:31.276Z","2.0.9":"2017-03-23T05:27:32.370Z","2.0.10":"2017-03-23T06:19:58.376Z"},"bugs":{"url":"https://github.com/bitcoinjs/merkle-lib/issues"},"author":{"name":"Daniel Cousens"},"license":"MIT","homepage":"https://github.com/bitcoinjs/merkle-lib","keywords":["bitcoin","bitcoinjs-lib","leaf","merkle tree","merkle","root","hash","chain","tree"],"repository":{"url":"git+https://github.com/bitcoinjs/merkle-lib.git","type":"git"},"description":"A performance conscious library for merkle root and tree calculations.","maintainers":[{"email":"fanatid@ya.ru","name":"fanatid"},{"email":"jprichardson@gmail.com","name":"jprichardson"},{"email":"jonathan.underwood4649@gmail.com","name":"junderw"},{"email":"landabaso@gmail.com","name":"jl.landabaso"}],"readme":"# merkle-lib\n\n[![Build Status](https://travis-ci.org/bitcoinjs/merkle-lib.png?branch=master)](https://travis-ci.org/bitcoinjs/merkle-lib)\n[![NPM](https://img.shields.io/npm/v/merkle-lib.svg)](https://www.npmjs.org/package/merkle-lib)\n\n[![js-standard-style](https://cdn.rawgit.com/feross/standard/master/badge.svg)](https://github.com/feross/standard)\n\nA performance conscious library for merkle root and tree calculations.\n\n**NOTE**: As is,  this implementation is vulnerable to a forgery attack ([as a second pre-image attack](https://en.wikipedia.org/wiki/Merkle_tree#Second_preimage_attack)), see these[\\[1\\]](https://crypto.stackexchange.com/questions/2106/what-is-the-purpose-of-using-different-hash-functions-for-the-leaves-and-interna)[\\[2\\]](https://crypto.stackexchange.com/questions/43430/what-is-the-reason-to-separate-domains-in-the-internal-hash-algorithm-of-a-merkl) crypto.stackexchange questions for an explanation.\nTo avoid this vulnerability,  you should pre-hash your leaves *using a different hash function* than the function provided such that `H(x) != H'(x)`.\n\n\n## Examples\nPreamble\n``` javscript\nvar crypto = require('crypto')\n\nfunction sha256 (data) {\n  return crypto.createHash('sha256').update(data).digest()\n}\n\nvar data = [\n  'cafebeef',\n  'ffffffff',\n  'aaaaaaaa',\n  'bbbbbbbb',\n  'cccccccc'\n].map(x => new Buffer(x, 'hex'))\n\n// ... now, the examples\n```\n\nTree\n``` javascript\nvar merkle = require('merkle-lib')\nvar tree = merkle(data, sha256)\n\nconsole.log(tree.map(x => x.toString('hex')))\n// => [\n//  'cafebeef',\n//  'ffffffff',\n//  'aaaaaaaa',\n//  'bbbbbbbb',\n//  'cccccccc',\n//  'bda5c39dec343da54ce91c57bf8e796c2ca16a1bd8cae6a2cefbdd16efc32578',\n//  '8b722baf6775a313f1032ba9984c0dce32ff3c40d7a67b5df8de4dbaa43a3db0',\n//  '3d2f424783df5853c8d7121b1371650c04241f318e1b0cd46bedbc805b9164c3',\n//  'bb232963fd0efdeacb0fd76e26cf69055fa5facc19a5f5c2f2f27a6925d1db2f',\n//  '2256e70bea2c591190a0d4d6c1415acd7458fae84d8d85cdc68b851da27777d4',\n//  'c2692b0e127b3b774a92f6e1d8ff8c3a5ea9eef9a1d389fe294f0a7a2fec9be1'\n//]\n```\n\nRoot only (equivalent to `tree[tree.length - 1]`)\n``` javascript\nvar fastRoot = require('merkle-lib/fastRoot')\nvar root = fastRoot(data, sha256)\n\nconsole.log(root.toString('hex'))\n// => 'c2692b0e127b3b774a92f6e1d8ff8c3a5ea9eef9a1d389fe294f0a7a2fec9be1'\n```\n\nProof (with verify)\n``` javascript\nvar merkleProof = require('merkle-lib/proof')\nvar proof = merkleProof(tree, data[0])\n\nif (proof === null) {\n  console.error('No proof exists!')\n}\n\nconsole.log(proof.map(x => x && x.toString('hex')))\n// => [\n//   'cafebeef',\n//   'ffffffff',\n//   null,\n//   '8b722baf6775a313f1032ba9984c0dce32ff3c40d7a67b5df8de4dbaa43a3db0',\n//   null,\n//   '2256e70bea2c591190a0d4d6c1415acd7458fae84d8d85cdc68b851da27777d4',\n//   'c2692b0e127b3b774a92f6e1d8ff8c3a5ea9eef9a1d389fe294f0a7a2fec9be1'\n// ]\n\nconsole.log(merkleProof.verify(proof, sha256))\n// => true\n```\n\n\n#### Credits\nThanks to [Meni Rosenfield on bitcointalk](https://bitcointalk.org/index.php?topic=403231.msg9054025#msg9054025) for the math.\n","readmeFilename":"README.md","users":{"nuwaio":true,"asaupup":true}}