{"_id":"@ethereumjs/trie","_rev":"4642589","name":"@ethereumjs/trie","description":"Implementation of the modified merkle patricia tree as specified in Ethereum's yellow paper.","dist-tags":{"beta":"5.0.0-beta.3","latest":"6.2.1","rc":"6.0.0-rc.1"},"maintainers":[{"name":"acolytec3","email":""},{"name":"axic","email":""},{"name":"g11tech","email":""},{"name":"holgerd77","email":""}],"time":{"modified":"2026-04-10T20:04:16.000Z","created":"2022-06-30T09:58:22.168Z","6.2.1":"2024-08-15T10:57:34.321Z","6.2.0":"2024-03-18T12:28:03.323Z","6.1.1":"2024-02-08T17:10:22.632Z","6.1.0":"2024-02-08T16:09:28.005Z","6.0.1":"2023-11-02T08:57:26.359Z","6.0.0":"2023-08-09T11:43:03.910Z","6.0.0-rc.1":"2023-07-17T14:35:59.083Z","5.1.0":"2023-06-20T11:05:11.470Z","5.0.5":"2023-04-24T08:10:25.272Z","5.0.4":"2023-02-27T14:09:11.283Z","5.0.3":"2023-02-24T09:37:40.831Z","5.0.2":"2022-12-15T16:06:14.709Z","5.0.1":"2022-10-19T09:50:46.589Z","5.0.0":"2022-09-06T10:28:20.598Z","5.0.0-rc.1":"2022-08-26T13:04:00.151Z","5.0.0-beta.3":"2022-08-11T15:35:36.587Z","5.0.0-beta.2":"2022-07-17T16:17:05.048Z","5.0.0-beta.1":"2022-06-30T09:58:22.168Z"},"users":{},"author":{"name":"EthereumJS Team"},"repository":{"type":"git","url":"git+https://github.com/ethereumjs/ethereumjs-monorepo.git"},"versions":{"6.2.1":{"name":"@ethereumjs/trie","version":"6.2.1","description":"Implementation of the modified merkle patricia tree as specified in Ethereum's yellow paper.","keywords":["merkle","radix","trie","ethereum"],"homepage":"https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/trie#readme","bugs":{"url":"https://github.com/ethereumjs/ethereumjs-monorepo/issues?q=is%3Aissue+label%3A%22package%3A+trie%22"},"repository":{"type":"git","url":"git+https://github.com/ethereumjs/ethereumjs-monorepo.git"},"license":"MPL-2.0","author":{"name":"EthereumJS Team"},"contributors":[{"name":"Aaron Kumavis","email":"http://aaron.kumavis.me/","url":"https://github.com/kumavis"}],"main":"dist/cjs/index.js","type":"commonjs","module":"dist/esm/index.js","exports":{".":{"import":"./dist/esm/index.js","require":"./dist/cjs/index.js"}},"scripts":{"benchmarks":"node -r tsx/register --max-old-space-size=8024 benchmarks","build":"../../config/cli/ts-build.sh","clean":"../../config/cli/clean-package.sh","coverage":"DEBUG=ethjs npx vitest run --coverage.enabled --coverage.reporter=lcov","docs:build":"typedoc --options typedoc.cjs","examples":"tsx ../../scripts/examples-runner.ts -- trie","examples:build":"npx embedme README.md","lint":"../../config/cli/lint.sh","lint:diff":"../../config/cli/lint-diff.sh","lint:fix":"../../config/cli/lint-fix.sh","prepublishOnly":"../../config/cli/prepublish.sh","profiling":"tsc --target ES5 benchmarks/random.ts && 0x benchmarks/random.js","test":"npm run test:node","test:browser":"npx vitest run --config=./vitest.config.browser.mts","test:node":"npx vitest run","tsc":"../../config/cli/ts-compile.sh"},"dependencies":{"@ethereumjs/rlp":"^5.0.2","@ethereumjs/util":"^9.1.0","@types/readable-stream":"^2.3.13","debug":"^4.3.4","lru-cache":"10.1.0","ethereum-cryptography":"^2.2.1","readable-stream":"^3.6.0"},"devDependencies":{"@ethereumjs/genesis":"^0.2.3","@types/benchmark":"^1.0.33","abstract-level":"^1.0.3","level":"^8.0.0","level-legacy":"npm:level@^7.0.0","level-mem":"^6.0.1","levelup":"^5.1.1","lmdb":"^2.5.3","memory-level":"^1.0.0","micro-bmark":"0.2.0"},"engines":{"node":">=18"},"_id":"@ethereumjs/trie@6.2.1","gitHead":"ea5ad3a5bc22b76b70b86780df1815175c86ffa6","types":"./dist/cjs/index.d.ts","_nodeVersion":"20.12.2","_npmVersion":"10.5.0","dist":{"shasum":"11d3e91ffd7d565f468a62c0e3d7952063991fa9","size":136385,"noattachment":false,"key":"/@ethereumjs/trie/-/@ethereumjs/trie-6.2.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/@ethereumjs/trie/download/@ethereumjs/trie-6.2.1.tgz"},"_npmUser":{"name":"holgerd77","email":"Holger.Drewes@gmail.com"},"directories":{},"maintainers":[{"name":"acolytec3","email":""},{"name":"axic","email":""},{"name":"g11tech","email":""},{"name":"holgerd77","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/trie_6.2.1_1723719454071_0.2923929020651297"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2024-08-15T10:57:34.321Z","publish_time":1723719454321,"_source_registry_name":"default","_cnpm_publish_time":1723719454321},"6.2.0":{"name":"@ethereumjs/trie","version":"6.2.0","description":"Implementation of the modified merkle patricia tree as specified in Ethereum's yellow paper.","keywords":["merkle","radix","trie","ethereum"],"homepage":"https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/trie#readme","bugs":{"url":"https://github.com/ethereumjs/ethereumjs-monorepo/issues?q=is%3Aissue+label%3A%22package%3A+trie%22"},"repository":{"type":"git","url":"git+https://github.com/ethereumjs/ethereumjs-monorepo.git"},"license":"MPL-2.0","author":{"name":"EthereumJS Team"},"contributors":[{"name":"Aaron Kumavis","email":"http://aaron.kumavis.me/","url":"https://github.com/kumavis"}],"main":"dist/cjs/index.js","type":"commonjs","module":"dist/esm/index.js","exports":{".":{"import":"./dist/esm/index.js","require":"./dist/cjs/index.js"}},"scripts":{"benchmarks":"node -r tsx/register --max-old-space-size=8024 benchmarks","build":"../../config/cli/ts-build.sh","clean":"../../config/cli/clean-package.sh","coverage":"DEBUG=ethjs npx vitest run --coverage.enabled --coverage.reporter=lcov","docs:build":"typedoc --options typedoc.cjs","examples":"tsx ../../scripts/examples-runner.ts -- trie","examples:build":"npx embedme README.md","lint":"../../config/cli/lint.sh","lint:diff":"../../config/cli/lint-diff.sh","lint:fix":"../../config/cli/lint-fix.sh","prepublishOnly":"../../config/cli/prepublish.sh","profiling":"tsc --target ES5 benchmarks/random.ts && 0x benchmarks/random.js","test":"npm run test:node && npm run test:browser","test:browser":"npx vitest run --config=./vitest.config.browser.ts --browser.name=chrome --browser.headless","test:node":"npx vitest run","tsc":"../../config/cli/ts-compile.sh"},"dependencies":{"@ethereumjs/rlp":"^5.0.2","@ethereumjs/util":"^9.0.3","@types/readable-stream":"^2.3.13","debug":"^4.3.4","lru-cache":"10.1.0","ethereum-cryptography":"^2.1.3","readable-stream":"^3.6.0"},"devDependencies":{"@ethereumjs/genesis":"^0.2.2","@types/benchmark":"^1.0.33","abstract-level":"^1.0.3","level":"^8.0.0","level-legacy":"npm:level@^7.0.0","level-mem":"^6.0.1","levelup":"^5.1.1","lmdb":"^2.5.3","memory-level":"^1.0.0","micro-bmark":"0.2.0"},"engines":{"node":">=18"},"_id":"@ethereumjs/trie@6.2.0","gitHead":"dfe53ccafbcdccc13b8a05e2a7a75c93d9f108f7","types":"./dist/cjs/index.d.ts","_nodeVersion":"18.18.0","_npmVersion":"9.8.1","dist":{"shasum":"1ebcece0c962f90c15c189fb67b90a1409422d19","size":136278,"noattachment":false,"key":"/@ethereumjs/trie/-/@ethereumjs/trie-6.2.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/@ethereumjs/trie/download/@ethereumjs/trie-6.2.0.tgz"},"_npmUser":{"name":"holgerd77","email":"Holger.Drewes@gmail.com"},"directories":{},"maintainers":[{"name":"acolytec3","email":""},{"name":"axic","email":""},{"name":"g11tech","email":""},{"name":"holgerd77","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/trie_6.2.0_1710764883140_0.7666832953509477"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2024-03-18T12:28:03.323Z","publish_time":1710764883323,"_source_registry_name":"default","_cnpm_publish_time":1710764883323},"6.1.1":{"name":"@ethereumjs/trie","version":"6.1.1","description":"Implementation of the modified merkle patricia tree as specified in Ethereum's yellow paper.","keywords":["merkle","radix","trie","ethereum"],"homepage":"https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/trie#readme","bugs":{"url":"https://github.com/ethereumjs/ethereumjs-monorepo/issues?q=is%3Aissue+label%3A%22package%3A+trie%22"},"repository":{"type":"git","url":"git+https://github.com/ethereumjs/ethereumjs-monorepo.git"},"license":"MPL-2.0","author":{"name":"EthereumJS Team"},"contributors":[{"name":"Aaron Kumavis","email":"http://aaron.kumavis.me/","url":"https://github.com/kumavis"}],"main":"dist/cjs/index.js","type":"commonjs","module":"dist/esm/index.js","exports":{".":{"import":"./dist/esm/index.js","require":"./dist/cjs/index.js"}},"scripts":{"benchmarks":"node -r tsx/register --max-old-space-size=8024 benchmarks","build":"../../config/cli/ts-build.sh","clean":"../../config/cli/clean-package.sh","coverage":"DEBUG=ethjs npx vitest run --coverage.enabled --coverage.reporter=lcov","docs:build":"typedoc --options typedoc.cjs","examples":"tsx ../../scripts/examples-runner.ts -- trie","examples:build":"npx embedme README.md","lint":"../../config/cli/lint.sh","lint:diff":"../../config/cli/lint-diff.sh","lint:fix":"../../config/cli/lint-fix.sh","prepublishOnly":"../../config/cli/prepublish.sh","profiling":"tsc --target ES5 benchmarks/random.ts && 0x benchmarks/random.js","test":"npm run test:node && npm run test:browser","test:browser":"npx vitest run --config=./vitest.config.browser.ts --browser.name=chrome --browser.headless","test:node":"npx vitest run","tsc":"../../config/cli/ts-compile.sh"},"dependencies":{"@ethereumjs/rlp":"^5.0.2","@ethereumjs/util":"^9.0.2","@types/readable-stream":"^2.3.13","debug":"^4.3.4","lru-cache":"^10.0.0","ethereum-cryptography":"^2.1.3","readable-stream":"^3.6.0"},"devDependencies":{"@ethereumjs/genesis":"^0.2.1","@types/benchmark":"^1.0.33","abstract-level":"^1.0.3","level":"^8.0.0","level-legacy":"npm:level@^7.0.0","level-mem":"^6.0.1","levelup":"^5.1.1","lmdb":"^2.5.3","memory-level":"^1.0.0","micro-bmark":"0.2.0"},"engines":{"node":">=18"},"_id":"@ethereumjs/trie@6.1.1","gitHead":"ff43fc1908f960429fa55fb5e9eb69ad0ebd37fb","types":"./dist/cjs/index.d.ts","_nodeVersion":"18.18.0","_npmVersion":"9.8.1","dist":{"shasum":"c37f61e44c6b38bb59acfa002609e05ba10e18e8","size":136740,"noattachment":false,"key":"/@ethereumjs/trie/-/@ethereumjs/trie-6.1.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/@ethereumjs/trie/download/@ethereumjs/trie-6.1.1.tgz"},"_npmUser":{"name":"holgerd77","email":"Holger.Drewes@gmail.com"},"directories":{},"maintainers":[{"name":"acolytec3","email":""},{"name":"axic","email":""},{"name":"g11tech","email":""},{"name":"holgerd77","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/trie_6.1.1_1707412221543_0.4014693787420991"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2024-02-08T17:10:22.632Z","publish_time":1707412222632,"_source_registry_name":"default","_cnpm_publish_time":1707412222632},"6.1.0":{"name":"@ethereumjs/trie","version":"6.1.0","description":"Implementation of the modified merkle patricia tree as specified in Ethereum's yellow paper.","keywords":["merkle","radix","trie","ethereum"],"homepage":"https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/trie#readme","bugs":{"url":"https://github.com/ethereumjs/ethereumjs-monorepo/issues?q=is%3Aissue+label%3A%22package%3A+trie%22"},"repository":{"type":"git","url":"git+https://github.com/ethereumjs/ethereumjs-monorepo.git"},"license":"MPL-2.0","author":{"name":"EthereumJS Team"},"contributors":[{"name":"Aaron Kumavis","email":"http://aaron.kumavis.me/","url":"https://github.com/kumavis"}],"main":"dist/cjs/index.js","type":"commonjs","module":"dist/esm/index.js","exports":{".":{"import":"./dist/esm/index.js","require":"./dist/cjs/index.js"}},"scripts":{"benchmarks":"node -r tsx/register --max-old-space-size=8024 benchmarks","build":"../../config/cli/ts-build.sh","clean":"../../config/cli/clean-package.sh","coverage":"DEBUG=ethjs npx vitest run --coverage.enabled --coverage.reporter=lcov","docs:build":"typedoc --options typedoc.cjs","examples":"tsx ../../scripts/examples-runner.ts -- trie","examples:build":"npx embedme README.md","lint":"../../config/cli/lint.sh","lint:diff":"../../config/cli/lint-diff.sh","lint:fix":"../../config/cli/lint-fix.sh","prepublishOnly":"../../config/cli/prepublish.sh","profiling":"tsc --target ES5 benchmarks/random.ts && 0x benchmarks/random.js","test":"npm run test:node && npm run test:browser","test:browser":"npx vitest run --config=./vitest.config.browser.ts --browser.name=chrome --browser.headless","test:node":"npx vitest run","tsc":"../../config/cli/ts-compile.sh"},"dependencies":{"@ethereumjs/rlp":"^5.0.2","@ethereumjs/util":"^9.0.2","@types/readable-stream":"^2.3.13","lru-cache":"^10.0.0","ethereum-cryptography":"^2.1.3","readable-stream":"^3.6.0"},"devDependencies":{"@ethereumjs/genesis":"^0.2.1","@types/benchmark":"^1.0.33","abstract-level":"^1.0.3","debug":"^4.3.4","level":"^8.0.0","level-legacy":"npm:level@^7.0.0","level-mem":"^6.0.1","levelup":"^5.1.1","lmdb":"^2.5.3","memory-level":"^1.0.0","micro-bmark":"0.2.0"},"engines":{"node":">=18"},"_id":"@ethereumjs/trie@6.1.0","gitHead":"f5801ef4664fd6f8d81cfa3c83a40cdcce37f03b","types":"./dist/cjs/index.d.ts","_nodeVersion":"18.18.0","_npmVersion":"9.8.1","dist":{"shasum":"848bb6c45b579d7c06c12eb8bcc36825a9d7d26e","size":136738,"noattachment":false,"key":"/@ethereumjs/trie/-/@ethereumjs/trie-6.1.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/@ethereumjs/trie/download/@ethereumjs/trie-6.1.0.tgz"},"_npmUser":{"name":"holgerd77","email":"Holger.Drewes@gmail.com"},"directories":{},"maintainers":[{"name":"acolytec3","email":""},{"name":"axic","email":""},{"name":"g11tech","email":""},{"name":"holgerd77","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/trie_6.1.0_1707408567786_0.6393561268840753"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2024-02-08T16:09:28.005Z","publish_time":1707408568005,"_source_registry_name":"default","_cnpm_publish_time":1707408568005},"6.0.1":{"name":"@ethereumjs/trie","version":"6.0.1","description":"Implementation of the modified merkle patricia tree as specified in Ethereum's yellow paper.","keywords":["merkle","radix","trie","ethereum"],"homepage":"https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/trie#readme","bugs":{"url":"https://github.com/ethereumjs/ethereumjs-monorepo/issues?q=is%3Aissue+label%3A%22package%3A+trie%22"},"repository":{"type":"git","url":"git+https://github.com/ethereumjs/ethereumjs-monorepo.git"},"license":"MPL-2.0","author":{"name":"EthereumJS Team"},"contributors":[{"name":"Aaron Kumavis","email":"http://aaron.kumavis.me/","url":"https://github.com/kumavis"}],"main":"dist/cjs/index.js","type":"commonjs","module":"dist/esm/index.js","exports":{".":{"import":"./dist/esm/index.js","require":"./dist/cjs/index.js"}},"scripts":{"benchmarks":"node -r ts-node/register --max-old-space-size=8024 benchmarks","build":"../../config/cli/ts-build.sh","clean":"../../config/cli/clean-package.sh","coverage":"DEBUG=ethjs npx vitest run --coverage.enabled --coverage.reporter=lcov","docs:build":"typedoc --options typedoc.cjs","examples":"ts-node ../../scripts/examples-runner.ts -- trie","lint":"../../config/cli/lint.sh","lint:diff":"../../config/cli/lint-diff.sh","lint:fix":"../../config/cli/lint-fix.sh","prepublishOnly":"../../config/cli/prepublish.sh","profiling":"tsc --target ES5 benchmarks/random.ts && 0x benchmarks/random.js","test":"npm run test:node && npm run test:browser","test:browser":"npx vitest run --config=./vitest.config.browser.ts --browser.name=chrome --browser.headless","test:node":"npx vitest run","tsc":"../../config/cli/ts-compile.sh"},"dependencies":{"@ethereumjs/rlp":"^5.0.1","@ethereumjs/util":"^9.0.1","@types/readable-stream":"^2.3.13","lru-cache":"^10.0.0","ethereum-cryptography":"^2.1.2","readable-stream":"^3.6.0"},"devDependencies":{"@ethereumjs/genesis":"^0.2.0","@types/benchmark":"^1.0.33","abstract-level":"^1.0.3","debug":"^4.3.4","level":"^8.0.0","level-legacy":"npm:level@^7.0.0","level-mem":"^6.0.1","levelup":"^5.1.1","lmdb":"^2.5.3","memory-level":"^1.0.0","micro-bmark":"0.2.0"},"engines":{"node":">=18"},"_id":"@ethereumjs/trie@6.0.1","gitHead":"c6d8b3998522612ea0f1a6c1c256fe5226c0fddf","types":"./dist/cjs/index.d.ts","_nodeVersion":"18.18.0","_npmVersion":"9.8.1","dist":{"shasum":"f57382aecbbb10ae0900d8c0ba8368f3c6db4547","size":124105,"noattachment":false,"key":"/@ethereumjs/trie/-/@ethereumjs/trie-6.0.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/@ethereumjs/trie/download/@ethereumjs/trie-6.0.1.tgz"},"_npmUser":{"name":"holgerd77","email":"Holger.Drewes@gmail.com"},"directories":{},"maintainers":[{"name":"acolytec3","email":""},{"name":"axic","email":""},{"name":"g11tech","email":""},{"name":"holgerd77","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/trie_6.0.1_1698915446169_0.3386227515569993"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2023-11-02T08:57:26.359Z","publish_time":1698915446359,"_source_registry_name":"default","_cnpm_publish_time":1698915446359},"6.0.0":{"name":"@ethereumjs/trie","version":"6.0.0","description":"Implementation of the modified merkle patricia tree as specified in Ethereum's yellow paper.","keywords":["merkle","radix","trie","ethereum"],"homepage":"https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/trie#readme","bugs":{"url":"https://github.com/ethereumjs/ethereumjs-monorepo/issues?q=is%3Aissue+label%3A%22package%3A+trie%22"},"repository":{"type":"git","url":"git+https://github.com/ethereumjs/ethereumjs-monorepo.git"},"license":"MPL-2.0","author":{"name":"EthereumJS Team"},"contributors":[{"name":"Aaron Kumavis","email":"http://aaron.kumavis.me/","url":"https://github.com/kumavis"}],"main":"dist/cjs/index.js","type":"commonjs","module":"dist/esm/index.js","exports":{".":{"import":"./dist/esm/index.js","require":"./dist/cjs/index.js"}},"scripts":{"benchmarks":"node -r ts-node/register --max-old-space-size=8024 benchmarks","build":"../../config/cli/ts-build.sh","clean":"../../config/cli/clean-package.sh","coverage":"npx vitest run --coverage.enabled --coverage.reporter=lcov","docs:build":"typedoc --options typedoc.cjs","examples":"ts-node ../../scripts/examples-runner.ts -- trie","lint":"../../config/cli/lint.sh","lint:diff":"../../config/cli/lint-diff.sh","lint:fix":"../../config/cli/lint-fix.sh","prepublishOnly":"../../config/cli/prepublish.sh","profiling":"tsc --target ES5 benchmarks/random.ts && 0x benchmarks/random.js","test":"npm run test:node && npm run test:browser","test:browser":"npx vitest run --config=./vitest.config.browser.ts --browser.name=chrome --browser.headless","test:node":"npx vitest run","tsc":"../../config/cli/ts-compile.sh"},"dependencies":{"@ethereumjs/rlp":"^5.0.0","@ethereumjs/util":"^9.0.0","@types/readable-stream":"^2.3.13","lru-cache":"^10.0.0","ethereum-cryptography":"^2.1.2","readable-stream":"^3.6.0"},"devDependencies":{"@ethereumjs/genesis":"^0.1.0","@types/benchmark":"^1.0.33","abstract-level":"^1.0.3","level":"^8.0.0","level-legacy":"npm:level@^7.0.0","level-mem":"^6.0.1","levelup":"^5.1.1","lmdb":"^2.5.3","memory-level":"^1.0.0","micro-bmark":"0.2.0"},"engines":{"node":">=18"},"types":"./dist/cjs/index.d.ts","gitHead":"c47d2c7351f04f35744de0f2082c37d5f2d2afd0","_id":"@ethereumjs/trie@6.0.0","_nodeVersion":"18.14.2","_npmVersion":"9.5.0","dist":{"shasum":"d5c9d1a23e722d51ab98543c4ee79202feed2c67","size":114047,"noattachment":false,"key":"/@ethereumjs/trie/-/@ethereumjs/trie-6.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/@ethereumjs/trie/download/@ethereumjs/trie-6.0.0.tgz"},"_npmUser":{"name":"holgerd77","email":"Holger.Drewes@gmail.com"},"directories":{},"maintainers":[{"name":"acolytec3","email":""},{"name":"axic","email":""},{"name":"g11tech","email":""},{"name":"holgerd77","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/trie_6.0.0_1691581383751_0.6102651859812251"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2023-08-09T11:43:03.910Z","publish_time":1691581383910,"_source_registry_name":"default","_cnpm_publish_time":1691581383910},"6.0.0-rc.1":{"name":"@ethereumjs/trie","version":"6.0.0-rc.1","description":"Implementation of the modified merkle patricia tree as specified in Ethereum's yellow paper.","keywords":["merkle","radix","trie","ethereum"],"homepage":"https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/trie#readme","bugs":{"url":"https://github.com/ethereumjs/ethereumjs-monorepo/issues?q=is%3Aissue+label%3A%22package%3A+trie%22"},"repository":{"type":"git","url":"git+https://github.com/ethereumjs/ethereumjs-monorepo.git"},"license":"MPL-2.0","author":{"name":"EthereumJS Team"},"contributors":[{"name":"Aaron Kumavis","email":"http://aaron.kumavis.me/","url":"https://github.com/kumavis"}],"main":"dist/cjs/index.js","type":"commonjs","module":"dist/esm/index.js","exports":{".":{"import":"./dist/esm/index.js","require":"./dist/cjs/index.js"}},"scripts":{"benchmarks":"node -r ts-node/register --max-old-space-size=8024 benchmarks","build":"../../config/cli/ts-build.sh","clean":"../../config/cli/clean-package.sh","coverage":"npx vitest run --coverage.enabled --coverage.reporter=lcov","docs:build":"typedoc --options typedoc.cjs","examples":"ts-node ../../scripts/examples-runner.ts -- trie","lint":"../../config/cli/lint.sh","lint:diff":"../../config/cli/lint-diff.sh","lint:fix":"../../config/cli/lint-fix.sh","prepublishOnly":"../../config/cli/prepublish.sh","profiling":"tsc --target ES5 benchmarks/random.ts && 0x benchmarks/random.js","test":"npm run test:node && npm run test:browser","test:browser":"npx vitest run --config=./vitest.config.browser.ts --browser.name=chrome --browser.headless","test:node":"npx vitest run","tsc":"../../config/cli/ts-compile.sh"},"dependencies":{"@ethereumjs/rlp":"5.0.0-rc.1","@ethereumjs/util":"9.0.0-rc.1","@types/readable-stream":"^2.3.13","lru-cache":"^10.0.0","ethereum-cryptography":"^2.1.2","readable-stream":"^3.6.0"},"devDependencies":{"@ethereumjs/genesis":"0.1.0-rc.1","0x":"^4.9.1","@types/benchmark":"^1.0.33","abstract-level":"^1.0.3","level":"^8.0.0","level-legacy":"npm:level@^7.0.0","level-mem":"^6.0.1","levelup":"^5.1.1","lmdb":"^2.5.3","memory-level":"^1.0.0","micro-bmark":"0.2.0"},"engines":{"node":">=18"},"types":"./dist/cjs/index.d.ts","readmeFilename":"README.md","gitHead":"66c98f386e4a7807978e3e8f0c19608d10849896","_id":"@ethereumjs/trie@6.0.0-rc.1","_nodeVersion":"18.14.2","_npmVersion":"9.5.0","dist":{"shasum":"55a5c430fd363bd89be6f934765918d866a309a0","size":103641,"noattachment":false,"key":"/@ethereumjs/trie/-/@ethereumjs/trie-6.0.0-rc.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/@ethereumjs/trie/download/@ethereumjs/trie-6.0.0-rc.1.tgz"},"_npmUser":{"name":"holgerd77","email":"Holger.Drewes@gmail.com"},"directories":{},"maintainers":[{"name":"acolytec3","email":""},{"name":"axic","email":""},{"name":"g11tech","email":""},{"name":"holgerd77","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/trie_6.0.0-rc.1_1689604558913_0.3495723699353597"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2023-07-17T14:35:59.083Z","publish_time":1689604559083,"_source_registry_name":"default","_cnpm_publish_time":1689604559083},"5.1.0":{"name":"@ethereumjs/trie","version":"5.1.0","description":"This is an implementation of the modified merkle patricia tree as specified in Ethereum's yellow paper.","keywords":["merkle","radix","trie","ethereum"],"homepage":"https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/trie#readme","bugs":{"url":"https://github.com/ethereumjs/ethereumjs-monorepo/issues?q=is%3Aissue+label%3A%22package%3A+trie%22"},"repository":{"type":"git","url":"git+https://github.com/ethereumjs/ethereumjs-monorepo.git"},"license":"MPL-2.0","author":{"name":"EthereumJS Team"},"contributors":[{"name":"Aaron Kumavis","email":"http://aaron.kumavis.me/","url":"https://github.com/kumavis"}],"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"benchmarks":"node -r ts-node/register --max-old-space-size=8024 benchmarks","build":"../../config/cli/ts-build.sh","clean":"../../config/cli/clean-package.sh","coverage":"../../config/cli/coverage.sh","docs:build":"typedoc --options typedoc.js","lint":"../../config/cli/lint.sh","lint:diff":"../../config/cli/lint-diff.sh","lint:fix":"../../config/cli/lint-fix.sh","prepublishOnly":"../../config/cli/prepublish.sh","profiling":"tsc --target ES5 benchmarks/random.ts && 0x benchmarks/random.js","tape":"tape -r ts-node/register","test":"npm run test:node && npm run test:browser","test:browser":"karma start karma.conf.js","test:node":"tape -r ts-node/register 'test/**/*.ts'","tsc":"../../config/cli/ts-compile.sh"},"dependencies":{"@ethereumjs/rlp":"^4.0.1","@ethereumjs/util":"^8.1.0","@types/readable-stream":"^2.3.13","ethereum-cryptography":"^2.0.0","readable-stream":"^3.6.0"},"devDependencies":{"0x":"^4.9.1","@types/benchmark":"^1.0.33","abstract-level":"^1.0.3","level":"^8.0.0","level-legacy":"npm:level@^7.0.0","level-mem":"^6.0.1","levelup":"^5.1.1","lmdb":"^2.5.3","memory-level":"^1.0.0","micro-bmark":"0.2.0"},"engines":{"node":">=14"},"gitHead":"850860614ee1324863acdb2d3ff4255b8dab4553","_id":"@ethereumjs/trie@5.1.0","_nodeVersion":"18.14.2","_npmVersion":"9.5.0","dist":{"shasum":"07c4432e04f4c41d7c68983b58adef8fb79c7d75","size":58669,"noattachment":false,"key":"/@ethereumjs/trie/-/@ethereumjs/trie-5.1.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/@ethereumjs/trie/download/@ethereumjs/trie-5.1.0.tgz"},"_npmUser":{"name":"holgerd77","email":"Holger.Drewes@gmail.com"},"directories":{},"maintainers":[{"name":"acolytec3","email":""},{"name":"axic","email":""},{"name":"g11tech","email":""},{"name":"holgerd77","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/trie_5.1.0_1687259111226_0.7462560137487888"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2023-06-20T11:05:11.470Z","publish_time":1687259111470,"_source_registry_name":"default","_cnpm_publish_time":1687259111470},"5.0.5":{"name":"@ethereumjs/trie","version":"5.0.5","description":"This is an implementation of the modified merkle patricia tree as specified in Ethereum's yellow paper.","keywords":["merkle","radix","trie","ethereum"],"homepage":"https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/trie#readme","bugs":{"url":"https://github.com/ethereumjs/ethereumjs-monorepo/issues?q=is%3Aissue+label%3A%22package%3A+trie%22"},"repository":{"type":"git","url":"git+https://github.com/ethereumjs/ethereumjs-monorepo.git"},"license":"MPL-2.0","author":{"name":"EthereumJS Team"},"contributors":[{"name":"Aaron Kumavis","email":"http://aaron.kumavis.me/","url":"https://github.com/kumavis"}],"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"benchmarks":"node -r ts-node/register --max-old-space-size=8024 benchmarks","build":"../../config/cli/ts-build.sh","clean":"../../config/cli/clean-package.sh","coverage":"../../config/cli/coverage.sh","docs:build":"typedoc --options typedoc.js","lint":"../../config/cli/lint.sh","lint:diff":"../../config/cli/lint-diff.sh","lint:fix":"../../config/cli/lint-fix.sh","prepublishOnly":"../../config/cli/prepublish.sh","profiling":"tsc --target ES5 benchmarks/random.ts && 0x benchmarks/random.js","tape":"tape -r ts-node/register","test":"npm run test:node && npm run test:browser","test:browser":"karma start karma.conf.js","test:node":"tape -r ts-node/register 'test/**/*.ts'","tsc":"../../config/cli/ts-compile.sh"},"dependencies":{"@ethereumjs/rlp":"^4.0.1","@ethereumjs/util":"^8.0.6","@types/readable-stream":"^2.3.13","ethereum-cryptography":"^2.0.0","readable-stream":"^3.6.0"},"devDependencies":{"0x":"^4.9.1","@types/benchmark":"^1.0.33","abstract-level":"^1.0.3","level":"^8.0.0","level-legacy":"npm:level@^7.0.0","level-mem":"^6.0.1","levelup":"^5.1.1","lmdb":"^2.5.3","memory-level":"^1.0.0","micro-bmark":"0.2.0"},"engines":{"node":">=14"},"gitHead":"49c2d93b94e70887d4fafff123eec19ef6a35fec","_id":"@ethereumjs/trie@5.0.5","_nodeVersion":"18.14.2","_npmVersion":"9.5.0","dist":{"shasum":"c232a4913871ffc45bf52cccd214fe5aa24cb3e2","size":58679,"noattachment":false,"key":"/@ethereumjs/trie/-/@ethereumjs/trie-5.0.5.tgz","tarball":"http://registry.cnpm.dingdandao.com/@ethereumjs/trie/download/@ethereumjs/trie-5.0.5.tgz"},"_npmUser":{"name":"holgerd77","email":"Holger.Drewes@gmail.com"},"directories":{},"maintainers":[{"name":"acolytec3","email":""},{"name":"axic","email":""},{"name":"g11tech","email":""},{"name":"holgerd77","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/trie_5.0.5_1682323825017_0.6805165078558788"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2023-04-24T08:10:25.272Z","publish_time":1682323825272,"_cnpm_publish_time":1682323825272},"5.0.4":{"name":"@ethereumjs/trie","version":"5.0.4","description":"This is an implementation of the modified merkle patricia tree as specified in Ethereum's yellow paper.","keywords":["merkle","radix","trie","ethereum"],"homepage":"https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/trie#readme","bugs":{"url":"https://github.com/ethereumjs/ethereumjs-monorepo/issues?q=is%3Aissue+label%3A%22package%3A+trie%22"},"repository":{"type":"git","url":"git+https://github.com/ethereumjs/ethereumjs-monorepo.git"},"license":"MPL-2.0","author":{"name":"EthereumJS Team"},"contributors":[{"name":"Aaron Kumavis","email":"http://aaron.kumavis.me/","url":"https://github.com/kumavis"}],"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"benchmarks":"node -r ts-node/register --max-old-space-size=8024 benchmarks","build":"../../config/cli/ts-build.sh","clean":"../../config/cli/clean-package.sh","coverage":"../../config/cli/coverage.sh","docs:build":"typedoc --options typedoc.js","lint":"../../config/cli/lint.sh","lint:diff":"../../config/cli/lint-diff.sh","lint:fix":"../../config/cli/lint-fix.sh","prepublishOnly":"../../config/cli/prepublish.sh","profiling":"tsc --target ES5 benchmarks/random.ts && 0x benchmarks/random.js","tape":"tape -r ts-node/register","test":"npm run test:node && npm run test:browser","test:browser":"karma start karma.conf.js","test:node":"tape -r ts-node/register 'test/**/*.ts'","tsc":"../../config/cli/ts-compile.sh"},"dependencies":{"@ethereumjs/rlp":"^4.0.1","@ethereumjs/util":"^8.0.5","@types/readable-stream":"^2.3.13","ethereum-cryptography":"^1.1.2","readable-stream":"^3.6.0"},"devDependencies":{"0x":"^4.9.1","@types/benchmark":"^1.0.33","abstract-level":"^1.0.3","level":"^8.0.0","level-legacy":"npm:level@^7.0.0","level-mem":"^6.0.1","levelup":"^5.1.1","lmdb":"^2.5.3","memory-level":"^1.0.0","micro-bmark":"0.2.0"},"engines":{"node":">=14"},"gitHead":"295e5a3caa69c226e8f8edfad4ea72a843bc0b4f","_id":"@ethereumjs/trie@5.0.4","_nodeVersion":"18.13.0","_npmVersion":"8.19.3","dist":{"shasum":"eb06ce2c7957f6a8f07c0db43fb0335b256f3705","size":58681,"noattachment":false,"key":"/@ethereumjs/trie/-/@ethereumjs/trie-5.0.4.tgz","tarball":"http://registry.cnpm.dingdandao.com/@ethereumjs/trie/download/@ethereumjs/trie-5.0.4.tgz"},"_npmUser":{"name":"holgerd77","email":"Holger.Drewes@gmail.com"},"directories":{},"maintainers":[{"name":"acolytec3","email":""},{"name":"axic","email":""},{"name":"g11tech","email":""},{"name":"holgerd77","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/trie_5.0.4_1677506951117_0.823382008283023"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2023-02-27T14:09:11.283Z","publish_time":1677506951283,"_cnpm_publish_time":1677506951283},"5.0.3":{"name":"@ethereumjs/trie","version":"5.0.3","description":"This is an implementation of the modified merkle patricia tree as specified in Ethereum's yellow paper.","keywords":["merkle","radix","trie","ethereum"],"homepage":"https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/trie#readme","bugs":{"url":"https://github.com/ethereumjs/ethereumjs-monorepo/issues?q=is%3Aissue+label%3A%22package%3A+trie%22"},"repository":{"type":"git","url":"git+https://github.com/ethereumjs/ethereumjs-monorepo.git"},"license":"MPL-2.0","author":{"name":"EthereumJS Team"},"contributors":[{"name":"Aaron Kumavis","email":"http://aaron.kumavis.me/","url":"https://github.com/kumavis"}],"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"benchmarks":"node -r ts-node/register --max-old-space-size=8024 benchmarks","build":"../../config/cli/ts-build.sh","clean":"../../config/cli/clean-package.sh","coverage":"../../config/cli/coverage.sh","docs:build":"typedoc --options typedoc.js","lint":"../../config/cli/lint.sh","lint:diff":"../../config/cli/lint-diff.sh","lint:fix":"../../config/cli/lint-fix.sh","prepublishOnly":"../../config/cli/prepublish.sh","profiling":"tsc --target ES5 benchmarks/random.ts && 0x benchmarks/random.js","tape":"tape -r ts-node/register","test":"npm run test:node && npm run test:browser","test:browser":"karma start karma.conf.js","test:node":"tape -r ts-node/register 'test/**/*.ts'","tsc":"../../config/cli/ts-compile.sh"},"dependencies":{"@ethereumjs/rlp":"^4.0.1","@ethereumjs/util":"^8.0.4","@types/readable-stream":"^2.3.13","ethereum-cryptography":"^1.1.2","readable-stream":"^3.6.0"},"devDependencies":{"0x":"^4.9.1","@types/benchmark":"^1.0.33","abstract-level":"^1.0.3","level":"^8.0.0","level-legacy":"npm:level@^7.0.0","level-mem":"^6.0.1","levelup":"^5.1.1","lmdb":"^2.5.3","memory-level":"^1.0.0","micro-bmark":"0.2.0"},"engines":{"node":">=14"},"gitHead":"47c293da1f849f05000e7e70061d62d571ff3920","_id":"@ethereumjs/trie@5.0.3","_nodeVersion":"18.13.0","_npmVersion":"8.19.3","dist":{"shasum":"050c844c80cf0669506de747ec3907b082d01c83","size":58681,"noattachment":false,"key":"/@ethereumjs/trie/-/@ethereumjs/trie-5.0.3.tgz","tarball":"http://registry.cnpm.dingdandao.com/@ethereumjs/trie/download/@ethereumjs/trie-5.0.3.tgz"},"_npmUser":{"name":"holgerd77","email":"Holger.Drewes@gmail.com"},"directories":{},"maintainers":[{"name":"acolytec3","email":""},{"name":"axic","email":""},{"name":"g11tech","email":""},{"name":"holgerd77","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/trie_5.0.3_1677231460568_0.7358837529005764"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2023-02-24T09:37:40.831Z","publish_time":1677231460831,"_cnpm_publish_time":1677231460831},"5.0.2":{"name":"@ethereumjs/trie","version":"5.0.2","description":"This is an implementation of the modified merkle patricia tree as specified in Ethereum's yellow paper.","keywords":["merkle","radix","trie","ethereum"],"homepage":"https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/trie#readme","bugs":{"url":"https://github.com/ethereumjs/ethereumjs-monorepo/issues?q=is%3Aissue+label%3A%22package%3A+trie%22"},"repository":{"type":"git","url":"git+https://github.com/ethereumjs/ethereumjs-monorepo.git"},"license":"MPL-2.0","author":{"name":"EthereumJS Team"},"contributors":[{"name":"Aaron Kumavis","email":"http://aaron.kumavis.me/","url":"https://github.com/kumavis"}],"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"benchmarks":"node -r ts-node/register --max-old-space-size=8024 benchmarks","build":"../../config/cli/ts-build.sh","clean":"../../config/cli/clean-package.sh","coverage":"../../config/cli/coverage.sh","docs:build":"typedoc --options typedoc.js","lint":"../../config/cli/lint.sh","lint:diff":"../../config/cli/lint-diff.sh","lint:fix":"../../config/cli/lint-fix.sh","prepublishOnly":"../../config/cli/prepublish.sh","profiling":"tsc --target ES5 benchmarks/random.ts && 0x benchmarks/random.js","tape":"tape -r ts-node/register","test":"npm run test:node && npm run test:browser","test:browser":"karma start karma.conf.js","test:node":"tape -r ts-node/register 'test/**/*.ts'","tsc":"../../config/cli/ts-compile.sh"},"dependencies":{"@ethereumjs/rlp":"^4.0.0","@ethereumjs/util":"^8.0.3","@types/readable-stream":"^2.3.13","ethereum-cryptography":"^1.1.2","readable-stream":"^3.6.0"},"devDependencies":{"0x":"^4.9.1","@types/benchmark":"^1.0.33","abstract-level":"^1.0.3","level":"^8.0.0","level-legacy":"npm:level@^7.0.0","level-mem":"^6.0.1","levelup":"^5.1.1","lmdb":"^2.5.3","memory-level":"^1.0.0","micro-bmark":"0.2.0"},"engines":{"node":">=14"},"gitHead":"696b36fe9091cd67f3e0a70bc696e41bd16e57a2","_id":"@ethereumjs/trie@5.0.2","_nodeVersion":"16.15.0","_npmVersion":"8.5.5","dist":{"shasum":"766c22c380367b9f00eed685ba3044c290e15c33","size":58722,"noattachment":false,"key":"/@ethereumjs/trie/-/@ethereumjs/trie-5.0.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/@ethereumjs/trie/download/@ethereumjs/trie-5.0.2.tgz"},"_npmUser":{"name":"holgerd77","email":"Holger.Drewes@gmail.com"},"directories":{},"maintainers":[{"name":"acolytec3","email":""},{"name":"axic","email":""},{"name":"g11tech","email":""},{"name":"holgerd77","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/trie_5.0.2_1671120374457_0.6292215137789297"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2022-12-15T16:17:42.269Z","publish_time":1671120374709,"_cnpm_publish_time":1671120374709},"5.0.1":{"name":"@ethereumjs/trie","version":"5.0.1","description":"This is an implementation of the modified merkle patricia tree as specified in Ethereum's yellow paper.","keywords":["merkle","radix","trie","ethereum"],"homepage":"https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/trie#readme","bugs":{"url":"https://github.com/ethereumjs/ethereumjs-monorepo/issues?q=is%3Aissue+label%3A%22package%3A+trie%22"},"repository":{"type":"git","url":"git+https://github.com/ethereumjs/ethereumjs-monorepo.git"},"license":"MPL-2.0","author":{"name":"EthereumJS Team"},"contributors":[{"name":"Aaron Kumavis","email":"http://aaron.kumavis.me/","url":"https://github.com/kumavis"}],"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"benchmarks":"node -r ts-node/register --max-old-space-size=8024 benchmarks","build":"../../config/cli/ts-build.sh","clean":"../../config/cli/clean-package.sh","coverage":"../../config/cli/coverage.sh","docs:build":"typedoc --options typedoc.js","lint":"../../config/cli/lint.sh","lint:diff":"../../config/cli/lint-diff.sh","lint:fix":"../../config/cli/lint-fix.sh","prepublishOnly":"../../config/cli/prepublish.sh","profiling":"tsc --target ES5 benchmarks/random.ts && 0x benchmarks/random.js","tape":"tape -r ts-node/register","test":"npm run test:node && npm run test:browser","test:browser":"karma start karma.conf.js","test:node":"tape -r ts-node/register 'test/**/*.ts'","tsc":"../../config/cli/ts-compile.sh"},"dependencies":{"@ethereumjs/rlp":"^4.0.0","@ethereumjs/util":"^8.0.0","@types/readable-stream":"^2.3.13","ethereum-cryptography":"^1.1.2","readable-stream":"^3.6.0"},"devDependencies":{"0x":"^4.9.1","@types/benchmark":"^1.0.33","abstract-level":"^1.0.3","level":"^8.0.0","level-legacy":"npm:level@^7.0.0","level-mem":"^6.0.1","levelup":"^5.1.1","lmdb":"^2.5.3","memory-level":"^1.0.0","micro-bmark":"0.2.0"},"engines":{"node":">=14"},"gitHead":"ac16d71783dcc0a582245384c05433a40c3f654c","_id":"@ethereumjs/trie@5.0.1","_nodeVersion":"16.15.0","_npmVersion":"8.5.5","dist":{"shasum":"3cb5730450839c8a540ec48e16a7825a1d0897e5","size":58712,"noattachment":false,"key":"/@ethereumjs/trie/-/@ethereumjs/trie-5.0.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/@ethereumjs/trie/download/@ethereumjs/trie-5.0.1.tgz"},"_npmUser":{"name":"holgerd77","email":"Holger.Drewes@gmail.com"},"directories":{},"maintainers":[{"name":"acolytec3","email":""},{"name":"axic","email":""},{"name":"g11tech","email":""},{"name":"holgerd77","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/trie_5.0.1_1666173046347_0.4663778570233872"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2022-10-19T10:16:53.936Z","publish_time":1666173046589,"_cnpm_publish_time":1666173046589},"5.0.0":{"name":"@ethereumjs/trie","version":"5.0.0","description":"This is an implementation of the modified merkle patricia tree as specified in Ethereum's yellow paper.","keywords":["merkle","radix","trie","ethereum"],"homepage":"https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/trie#readme","bugs":{"url":"https://github.com/ethereumjs/ethereumjs-monorepo/issues?q=is%3Aissue+label%3A%22package%3A+trie%22"},"repository":{"type":"git","url":"git+https://github.com/ethereumjs/ethereumjs-monorepo.git"},"license":"MPL-2.0","author":{"name":"EthereumJS Team"},"contributors":[{"name":"Aaron Kumavis","email":"http://aaron.kumavis.me/","url":"https://github.com/kumavis"}],"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"benchmarks":"node -r ts-node/register --max-old-space-size=8024 benchmarks","build":"../../config/cli/ts-build.sh","clean":"../../config/cli/clean-package.sh","coverage":"../../config/cli/coverage.sh","docs:build":"typedoc --options typedoc.js","lint":"../../config/cli/lint.sh","lint:diff":"../../config/cli/lint-diff.sh","lint:fix":"../../config/cli/lint-fix.sh","prepublishOnly":"../../config/cli/prepublish.sh","profiling":"tsc --target ES5 benchmarks/random.ts && 0x benchmarks/random.js","tape":"tape -r ts-node/register","test":"npm run test:node && npm run test:browser","test:browser":"karma start karma.conf.js","test:node":"tape -r ts-node/register 'test/**/*.ts'","tsc":"../../config/cli/ts-compile.sh"},"dependencies":{"@ethereumjs/rlp":"^4.0.0","@ethereumjs/util":"^8.0.0","ethereum-cryptography":"^1.1.2","readable-stream":"^3.6.0"},"devDependencies":{"0x":"^4.9.1","@types/benchmark":"^1.0.33","@types/readable-stream":"^2.3.13","abstract-level":"^1.0.3","level":"^8.0.0","level-legacy":"npm:level@^7.0.0","level-mem":"^6.0.1","levelup":"^5.1.1","lmdb":"^2.5.3","memory-level":"^1.0.0","micro-bmark":"0.2.0"},"engines":{"node":">=14"},"gitHead":"1e0de28380e5e73e92be47895f6c79ffc90392c4","_id":"@ethereumjs/trie@5.0.0","_nodeVersion":"16.15.0","_npmVersion":"8.5.5","dist":{"shasum":"c98da2e09c082ae2f874e70bd59adf712f5d0d01","size":58696,"noattachment":false,"key":"/@ethereumjs/trie/-/@ethereumjs/trie-5.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/@ethereumjs/trie/download/@ethereumjs/trie-5.0.0.tgz"},"_npmUser":{"name":"holgerd77","email":"Holger.Drewes@gmail.com"},"directories":{},"maintainers":[{"name":"acolytec3","email":""},{"name":"axic","email":""},{"name":"g11tech","email":""},{"name":"holgerd77","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/trie_5.0.0_1662460100395_0.9551869872520575"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2022-09-06T11:34:21.632Z","publish_time":1662460100598,"_cnpm_publish_time":1662460100598},"5.0.0-rc.1":{"name":"@ethereumjs/trie","version":"5.0.0-rc.1","description":"This is an implementation of the modified merkle patricia tree as specified in Ethereum's yellow paper.","keywords":["merkle","radix","trie","ethereum"],"homepage":"https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/trie#readme","bugs":{"url":"https://github.com/ethereumjs/ethereumjs-monorepo/issues?q=is%3Aissue+label%3A%22package%3A+trie%22"},"repository":{"type":"git","url":"git+https://github.com/ethereumjs/ethereumjs-monorepo.git"},"license":"MPL-2.0","author":{"name":"EthereumJS Team"},"contributors":[{"name":"Aaron Kumavis","email":"http://aaron.kumavis.me/","url":"https://github.com/kumavis"}],"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"benchmarks":"node -r ts-node/register --max-old-space-size=8024 benchmarks","build":"../../config/cli/ts-build.sh","clean":"../../config/cli/clean-package.sh","coverage":"../../config/cli/coverage.sh","docs:build":"typedoc --options typedoc.js","lint":"../../config/cli/lint.sh","lint:diff":"../../config/cli/lint-diff.sh","lint:fix":"../../config/cli/lint-fix.sh","prepublishOnly":"../../config/cli/prepublish.sh","profiling":"tsc --target ES5 benchmarks/random.ts && 0x benchmarks/random.js","tape":"tape -r ts-node/register","test":"npm run test:node && npm run test:browser","test:browser":"karma start karma.conf.js","test:node":"tape -r ts-node/register 'test/**/*.ts'","tsc":"../../config/cli/ts-compile.sh"},"dependencies":{"@ethereumjs/rlp":"4.0.0-rc.1","@ethereumjs/util":"8.0.0-rc.1","ethereum-cryptography":"^1.1.2","readable-stream":"^3.6.0"},"devDependencies":{"0x":"^4.9.1","@types/benchmark":"^1.0.33","@types/readable-stream":"^2.3.13","abstract-level":"^1.0.3","level":"^8.0.0","level-legacy":"npm:level@^7.0.0","level-mem":"^6.0.1","levelup":"^5.1.1","lmdb":"^2.5.3","memory-level":"^1.0.0","micro-bmark":"0.2.0"},"engines":{"node":">=14"},"readmeFilename":"README.md","gitHead":"9bfb0749bb3d6c828ebca56f2fb44c135a92f6de","_id":"@ethereumjs/trie@5.0.0-rc.1","_nodeVersion":"16.15.0","_npmVersion":"8.5.5","dist":{"shasum":"a881c0b9e84c7b5052423cf1850fe6b32f71ce5a","size":55272,"noattachment":false,"key":"/@ethereumjs/trie/-/@ethereumjs/trie-5.0.0-rc.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/@ethereumjs/trie/download/@ethereumjs/trie-5.0.0-rc.1.tgz"},"_npmUser":{"name":"holgerd77","email":"Holger.Drewes@gmail.com"},"directories":{},"maintainers":[{"name":"acolytec3","email":""},{"name":"axic","email":""},{"name":"g11tech","email":""},{"name":"holgerd77","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/trie_5.0.0-rc.1_1661519040026_0.43650347853558746"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2022-08-26T13:09:10.992Z","publish_time":1661519040151,"_cnpm_publish_time":1661519040151},"5.0.0-beta.3":{"name":"@ethereumjs/trie","version":"5.0.0-beta.3","description":"This is an implementation of the modified merkle patricia tree as specified in Ethereum's yellow paper.","keywords":["merkle","radix","trie","ethereum"],"homepage":"https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/trie#readme","bugs":{"url":"https://github.com/ethereumjs/ethereumjs-monorepo/issues?q=is%3Aissue+label%3A%22package%3A+trie%22"},"repository":{"type":"git","url":"git+https://github.com/ethereumjs/ethereumjs-monorepo.git"},"license":"MPL-2.0","author":{"name":"EthereumJS Team"},"contributors":[{"name":"Aaron Kumavis","email":"http://aaron.kumavis.me/","url":"https://github.com/kumavis"}],"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"benchmarks":"node -r ts-node/register --max-old-space-size=8024 benchmarks","build":"../../config/cli/ts-build.sh","clean":"../../config/cli/clean-package.sh","coverage":"../../config/cli/coverage.sh","docs:build":"typedoc --options typedoc.js","lint":"../../config/cli/lint.sh","lint:diff":"../../config/cli/lint-diff.sh","lint:fix":"../../config/cli/lint-fix.sh","prepublishOnly":"../../config/cli/prepublish.sh","profiling":"tsc --target ES5 benchmarks/random.ts && 0x benchmarks/random.js","tape":"tape -r ts-node/register","test":"npm run test:node && npm run test:browser","test:browser":"karma start karma.conf.js","test:node":"tape -r ts-node/register 'test/**/*.ts'","tsc":"../../config/cli/ts-compile.sh"},"dependencies":{"@ethereumjs/common":"^3.0.0-beta.3","@ethereumjs/rlp":"4.0.0-beta.3","@ethereumjs/util":"8.0.0-beta.3","abstract-level":"^1.0.3","ethereum-cryptography":"^1.1.2","level":"^8.0.0","memory-level":"^1.0.0","readable-stream":"^3.6.0","semaphore-async-await":"^1.5.1"},"devDependencies":{"@types/benchmark":"^1.0.33","@types/node":"^16.11.7","@types/readable-stream":"^2.3.13","@types/tape":"^4.13.2","0x":"^4.9.1","benchmark":"^2.1.4","eslint":"^8.0.0","karma":"^6.3.2","karma-chrome-launcher":"^3.1.0","karma-firefox-launcher":"^2.1.0","karma-tap":"^4.2.0","karma-typescript":"^5.5.3","lmdb":"^2.5.3","nyc":"^15.1.0","tape":"^5.3.1","ts-node":"^10.2.1","typescript":"^4.4.2","web3":"^1.7.5"},"readmeFilename":"README.md","gitHead":"8c1d34d43119819fcd4da4c44e07b7c2ca1f807b","_id":"@ethereumjs/trie@5.0.0-beta.3","_nodeVersion":"16.15.0","_npmVersion":"8.5.5","dist":{"shasum":"f81707187faef017c96941acd108d6e472aa8172","size":54559,"noattachment":false,"key":"/@ethereumjs/trie/-/@ethereumjs/trie-5.0.0-beta.3.tgz","tarball":"http://registry.cnpm.dingdandao.com/@ethereumjs/trie/download/@ethereumjs/trie-5.0.0-beta.3.tgz"},"_npmUser":{"name":"holgerd77","email":"Holger.Drewes@gmail.com"},"directories":{},"maintainers":[{"name":"acolytec3","email":""},{"name":"axic","email":""},{"name":"g11tech","email":""},{"name":"holgerd77","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/trie_5.0.0-beta.3_1660232136414_0.6269144273343099"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2022-08-11T15:54:18.947Z","publish_time":1660232136587,"_cnpm_publish_time":1660232136587},"5.0.0-beta.2":{"name":"@ethereumjs/trie","version":"5.0.0-beta.2","description":"This is an implementation of the modified merkle patricia tree as specified in Ethereum's yellow paper.","license":"MPL-2.0","author":{"name":"EthereumJS Team"},"keywords":["merkle","radix","trie","ethereum"],"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"benchmarks":"node -r ts-node/register --max-old-space-size=8024 benchmarks","profiling":"tsc --target ES5 benchmarks/random.ts && 0x benchmarks/random.js","prepublishOnly":"../../config/cli/prepublish.sh","clean":"../../config/cli/clean-package.sh","build":"../../config/cli/ts-build.sh","coverage":"../../config/cli/coverage.sh","docs:build":"typedoc --options typedoc.js","lint":"../../config/cli/lint.sh","lint:fix":"../../config/cli/lint-fix.sh","tsc":"../../config/cli/ts-compile.sh","tape":"tape -r ts-node/register","test":"npm run test:node && npm run test:browser","test:browser":"karma start karma.conf.js","test:node":"tape -r ts-node/register 'test/**/*.ts'"},"dependencies":{"@ethereumjs/util":"8.0.0-beta.2","abstract-level":"^1.0.3","ethereum-cryptography":"^1.1.2","level":"^8.0.0","memory-level":"^1.0.0","readable-stream":"^3.6.0","rlp":"4.0.0-beta.2","semaphore-async-await":"^1.5.1"},"devDependencies":{"@types/benchmark":"^1.0.33","@types/node":"^16.11.7","@types/readable-stream":"^2.3.13","@types/tape":"^4.13.2","0x":"^4.9.1","benchmark":"^2.1.4","eslint":"^6.8.0","karma":"^6.3.2","karma-chrome-launcher":"^3.1.0","karma-firefox-launcher":"^2.1.0","karma-tap":"^4.2.0","karma-typescript":"^5.5.3","nyc":"^15.1.0","prettier":"^2.0.5","tape":"^5.3.1","ts-node":"^10.2.1","typedoc":"^0.22.4","typescript":"^4.4.2"},"repository":{"type":"git","url":"git+https://github.com/ethereumjs/ethereumjs-monorepo.git"},"homepage":"https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/trie#readme","bugs":{"url":"https://github.com/ethereumjs/ethereumjs-monorepo/issues?q=is%3Aissue+label%3A%22package%3A+trie%22"},"contributors":[{"name":"Aaron Kumavis","email":"http://aaron.kumavis.me/","url":"https://github.com/kumavis"}],"readmeFilename":"README.md","gitHead":"2dd63b91109188e5b4f5b251f47aae756f7e1841","_id":"@ethereumjs/trie@5.0.0-beta.2","_nodeVersion":"16.15.0","_npmVersion":"8.5.5","dist":{"shasum":"c7c5e545b669806e05dadc1a89e14c48dfa01dbf","size":53471,"noattachment":false,"key":"/@ethereumjs/trie/-/@ethereumjs/trie-5.0.0-beta.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/@ethereumjs/trie/download/@ethereumjs/trie-5.0.0-beta.2.tgz"},"_npmUser":{"name":"holgerd77","email":"Holger.Drewes@gmail.com"},"directories":{},"maintainers":[{"name":"acolytec3","email":""},{"name":"axic","email":""},{"name":"g11tech","email":""},{"name":"holgerd77","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/trie_5.0.0-beta.2_1658074624842_0.7428427018964039"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2022-07-17T16:17:10.566Z","publish_time":1658074625048,"_cnpm_publish_time":1658074625048},"5.0.0-beta.1":{"name":"@ethereumjs/trie","version":"5.0.0-beta.1","description":"This is an implementation of the modified merkle patricia tree as specified in Ethereum's yellow paper.","license":"MPL-2.0","author":{"name":"EthereumJS Team"},"keywords":["merkle","radix","trie","ethereum"],"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"benchmarks":"node -r ts-node/register --max-old-space-size=8024 benchmarks","profiling":"tsc --target ES5 benchmarks/random.ts && 0x benchmarks/random.js","prepublishOnly":"../../config/cli/prepublish.sh","clean":"../../config/cli/clean-package.sh","build":"../../config/cli/ts-build.sh","coverage":"../../config/cli/coverage.sh","docs:build":"typedoc --options typedoc.js","lint":"../../config/cli/lint.sh","lint:fix":"../../config/cli/lint-fix.sh","tsc":"../../config/cli/ts-compile.sh","tape":"tape -r ts-node/register","test":"npm run test:node && npm run test:browser","test:browser":"karma start karma.conf.js","test:node":"tape -r ts-node/register test/**/*.ts"},"dependencies":{"@ethereumjs/util":"8.0.0-beta.1","abstract-level":"^1.0.3","ethereum-cryptography":"^1.0.3","level":"^8.0.0","memory-level":"^1.0.0","readable-stream":"^3.6.0","rlp":"4.0.0-beta.1","semaphore-async-await":"^1.5.1"},"devDependencies":{"@types/benchmark":"^1.0.33","@types/node":"^16.11.7","@types/readable-stream":"^2.3.13","@types/tape":"^4.13.2","0x":"^4.9.1","benchmark":"^2.1.4","eslint":"^6.8.0","karma":"^6.3.2","karma-chrome-launcher":"^3.1.0","karma-firefox-launcher":"^2.1.0","karma-tap":"^4.2.0","karma-typescript":"^5.5.3","nyc":"^15.1.0","prettier":"^2.0.5","tape":"^5.3.1","ts-node":"^10.2.1","typedoc":"^0.22.4","typescript":"^4.4.2"},"repository":{"type":"git","url":"git+https://github.com/ethereumjs/ethereumjs-monorepo.git"},"homepage":"https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/trie#readme","bugs":{"url":"https://github.com/ethereumjs/ethereumjs-monorepo/issues?q=is%3Aissue+label%3A%22package%3A+trie%22"},"contributors":[{"name":"Aaron Kumavis","email":"http://aaron.kumavis.me/","url":"https://github.com/kumavis"}],"gitHead":"c5260ba9add32f57921380abb32c2c1f9dc21de6","_id":"@ethereumjs/trie@5.0.0-beta.1","_nodeVersion":"16.15.0","_npmVersion":"8.5.5","dist":{"shasum":"79d1108222b45bc3576d62583364c96626ce4175","size":52606,"noattachment":false,"key":"/@ethereumjs/trie/-/@ethereumjs/trie-5.0.0-beta.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/@ethereumjs/trie/download/@ethereumjs/trie-5.0.0-beta.1.tgz"},"_npmUser":{"name":"holgerd77","email":"Holger.Drewes@gmail.com"},"directories":{},"maintainers":[{"name":"acolytec3","email":""},{"name":"axic","email":""},{"name":"g11tech","email":""},{"name":"holgerd77","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/trie_5.0.0-beta.1_1656583102027_0.19635678941917134"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2022-06-30T16:01:18.238Z","publish_time":1656583102168,"_cnpm_publish_time":1656583102168}},"readme":"# @ethereumjs/trie\n\n[![NPM Package][trie-npm-badge]][trie-npm-link]\n[![GitHub Issues][trie-issues-badge]][trie-issues-link]\n[![Actions Status][trie-actions-badge]][trie-actions-link]\n[![Code Coverage][trie-coverage-badge]][trie-coverage-link]\n[![Discord][discord-badge]][discord-link]\n\n| Implementation of the [Modified Merkle Patricia Trie](https://ethereum.org/en/developers/docs/data-structures-and-encoding/patricia-merkle-trie/) as specified in the [Ethereum Yellow Paper](http://gavwood.com/Paper.pdf) |\n| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n\n> The modified Merkle Patricia tree (trie) provides a persistent data structure to map between arbitrary-length binary data (byte arrays). It is defined in terms of a mutable data structure to map between 256-bit binary fragments and arbitrary-length binary data. The core of the trie, and its sole requirement in terms of the protocol specification, is to provide a single 32-byte value that identifies a given set of key-value pairs.\n\n## Installation\n\nTo obtain the latest version, simply require the project using `npm`:\n\n```shell\nnpm install @ethereumjs/trie\n```\n\n## Usage\n\nThis class implements the basic [Modified Merkle Patricia Trie](https://ethereum.org/en/developers/docs/data-structures-and-encoding/patricia-merkle-trie/) in the `Trie` base class, which you can use with the `useKeyHashing` option set to `true` to create a trie which stores values under the `keccak256` hash of its keys (this is the Trie flavor which is used in Ethereum production systems).\n\nCheckpointing functionality to `Trie` through the methods `checkpoint`, `commit` and `revert`.\n\nIt is best to select the variant that is most appropriate for your unique use case.\n\n### Initialization and Basic Usage\n\n```ts\n// ./examples/basicUsage.ts\n\nimport { Trie } from '@ethereumjs/trie'\nimport { bytesToUtf8, MapDB, utf8ToBytes } from '@ethereumjs/util'\n\nasync function test() {\n  const trie = await Trie.create({ db: new MapDB() })\n  await trie.put(utf8ToBytes('test'), utf8ToBytes('one'))\n  const value = await trie.get(utf8ToBytes('test'))\n  console.log(value ? bytesToUtf8(value) : 'not found') // 'one'\n}\n\ntest()\n```\n\n### WASM Crypto Support\n\nThis library by default uses JavaScript implementations for the basic standard crypto primitives like hashing for keys. See `@ethereumjs/common` [README](https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/common) for instructions on how to replace with e.g. a more performant WASM implementation by using a shared `common` instance.\n\n### Use with Static Constructors\n\n#### Create new Trie\n\n```ts\n// ./examples/basicUsage.ts\n\nimport { Trie } from '@ethereumjs/trie'\nimport { bytesToUtf8, MapDB, utf8ToBytes } from '@ethereumjs/util'\n\nasync function test() {\n  const trie = await Trie.create({ db: new MapDB() })\n  await trie.put(utf8ToBytes('test'), utf8ToBytes('one'))\n  const value = await trie.get(utf8ToBytes('test'))\n  console.log(value ? bytesToUtf8(value) : 'not found') // 'one'\n}\n\ntest()\n```\n\nWhen the static `Trie.create` constructor is used without any options, the `trie` object is instantiated with defaults configured to match the Ethereum production spec (i.e. keys are hashed using SHA256). It also persists the state root of the tree on each write operation, ensuring that your trie remains in the state you left it when you start your application the next time.\n\n#### Create from a Proof\n\nThe trie library supports basic creation of [EIP-1186](https://eips.ethereum.org/EIPS/eip-1186) proofs as well as the instantiation of new tries from an existing proof.\n\nThe following is an example for using the `Trie.createFromProof()` static constructor. This instantiates a new partial trie based only on the branch of the trie contained in the provided proof.\n\n```ts\n// ./examples/createFromProof.ts\n\nimport { Trie } from '@ethereumjs/trie'\nimport { bytesToUtf8 } from '@ethereumjs/util'\nimport { utf8ToBytes } from 'ethereum-cryptography/utils'\n\nasync function main() {\n  const k1 = utf8ToBytes('keyOne')\n  const k2 = utf8ToBytes('keyTwo')\n\n  const someOtherTrie = new Trie({ useKeyHashing: true })\n  await someOtherTrie.put(k1, utf8ToBytes('valueOne'))\n  await someOtherTrie.put(k2, utf8ToBytes('valueTwo'))\n\n  const proof = await someOtherTrie.createProof(k1)\n  const trie = await Trie.createFromProof(proof, { useKeyHashing: true })\n  const otherProof = await someOtherTrie.createProof(k2)\n\n  // To add more proofs to the trie, use `updateFromProof`\n  await trie.updateFromProof(otherProof)\n\n  const value = await trie.get(k1)\n  console.log(bytesToUtf8(value!)) // valueOne\n  const otherValue = await trie.get(k2)\n  console.log(bytesToUtf8(otherValue!)) // valueTwo\n}\n\nmain()\n```\n\nFor further proof usage documentation see additional documentation section below.\n\n### Walking a Trie\n\nStarting with the v6 release there is a new API for walking and iterating a trie by using an async walk generator, which now enables to walk tries without altering the walk controller and also now enables to walk a sparse (not completely filled) trie.\n\nThe new walk functionality can be used like the following:\n\n```ts\n// ./examples/trieWalking.ts\n\nimport { Trie } from '@ethereumjs/trie'\nimport { utf8ToBytes } from 'ethereum-cryptography/utils'\n\nasync function main() {\n  const trie = await Trie.create()\n  await trie.put(utf8ToBytes('key'), utf8ToBytes('val'))\n  const walk = trie.walkTrieIterable(trie.root())\n\n  for await (const { node, currentKey } of walk) {\n    // ... do something\n    console.log({ node, currentKey })\n  }\n}\nmain()\n```\n\n### `Trie` Configuration Options\n\n#### Database Options\n\nThe `DB` opt in the `TrieOpts` allows you to use any database that conforms to the `DB` interface to store the trie data in. We provide several [examples](https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/trie/examples) for database implementations. The [level.js](https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/trie/examples/level.js) example is used in the `ethereumjs client` while [lmdb.js](https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/trie/examples/lmdb.js) is an alternative implementation that uses the popular [LMDB](https://en.wikipedia.org/wiki/Lightning_Memory-Mapped_Database) as its underlying database.\n\nIf no `db` option is provided, an in-memory database powered by [a Javascript Map](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map) will fulfill this role (imported from `@ethereumjs/util`, see [mapDB](https://github.com/ethereumjs/ethereumjs-monorepo/blob/master/packages/util/src/mapDB.ts) module).\n\nIf you want to use an alternative database, you can integrate your own by writing a DB wrapper that conforms to the [`DB` interface](https://github.com/ethereumjs/ethereumjs-monorepo/blob/master/packages/util/src/db.ts) (in `@ethereumjs/util`). The `DB` interface defines the methods `get`, `put`, `del`, `batch` and `copy` that a concrete implementation of the `DB` interface will need to implement.\n\n##### LevelDB\n\nAs an example, to leverage `LevelDB` for all operations then you should create a file with the [following implementation from our recipes](./recipes//level.ts) in your project. Then instantiate your DB and trie as below:\n\n```ts\n// ./examples/customLevelDB.ts#L127-L131\n\nasync function main() {\n  const trie = new Trie({ db: new LevelDB(new Level('MY_TRIE_DB_LOCATION') as any) })\n  console.log(await trie.database().db) // LevelDB { ...\n}\nmain()\n```\n\n#### Node Deletion (Pruning)\n\nBy default, the deletion of trie nodes from the underlying database does not occur in order to avoid corrupting older trie states (as of `v4.2.0`). Should you only wish to work with the latest state of a trie, you can switch to a delete behavior (for example, if you wish to save disk space) by using the `useNodePruning` constructor option (see related release notes in the changelog for further details).\n\n#### Root Persistence\n\nYou can enable persistence by setting the `useRootPersistence` option to `true` when constructing a trie through the `Trie.create` function. As such, this value is preserved when creating copies of the trie and is incapable of being modified once a trie is instantiated.\n\n```ts\n// ./examples/rootPersistence.ts\n\nimport { Trie } from '@ethereumjs/trie'\nimport { bytesToHex } from '@ethereumjs/util'\n\nasync function main() {\n  const trie = await Trie.create({\n    useRootPersistence: true,\n  })\n\n  // this logs the empty root value that has been persisted to the trie db\n  console.log(bytesToHex(trie.root())) // 0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421\n}\nmain()\n```\n\n## Proofs\n\n### Merkle Proofs\n\nThe `createProof` and `verifyProof` functions allow you to verify that a certain value does or does not exist within a Merkle Patricia Tree with a given root.\n\n#### Proof-of-Inclusion\n\nThe following code demonstrates how to construct and subsequently verify a proof that confirms the existence of the key `test` (which corresponds with the value `one`) within the given trie. This is also known as inclusion, hence the name 'Proof-of-Inclusion.'\n\n```ts\n// ./examples/proofs.ts#L12-L16\n\n// proof-of-inclusion\nawait trie.put(k1, v1)\nlet proof = await trie.createProof(k1)\nlet value = await trie.verifyProof(trie.root(), k1, proof)\nconsole.log(value ? bytesToUtf8(value) : 'not found') // 'one'\n```\n\n#### Proof-of-Exclusion\n\nThe following code demonstrates how to construct and subsequently verify a proof that confirms that the key `test3` does not exist within the given trie. This is also known as exclusion, hence the name 'Proof-of-Exclusion.'\n\n```ts\n// ./examples/proofs.ts#L18-L23\n\n// proof-of-exclusion\nawait trie.put(k1, v1)\nawait trie.put(k2, v2)\nproof = await trie.createProof(utf8ToBytes('key3'))\nvalue = await trie.verifyProof(trie.root(), utf8ToBytes('key3'), proof)\nconsole.log(value ? bytesToUtf8(value) : 'null') // null\n```\n\n#### Invalid Proofs\n\nIf `verifyProof` detects an invalid proof, it will throw an error. While contrived, the below example illustrates the resulting error condition in the event a prover tampers with the data in a merkle proof.\n\n```ts\n// ./examples/proofs.ts#L25-L34\n\n// invalid proof\nawait trie.put(k1, v1)\nawait trie.put(k2, v2)\nproof = await trie.createProof(k2)\nproof[0].reverse()\ntry {\n  const value = await trie.verifyProof(trie.root(), k2, proof) // results in error\n} catch (err) {\n  console.log(err)\n}\n```\n\n### Range Proofs\n\nYou may use the `Trie.verifyRangeProof()` function to confirm if the given leaf nodes and edge proof possess the capacity to prove that the given trie leaves' range matches the specific root (which is useful for snap sync, for instance).\n\n## Examples\n\nYou can find additional examples complete with detailed explanations [here](./examples/README.md).\n\n## Browser\n\nWith the breaking release round in Summer 2023 we have added hybrid ESM/CJS builds for all our libraries (see section below) and have eliminated many of the caveats which had previously prevented a frictionless browser usage.\n\nIt is now easily possible to run a browser build of one of the EthereumJS libraries within a modern browser using the provided ESM build. For a setup example see [./examples/browser.html](./examples/browser.html).\n\n## API\n\n### Docs\n\nGenerated TypeDoc API [Documentation](./docs/README.md)\n\n### Hybrid CJS/ESM Builds\n\nWith the breaking releases from Summer 2023 we have started to ship our libraries with both CommonJS (`cjs` folder) and ESM builds (`esm` folder), see `package.json` for the detailed setup.\n\nIf you use an ES6-style `import` in your code files from the ESM build will be used:\n\n```ts\nimport { EthereumJSClass } from '@ethereumjs/[PACKAGE_NAME]'\n```\n\nIf you use Node.js specific `require`, the CJS build will be used:\n\n```ts\nconst { EthereumJSClass } = require('@ethereumjs/[PACKAGE_NAME]')\n```\n\nUsing ESM will give you additional advantages over CJS beyond browser usage like static code analysis / Tree Shaking which CJS can not provide.\n\n### Buffer -> Uint8Array\n\nWith the breaking releases from Summer 2023 we have removed all Node.js specific `Buffer` usages from our libraries and replace these with [Uint8Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array) representations, which are available both in Node.js and the browser (`Buffer` is a subclass of `Uint8Array`).\n\nWe have converted existing Buffer conversion methods to Uint8Array conversion methods in the [@ethereumjs/util](https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/util) `bytes` module, see the respective README section for guidance.\n\n### BigInt Support\n\nWith the 5.0.0 release, [BigInt](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt) takes the place of [BN.js](https://github.com/indutny/bn.js/).\n\nBigInt is a primitive that is used to represent and manipulate primitive `bigint` values that the number primitive is incapable of representing as a result of their magnitude. `ES2020` saw the introduction of this particular feature. Note that this version update resulted in the altering of number-related API signatures and that the minimal build target is now set to `ES2020`.\n\n## Benchmarking\n\nYou will find two simple **benchmarks** in the `benchmarks` folder:\n\n- `random.ts` runs random `PUT` operations on the tree, and\n- `checkpointing.ts` runs checkpoints and commits between `PUT` operations\n\nA third benchmark using mainnet data to simulate real load is also being considered.\n\nYou may run benchmarks using:\n\n```shell\nnpm run benchmarks\n```\n\nTo run a **profiler** on the `random.ts` benchmark and generate a flamegraph with [0x](https://github.com/davidmarkclements/0x), you may use:\n\n```shell\nnpm run profiling\n```\n\n0x processes the stacks and generates a profile folder (`<pid>.0x`) containing [`flamegraph.html`](https://github.com/davidmarkclements/0x/blob/master/docs/ui.md).\n\n## Debugging\n\nThe `Trie` class features optional debug logging.. Individual debug selections can be activated on the CL with `DEBUG=ethjs,[Logger Selection]`.\n\n`ethjs` **must** be included in the `DEBUG` environment variables to enable **any** logs.\nAdditional log selections can be added with a comma separated list (no spaces). Logs with extensions can be enabled with a colon `:`, and `*` can be used to include all extensions.\n\n`DEBUG=ethjs,thislog,thatlog,otherlog,otherlog:sublog,anotherLog:* node myscript.js`\n\nThe following options are available:\n\n| Logger            | Description                                    |\n| ----------------- | ---------------------------------------------- |\n| `trie`            | minimal info logging for all trie methods      |\n| `trie:<METHOD>`   | debug logging for specific trie method         |\n| `trie:<METHOD>:*` | verbose debug logging for specific trie method |\n| `trie:*`          | verbose debug logging for all trie methods     |\n\nTo observe the logging in action at different levels:\n\nRun with minimal logging:\n\n```shell\nDEBUG=ethjs,trie npx vitest test/util/log.spec.ts\n```\n\nRun with **put** method logging:\n\n```shell\nDEBUG=ethjs,trie:PUT npx vitest test/util/log.spec.ts\n```\n\nRun with **trie** + **put**/**get**/**del** logging:\n\n```shell\nDEBUG=ethjs,trie,trie:PUT,trie:GET,trie:DEL npx vitest test/util/log.spec.ts\n```\n\nRun with **findPath** debug logging:\n\n```shell\nDEBUG=ethjs,trie:FIND_PATH npx vitest test/util/log.spec.ts\n```\n\nRun with **findPath** verbose logging:\n\n```shell\nDEBUG=ethjs,trie:FIND_PATH:* npx vitest test/util/log.spec.ts\n```\n\nRun with max logging:\n\n```shell\nDEBUG=ethjs,trie:* npx vitest test/util/log.spec.ts\n```\n\n## References\n\n- Wiki\n  - [Ethereum Trie Specification](https://github.com/ethereum/wiki/wiki/Patricia-Tree)\n- Blog posts\n  - [Ethereum's Merkle Patricia Trees - An Interactive JavaScript Tutorial](https://rockwaterweb.com/ethereum-merkle-patricia-trees-javascript-tutorial/)\n  - [Merkling in Ethereum](https://blog.ethereum.org/2015/11/15/merkling-in-ethereum/)\n  - [Understanding the Ethereum Trie](https://easythereentropy.wordpress.com/2014/06/04/understanding-the-ethereum-trie/) (This is worth reading, but mind the outdated Python libraries)\n- Videos\n  - [Trie and Patricia Trie Overview](https://www.youtube.com/watch?v=jXAHLqQthKw&t=26s)\n\n## EthereumJS\n\nSee our organizational [documentation](https://ethereumjs.readthedocs.io) for an introduction to `EthereumJS` as well as information on current standards and best practices. If you want to join for work or carry out improvements on the libraries, please review our [contribution guidelines](https://ethereumjs.readthedocs.io/en/latest/contributing.html) first.\n\n## License\n\n[MPL-2.0](<https://tldrlegal.com/license/mozilla-public-license-2.0-(mpl-2)>)\n\n[discord-badge]: https://img.shields.io/static/v1?logo=discord&label=discord&message=Join&color=blue\n[discord-link]: https://discord.gg/TNwARpR\n[trie-npm-badge]: https://img.shields.io/npm/v/@ethereumjs/trie.svg\n[trie-npm-link]: https://www.npmjs.com/package/@ethereumjs/trie\n[trie-issues-badge]: https://img.shields.io/github/issues/ethereumjs/ethereumjs-monorepo/package:%20trie?label=issues\n[trie-issues-link]: https://github.com/ethereumjs/ethereumjs-monorepo/issues?q=is%3Aopen+is%3Aissue+label%3A\"package%3A+trie\"\n[trie-actions-badge]: https://github.com/ethereumjs/ethereumjs-monorepo/workflows/Trie/badge.svg\n[trie-actions-link]: https://github.com/ethereumjs/ethereumjs-monorepo/actions?query=workflow%3A%22Trie%22\n[trie-coverage-badge]: https://codecov.io/gh/ethereumjs/ethereumjs-monorepo/branch/master/graph/badge.svg?flag=trie\n[trie-coverage-link]: https://codecov.io/gh/ethereumjs/ethereumjs-monorepo/tree/master/packages/trie\n","_attachments":{},"homepage":"https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/trie#readme","bugs":{"url":"https://github.com/ethereumjs/ethereumjs-monorepo/issues?q=is%3Aissue+label%3A%22package%3A+trie%22"},"license":"MPL-2.0"}