{"_id":"@ethereumjs/verkle","_rev":"4642596","name":"@ethereumjs/verkle","description":"Implementation of verkle trees as used in Ethereum.","dist-tags":{"alpha":"0.2.0-alpha.1","latest":"10.0.0","rc":"10.0.0-dev-rc.1"},"maintainers":[{"name":"acolytec3","email":""},{"name":"axic","email":""},{"name":"g11tech","email":""},{"name":"holgerd77","email":""}],"time":{"modified":"2026-04-10T20:04:19.000Z","created":"2024-02-08T18:39:07.711Z","10.0.0":"2025-04-29T09:43:13.787Z","10.0.0-dev-rc.1":"2025-03-24T17:29:27.066Z","0.2.0-alpha.1":"2024-10-17T09:44:43.593Z","0.1.0":"2024-08-15T11:16:21.432Z","0.0.2":"2024-03-18T12:41:40.131Z","0.0.1":"2024-02-08T18:39:07.711Z"},"users":{},"author":{"name":"EthereumJS Team"},"repository":{"type":"git","url":"git+https://github.com/ethereumjs/ethereumjs-monorepo.git"},"versions":{"10.0.0":{"name":"@ethereumjs/verkle","version":"10.0.0","description":"Implementation of verkle trees as used in Ethereum.","keywords":["verkle","tree","trie","ethereum"],"homepage":"https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/verkle#readme","bugs":{"url":"https://github.com/ethereumjs/ethereumjs-monorepo/issues?q=is%3Aissue+label%3A%22package%3A+verkle%22"},"repository":{"type":"git","url":"git+https://github.com/ethereumjs/ethereumjs-monorepo.git"},"license":"MIT","author":{"name":"EthereumJS Team"},"contributors":[{"name":"Gabriel Rocheleau","url":"https://github.com/gabrocheleau"}],"type":"module","sideEffects":false,"main":"dist/cjs/index.js","module":"dist/esm/index.js","exports":{".":{"import":{"typescript":"./src/index.ts","default":"./dist/esm/index.js"},"require":"./dist/cjs/index.js"}},"scripts":{"biome":"npx @biomejs/biome check","biome:fix":"npx @biomejs/biome check --write","build":"../../config/cli/ts-build.sh","clean":"../../config/cli/clean-package.sh","coverage":"DEBUG=ethjs npx vitest run -c ../../config/vitest.config.coverage.mts","coverage:istanbul":"DEBUG=ethjs npx vitest run -c ../../config/vitest.config.coverage.istanbul.mts","docs:build":"typedoc --options typedoc.mjs","examples":"tsx ../../scripts/examples-runner.ts -- verkle","examples:build":"npx embedme README.md","lint":"npm run biome && eslint  --config ./eslint.config.mjs .","lint:fix":"npm run biome:fix && eslint  --fix --config ./eslint.config.mjs .","prepublishOnly":"../../config/cli/prepublish.sh","sc":"npm run spellcheck","spellcheck":"npm run spellcheck:ts && npm run spellcheck:md","spellcheck:ts":"npx cspell --gitignore -c ../../config/cspell-ts.json \"./**/*.ts\" --cache --show-suggestions --show-context","spellcheck:md":"npx cspell --gitignore -c ../../config/cspell-md.json \"**.md\" --cache --show-suggestions --show-context","test":"npm run test:node","test:node":"npx vitest run -c ../../config/vitest.config.mts","test:browser":"npx vitest run --config=../../config/vitest.config.browser.mts","tsc":"../../config/cli/ts-compile.sh"},"dependencies":{"@ethereumjs/rlp":"^10.0.0","@ethereumjs/util":"^10.0.0","debug":"^4.4.0","lru-cache":"11.0.2","micro-eth-signer":"0.14.0"},"engines":{"node":">=18"},"_id":"@ethereumjs/verkle@10.0.0","gitHead":"9e461f54312bf20c710b43ab73f7d3ad753f8765","types":"./dist/cjs/index.d.ts","_nodeVersion":"23.10.0","_npmVersion":"11.2.0","dist":{"shasum":"2c41e302d277e3ed0786d76ddf8b9e5b2c16de8a","size":78301,"noattachment":false,"key":"/@ethereumjs/verkle/-/@ethereumjs/verkle-10.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/@ethereumjs/verkle/download/@ethereumjs/verkle-10.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-npm-production","tmp":"tmp/verkle_10.0.0_1745919793612_0.8188010238031249"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2025-04-29T09:43:13.787Z","publish_time":1745919793787,"_source_registry_name":"default","_cnpm_publish_time":1745919793787},"10.0.0-dev-rc.1":{"name":"@ethereumjs/verkle","version":"10.0.0-dev-rc.1","description":"Implementation of verkle trees as used in Ethereum.","keywords":["verkle","tree","trie","ethereum"],"homepage":"https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/verkle#readme","bugs":{"url":"https://github.com/ethereumjs/ethereumjs-monorepo/issues?q=is%3Aissue+label%3A%22package%3A+verkle%22"},"repository":{"type":"git","url":"git+https://github.com/ethereumjs/ethereumjs-monorepo.git"},"license":"MIT","author":{"name":"EthereumJS Team"},"contributors":[{"name":"Gabriel Rocheleau","url":"https://github.com/gabrocheleau"}],"type":"module","sideEffects":false,"main":"dist/cjs/index.js","module":"dist/esm/index.js","exports":{".":{"import":"./dist/esm/index.js","require":"./dist/cjs/index.js"}},"scripts":{"biome":"npx @biomejs/biome check","biome:fix":"npx @biomejs/biome check --write","build":"../../config/cli/ts-build.sh","clean":"../../config/cli/clean-package.sh","coverage":"DEBUG=ethjs npx vitest run -c ../../config/vitest.config.coverage.mts","coverage:istanbul":"DEBUG=ethjs npx vitest run -c ../../config/vitest.config.coverage.istanbul.mts","docs:build":"typedoc --options typedoc.cjs","examples":"tsx ../../scripts/examples-runner.ts -- verkle","examples:build":"npx embedme README.md","lint":"npm run biome && eslint  --config ./eslint.config.mjs .","lint:fix":"npm run biome:fix && eslint  --fix --config ./eslint.config.mjs .","prepublishOnly":"../../config/cli/prepublish.sh","test":"npm run test:node","test:node":"npx vitest run","test:browser":"npx vitest run --config=../../config/vitest.config.browser.mts","tsc":"../../config/cli/ts-compile.sh"},"dependencies":{"@ethereumjs/rlp":"^10.0.0-rc.1","@ethereumjs/util":"^10.0.0-rc.1","debug":"^4.4.0","lru-cache":"11.0.2","micro-eth-signer":"0.14.0"},"engines":{"node":">=18"},"_id":"@ethereumjs/verkle@10.0.0-dev-rc.1","readmeFilename":"README.md","gitHead":"5672c104a2f236d1459533facaf2741dcda3ee14","types":"./dist/cjs/index.d.ts","_nodeVersion":"23.10.0","_npmVersion":"10.9.2","dist":{"shasum":"5bb08ad73805c8c5e01e843a1a2e8010cc572e1a","size":77241,"noattachment":false,"key":"/@ethereumjs/verkle/-/@ethereumjs/verkle-10.0.0-dev-rc.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/@ethereumjs/verkle/download/@ethereumjs/verkle-10.0.0-dev-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-npm-production","tmp":"tmp/verkle_10.0.0-dev-rc.1_1742837366891_0.1538071512049881"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2025-03-24T17:29:27.066Z","publish_time":1742837367066,"_source_registry_name":"default","_cnpm_publish_time":1742837367066},"0.2.0-alpha.1":{"name":"@ethereumjs/verkle","version":"0.2.0-alpha.1","description":"Implementation of verkle trees as used in Ethereum.","keywords":["verkle","tree","trie","ethereum"],"homepage":"https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/verkle#readme","bugs":{"url":"https://github.com/ethereumjs/ethereumjs-monorepo/issues?q=is%3Aissue+label%3A%22package%3A+verkle%22"},"repository":{"type":"git","url":"git+https://github.com/ethereumjs/ethereumjs-monorepo.git"},"license":"MIT","author":{"name":"EthereumJS Team"},"contributors":[{"name":"Gabriel Rocheleau","url":"https://github.com/gabrocheleau"}],"type":"module","sideEffects":false,"main":"dist/cjs/index.js","module":"dist/esm/index.js","exports":{".":{"import":"./dist/esm/index.js","require":"./dist/cjs/index.js"}},"scripts":{"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","lint":"../../config/cli/lint.sh","lint:diff":"../../config/cli/lint-diff.sh","lint:fix":"../../config/cli/lint-fix.sh","prepublishOnly":"../../config/cli/prepublish.sh","test":"npm run test:node","test:node":"npx vitest run","test:browser":"npx vitest run --config=../../config/vitest.config.browser.mts","tsc":"../../config/cli/ts-compile.sh"},"dependencies":{"debug":"^4.3.4","lru-cache":"10.1.0","verkle-cryptography-wasm":"^0.4.8","@ethereumjs/rlp":"^6.0.0-alpha.1","@ethereumjs/util":"^10.0.0-alpha.1"},"engines":{"node":">=18"},"_id":"@ethereumjs/verkle@0.2.0-alpha.1","readmeFilename":"README.md","gitHead":"fb36fc6da231ac7ff9d8dc4f03b3020a3f990cbd","types":"./dist/cjs/index.d.ts","_nodeVersion":"20.12.2","_npmVersion":"10.5.0","dist":{"shasum":"b48e826dc06b0cf0b800364698a83d630fb2225c","size":73646,"noattachment":false,"key":"/@ethereumjs/verkle/-/@ethereumjs/verkle-0.2.0-alpha.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/@ethereumjs/verkle/download/@ethereumjs/verkle-0.2.0-alpha.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/verkle_0.2.0-alpha.1_1729158283329_0.9328800607195666"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2024-10-17T09:44:43.593Z","publish_time":1729158283593,"_source_registry_name":"default","_cnpm_publish_time":1729158283593},"0.1.0":{"name":"@ethereumjs/verkle","version":"0.1.0","description":"Implementation of verkle trees as used in Ethereum.","keywords":["verkle","tree","trie","ethereum"],"homepage":"https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/verkle#readme","bugs":{"url":"https://github.com/ethereumjs/ethereumjs-monorepo/issues?q=is%3Aissue+label%3A%22package%3A+verkle%22"},"repository":{"type":"git","url":"git+https://github.com/ethereumjs/ethereumjs-monorepo.git"},"license":"MIT","author":{"name":"EthereumJS Team"},"contributors":[{"name":"Gabriel Rocheleau","url":"https://github.com/gabrocheleau"}],"main":"dist/cjs/index.js","type":"commonjs","module":"dist/esm/index.js","exports":{".":{"import":"./dist/esm/index.js","require":"./dist/cjs/index.js"}},"scripts":{"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","lint":"../../config/cli/lint.sh","lint:diff":"../../config/cli/lint-diff.sh","lint:fix":"../../config/cli/lint-fix.sh","prepublishOnly":"../../config/cli/prepublish.sh","test":"npm run test:node","test:node":"npx vitest run","test:browser":"npx vitest run --config=../../config/vitest.config.browser.mts","tsc":"../../config/cli/ts-compile.sh"},"dependencies":{"debug":"^4.3.4","lru-cache":"10.1.0","verkle-cryptography-wasm":"^0.4.5","@ethereumjs/block":"^5.3.0","@ethereumjs/rlp":"^5.0.2","@ethereumjs/util":"^9.1.0"},"engines":{"node":">=18"},"_id":"@ethereumjs/verkle@0.1.0","gitHead":"ea5ad3a5bc22b76b70b86780df1815175c86ffa6","types":"./dist/cjs/index.d.ts","_nodeVersion":"20.12.2","_npmVersion":"10.5.0","dist":{"shasum":"48d06a81468d6f57279e526a04ab30a7e766b8d4","size":73176,"noattachment":false,"key":"/@ethereumjs/verkle/-/@ethereumjs/verkle-0.1.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/@ethereumjs/verkle/download/@ethereumjs/verkle-0.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/verkle_0.1.0_1723720581101_0.47479503163866776"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2024-08-15T11:16:21.432Z","publish_time":1723720581432,"_source_registry_name":"default","_cnpm_publish_time":1723720581432},"0.0.2":{"name":"@ethereumjs/verkle","version":"0.0.2","description":"Implementation of verkle trees as used in Ethereum.","keywords":["verkle","tree","trie","ethereum"],"homepage":"https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/verkle#readme","bugs":{"url":"https://github.com/ethereumjs/ethereumjs-monorepo/issues?q=is%3Aissue+label%3A%22package%3A+verkle%22"},"repository":{"type":"git","url":"git+https://github.com/ethereumjs/ethereumjs-monorepo.git"},"license":"MIT","author":{"name":"EthereumJS Team"},"contributors":[{"name":"Gabriel Rocheleau","url":"https://github.com/gabrocheleau"}],"main":"dist/cjs/index.js","type":"commonjs","module":"dist/esm/index.js","exports":{".":{"import":"./dist/esm/index.js","require":"./dist/cjs/index.js"}},"scripts":{"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","lint":"../../config/cli/lint.sh","lint:diff":"../../config/cli/lint-diff.sh","lint:fix":"../../config/cli/lint-fix.sh","prepublishOnly":"../../config/cli/prepublish.sh","test":"npm run test:node","test:node":"npx vitest run","tsc":"../../config/cli/ts-compile.sh"},"dependencies":{"@ethereumjs/rlp":"^5.0.2","@ethereumjs/util":"^9.0.3","lru-cache":"^10.0.0","rust-verkle-wasm":"^0.0.1"},"engines":{"node":">=18"},"_id":"@ethereumjs/verkle@0.0.2","gitHead":"dfe53ccafbcdccc13b8a05e2a7a75c93d9f108f7","types":"./dist/cjs/index.d.ts","_nodeVersion":"18.18.0","_npmVersion":"9.8.1","dist":{"shasum":"1c3c3d23e859e15b61c3d60a125962e761f3e135","size":70980,"noattachment":false,"key":"/@ethereumjs/verkle/-/@ethereumjs/verkle-0.0.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/@ethereumjs/verkle/download/@ethereumjs/verkle-0.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/verkle_0.0.2_1710765699951_0.7746777949990808"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2024-03-18T12:41:40.131Z","publish_time":1710765700131,"_source_registry_name":"default","_cnpm_publish_time":1710765700131},"0.0.1":{"name":"@ethereumjs/verkle","version":"0.0.1","description":"Implementation of verkle trees as used in Ethereum.","keywords":["verkle","tree","trie","ethereum"],"homepage":"https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/verkle#readme","bugs":{"url":"https://github.com/ethereumjs/ethereumjs-monorepo/issues?q=is%3Aissue+label%3A%22package%3A+verkle%22"},"repository":{"type":"git","url":"git+https://github.com/ethereumjs/ethereumjs-monorepo.git"},"license":"MIT","author":{"name":"EthereumJS Team"},"contributors":[{"name":"Gabriel Rocheleau","url":"https://github.com/gabrocheleau"}],"main":"dist/cjs/index.js","type":"commonjs","module":"dist/esm/index.js","exports":{".":{"import":"./dist/esm/index.js","require":"./dist/cjs/index.js"}},"scripts":{"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","lint":"../../config/cli/lint.sh","lint:diff":"../../config/cli/lint-diff.sh","lint:fix":"../../config/cli/lint-fix.sh","prepublishOnly":"../../config/cli/prepublish.sh","test":"npm run test:node","test:node":"npx vitest run","tsc":"../../config/cli/ts-compile.sh"},"dependencies":{"@ethereumjs/rlp":"5.0.2","@ethereumjs/util":"9.0.2","lru-cache":"^10.0.0","rust-verkle-wasm":"^0.0.1"},"engines":{"node":">=18"},"_id":"@ethereumjs/verkle@0.0.1","gitHead":"ff43fc1908f960429fa55fb5e9eb69ad0ebd37fb","types":"./dist/cjs/index.d.ts","_nodeVersion":"18.18.0","_npmVersion":"9.8.1","dist":{"shasum":"72bb67ee3c3f2587be04ed3960cc9838d22dcaf7","size":70963,"noattachment":false,"key":"/@ethereumjs/verkle/-/@ethereumjs/verkle-0.0.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/@ethereumjs/verkle/download/@ethereumjs/verkle-0.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/verkle_0.0.1_1707417547421_0.3579259439366249"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2024-02-08T18:39:07.711Z","publish_time":1707417547711,"_source_registry_name":"default","_cnpm_publish_time":1707417547711}},"readme":"# @ethereumjs/verkle `v10` (EXPERIMENTAL)\n\n[![NPM Package][verkle-npm-badge]][verkle-npm-link]\n[![GitHub Issues][verkle-issues-badge]][verkle-issues-link]\n[![Actions Status][verkle-actions-badge]][verkle-actions-link]\n[![Code Coverage][verkle-coverage-badge]][verkle-coverage-link]\n[![Discord][discord-badge]][discord-link]\n\n| Implementation of [Verkle Trees](https://ethereum.org/en/roadmap/verkle-trees/) as specified in [EIP-6800](https://eips.ethereum.org/EIPS/eip-6800) |\n| --------------------------------------------------------------------------------------------------------------------------------------------------- |\n\n> Verkle trees are a cryptographic data structure proposed for use in Ethereum to optimize storage and transaction verification. They combine features of Merkle Patricia Tries and Vector Commitment Trees to offer efficient data verification with smaller proof sizes. The goal is to improve scalability and efficiency in Ethereum's network operations.\n\n**Note:** This library is in an **experimental** stage and should not be used in production!\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Getting Started](#getting-started)\n- [Proofs](#proofs)\n- [Browser](#browser)\n- [API](#api)\n- [Debugging](#debugging)\n- [References](#references)\n- [EthereumJS](#ethereumjs)\n- [License](#license)\n\n## Installation\n\nTo obtain the latest version, simply require the project using `npm`:\n\n```shell\nnpm install @ethereumjs/verkle\n```\n\n## Getting Started\n\n### Initialization\n\nTo initialize a verkle tree, we provide an async constructor `createVerkleTree` which returns a `VerkleTree` instance that is properly initialized with the required `VerkleCrypto` package that implements the necessary cryptographic primitives used by Verkle trees.\n\n```ts\n// ./examples/simple.ts#L7-L7\n\nconst tree = await createVerkleTree()\n```\n\nNote, the current `VerkleCrypto` library we use internally is [`verkle-cryptography-wasm`](https://github.com/ethereumjs/verkle-cryptography-wasm) which is a WASM compilation of the [`rust-verkle`](https://github.com/crate-crypto/rust-verkle) library with some Javascript specific wrappers and helper methods.\n\nIf you prefer to instantiate the verkle tree class directly, you can do so by passing in an already instantiated `VerkleCrypto` object and then initializing the root node manually.\n\n```ts\n// ./examples/diyVerkle.ts\n\nimport { MapDB, bytesToHex } from '@ethereumjs/util'\nimport { VerkleTree } from '@ethereumjs/verkle'\nimport * as verkle from 'micro-eth-signer/verkle'\n\nconst main = async () => {\n  const tree = new VerkleTree({\n    cacheSize: 0,\n    db: new MapDB<Uint8Array, Uint8Array>(),\n    useRootPersistence: false,\n    verkleCrypto: verkle,\n  })\n  await tree.createRootNode()\n  console.log(bytesToHex(tree.root())) // 0x0000000000000000000000000000000000000000000000000000000000000000\n}\n\nvoid main()\n\n```\n\n### Getting and Putting Values\n\nValues are stored using a combination of a `stem` obtained through the `getVerkleStem` function exposed by `@ethereumjs/util`. In the context of Ethereum, to retrieve the data associated with an account at a particular address, we would first compute the verkle stem of that address (`getVerkleStem(verkleCrypto, address)`), and then get the particular pieces of data we're interested in by suffixing the stem with the suffixes corresponding to that data.\n\nFollowing the design goal of verkle trees of allowing efficient reads and writes of multiple values that are \"close\" to each other, the `get` and `put` methods take a stem as a first argument and then an array of \"suffixes\" (the 32nd byte) of the key used to access a value.\n\n#### Getting values\n\nWhen retrieving values given a stem `0xc5e561a64a0f52c2d038d827293b3deab99a886d41cc0667c938946dcad853` and suffixes `[0, 1]`, the `get` method would access the values stored at `0x781f1e4238f9de8b4d0ede9932f5a4d08f15dae70000` and `0x781f1e4238f9de8b4d0ede9932f5a4d08f15dae70001`.\n\n#### Putting values\n\nWhen storing values given a stem `0xc5e561a64a0f52c2d038d827293b3deab99a886d41cc0667c938946dcad853`, suffixes `[0, 1]`, and values `['test', 'test2']`, the `put` method would store the values at `0xc5e561a64a0f52c2d038d827293b3deab99a886d41cc0667c938946dcad85300` and `0xc5e561a64a0f52c2d038d827293b3deab99a886d41cc0667c938946dcad85301`.\n\nSee below for a complete example.\n\n```ts\n// ./examples/simple.ts\n\nimport { bytesToUtf8, createAddressFromString, getVerkleStem, utf8ToBytes } from '@ethereumjs/util'\nimport { createVerkleTree } from '@ethereumjs/verkle'\n\nasync function test() {\n  const addrHex = '0x781f1e4238f9de8b4d0ede9932f5a4d08f15dae7'\n  const address = createAddressFromString(addrHex)\n  const tree = await createVerkleTree()\n  const stem = getVerkleStem(tree['verkleCrypto'], address)\n  await tree.put(stem, [0], [utf8ToBytes('test')])\n  const value = await tree.get(stem, [0, 1])\n  console.log(value[0] ? bytesToUtf8(value[0]) : 'not found') // 'test'\n  console.log(value[1] ? bytesToUtf8(value[1]) : 'not found') // 'not found'\n}\n\nvoid test()\n```\n\n## Proofs\n\n### Verkle Proofs\n\nThe EthereumJS Verkle package is still in development and verkle proof generation is not yet supported.\n\n## Browser\n\nWe provide hybrid ESM/CJS builds for all our libraries. With the v10 breaking release round from Spring 2025, all libraries are \"pure-JS\" by default and we have eliminated all hard-wired WASM code. Additionally we have substantially lowered the bundle sizes, reduced the number of dependencies, and cut out all usages of Node.js-specific primitives (like the Node.js event emitter).\n\nIt is 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\nThe verkle package is shipped with both CommonJS and ESM builds.\n\nIf you use an ESM `import` in your code, import as below:\n\n```ts\nimport { createVerkleTree } from '@ethereumjs/verkle'\n```\n\nIf you use Node.js-specific `require`, the CJS build will be used:\n\n```ts\nconst { createVerkleTree } = require('@ethereumjs/verkle')\n```\n\n## Debugging\n\nThis library uses the [debug](https://github.com/visionmedia/debug) debugging utility package.\n\nThe `Verkle` class features optional debug logging. Individual debug selections can be activated on the CL with `DEBUG=ethjs,[Logger Selection]`.\n\nThe following options are available:\n\n| Logger               | Description                          |\n| -------------------- | ------------------------------------ |\n| `verkle:#`           | a core verkle operation has occurred |\n| `verkle:#:put`       | a verkle put operation has occurred  |\n| `verkle:#:get`       | a verkle get operation has occurred  |\n| `verkle:#:del`       | a verkle del operation has occurred  |\n| `verkle:#:find_path` | a node is being searched for         |\n\nTo observe the logging in action at different levels:\n\nRun with minimal logging:\n\n```shell\nDEBUG=ethjs,verkle npx vitest test/verkle.spec.ts\n```\n\nRun with **put** method logging:\n\n```shell\nDEBUG=ethjs,verkle:put npx vitest test/verkle.spec.ts\n```\n\nRun with **verkle** + **put**/**get**/**del** logging:\n\n```shell\nDEBUG=ethjs,verkle,verkle:put,verkle:get,verkle:del npx vitest test/verkle.spec.ts\n```\n\nRun with max logging:\n\n```shell\nDEBUG=ethjs,verkle:* npx vitest test/verkle.spec.ts\n```\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,verkle:#:put,verkle:#:find_path:* npx vitest test/interop.spec.ts`\n\n## References\n\n- Wiki\n  - [Overview of verkle trees](https://ethereum.org/en/roadmap/verkle-trees/)\n  - [Verkle trees general resource](https://verkle.info/)\n  - [Ethereum Foundation Verkle Tree Roadmap](https://ethereum.org/en/roadmap/verkle-trees)\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[MIT](https://opensource.org/licenses/MIT)\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[verkle-npm-badge]: https://img.shields.io/npm/v/@ethereumjs/verkle.svg\n[verkle-npm-link]: https://www.npmjs.com/package/@ethereumjs/verkle\n[verkle-issues-badge]: https://img.shields.io/github/issues/ethereumjs/ethereumjs-monorepo/package:%20verkle?label=issues\n[verkle-issues-link]: https://github.com/ethereumjs/ethereumjs-monorepo/issues?q=is%3Aopen+is%3Aissue+label%3A\"package%3A+verkle\"\n[verkle-actions-badge]: https://github.com/ethereumjs/ethereumjs-monorepo/workflows/Verkle/badge.svg\n[verkle-actions-link]: https://github.com/ethereumjs/ethereumjs-monorepo/actions?query=workflow%3A%22Verkle%22\n[verkle-coverage-badge]: https://codecov.io/gh/ethereumjs/ethereumjs-monorepo/branch/master/graph/badge.svg?flag=verkle\n[verkle-coverage-link]: https://codecov.io/gh/ethereumjs/ethereumjs-monorepo/tree/master/packages/verkle\n","_attachments":{},"homepage":"https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/verkle#readme","bugs":{"url":"https://github.com/ethereumjs/ethereumjs-monorepo/issues?q=is%3Aissue+label%3A%22package%3A+verkle%22"},"license":"MIT"}