# @ethereumjs/verkle 中文文档

规范地址：https://npmcn.com/package/%40ethereumjs/verkle/

版本：10\.0\.0
npm 元数据更新时间：2025-04-29T09:43:14.152Z
中文译文更新时间：2026-11-13T23:40:54.067Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40ethereumjs/verkle
原文对照：https://npmcn.com/package/%40ethereumjs/verkle/?lang=original
项目主页：https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/verkle#readme
源码仓库：https://github.com/ethereumjs/ethereumjs-monorepo

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：407 kB，124 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- Node.js 要求：\>=18
- 运行依赖：5 个
- 首次发布：2024-02-08T18:39:07.315Z
- 最新版本发布：2025-04-29T09:43:13.787Z
- 近 30 天下载量：14994（2026-10-14 至 2026-11-12，npm 官方下载统计）
- 已发布版本数：6（近 12 个月 0 个）

## 中文简介

实施伊特鲁姆地区所使用藤树.

## 安装

```sh
npm install @ethereumjs/verkle
```

也可以使用：`pnpm add @ethereumjs/verkle`、`yarn add @ethereumjs/verkle`、`bun add @ethereumjs/verkle`

## README

# @ethereumjs/verkle (英语) `v10` (警告)

[![NPM Package](https://img.shields.io/npm/v/@ethereumjs/verkle.svg)](https://www.npmjs.com/package/@ethereumjs/verkle) [![GitHub Issues](https://img.shields.io/github/issues/ethereumjs/ethereumjs-monorepo/package:%20verkle?label=issues)](https://github.com/ethereumjs/ethereumjs-monorepo/issues?q=is%3Aopen+is%3Aissue+label%3A%22package%3A+verkle%22) [![Actions Status](https://github.com/ethereumjs/ethereumjs-monorepo/workflows/Verkle/badge.svg)](https://github.com/ethereumjs/ethereumjs-monorepo/actions?query=workflow%3A%22Verkle%22) [![Code Coverage](https://codecov.io/gh/ethereumjs/ethereumjs-monorepo/branch/master/graph/badge.svg?flag=verkle)](https://codecov.io/gh/ethereumjs/ethereumjs-monorepo/tree/master/packages/verkle) [![Discord](https://img.shields.io/static/v1?logo=discord&label=discord&message=Join&color=blue)](https://discord.gg/TNwARpR)

| 执行 [微声树](https://ethereum.org/en/roadmap/verkle-trees/) 二. 说明 [EIP-6800 (英语)](https://eips.ethereum.org/EIPS/eip-6800) |
| --- |

> Verkle树是一种加密数据结构,建议在Ethereum使用以优化存储和交易核实. 它们结合了默克勒·帕特里夏·特里斯(Merkle Patricia Tries)和矢量承诺树(Vector Conduction Trees)的特性,以提供更小的证明尺寸的有效数据验证. 目标是提高伊特鲁姆网络业务的可扩展性和效率.

**说明:** 这个图书馆在 **实验** 并且不应该用于生产!

## 目录

-   [安装](https://npmcn.com/package/%40ethereumjs/verkle/#readme-installation)
-   [开始](https://npmcn.com/package/%40ethereumjs/verkle/#readme-getting-started)
-   [证据](https://npmcn.com/package/%40ethereumjs/verkle/#readme-proofs)
-   [浏览器](https://npmcn.com/package/%40ethereumjs/verkle/#readme-browser)
-   [API 密码](https://npmcn.com/package/%40ethereumjs/verkle/#readme-api)
-   [调试](https://npmcn.com/package/%40ethereumjs/verkle/#readme-debugging)
-   [参考资料](https://npmcn.com/package/%40ethereumjs/verkle/#readme-references)
-   [爱丽丝](https://npmcn.com/package/%40ethereumjs/verkle/#readme-ethereumjs)
-   [许可证](https://npmcn.com/package/%40ethereumjs/verkle/#readme-license)

## 安装

要获得最新版本,只需使用 `npm`数字 :

```shell
npm install @ethereumjs/verkle
```

## 开始

### 初始化

为了初始化一棵树,我们提供一种合成构造器 `createVerkleTree` 返回一个 `VerkleTree` 适当初始化的示例 `VerkleCrypto` 用于执行由Verkle树使用的必要密码原始的软件包.

```ts
// ./examples/simple.ts#L7-L7

const tree = await createVerkleTree()
```

注:当前 `VerkleCrypto` 我们内部使用的库是 [`verkle-cryptography-wasm`](https://github.com/ethereumjs/verkle-cryptography-wasm) 这是WASM汇编 [`rust-verkle`](https://github.com/crate-crypto/rust-verkle) 包含一些 Javascript 特定包装和帮助方法的库.

如果你更愿意直接将树苗树类进行即时切除, 你可以通过已经切除的即时切除 `VerkleCrypto` 对象,然后手动初始化根节点.

```ts
// ./examples/diyVerkle.ts

import { MapDB, bytesToHex } from '@ethereumjs/util'
import { VerkleTree } from '@ethereumjs/verkle'
import * as verkle from 'micro-eth-signer/verkle'

const main = async () => {
  const tree = new VerkleTree({
    cacheSize: 0,
    db: new MapDB<Uint8Array, Uint8Array>(),
    useRootPersistence: false,
    verkleCrypto: verkle,
  })
  await tree.createRootNode()
  console.log(bytesToHex(tree.root())) // 0x0000000000000000000000000000000000000000000000000000000000000000
}

void main()

```

### 获取和设定值

使用组合值存储 `stem` 通过 `getVerkleStem` 函数由 `@ethereumjs/util`在Ethereum方面,为了检索与某一特定地址的账户有关的数据,我们将首先计算该地址的活字干(bitchle strict)`getVerkleStem(verkleCrypto, address)`),然后通过后缀来获取我们感兴趣的特定数据片段,通过后缀与数据对应的后缀来获取干子.

树上设计的目标是允许高效读取和写出相互“相近”的多个值 `get` 财务报告和审定财务报表 `put` 方法将一个干子作为第一个参数,然后是用于访问一个值的密钥的"后缀"(第32字节).

#### 获取值

当获取给定的值时 `0xc5e561a64a0f52c2d038d827293b3deab99a886d41cc0667c938946dcad853` 和后缀 `[0, 1]`,则 `get` 方法将访问存储在 `0x781f1e4238f9de8b4d0ede9932f5a4d08f15dae70000` 财务报告和审定财务报表 `0x781f1e4238f9de8b4d0ede9932f5a4d08f15dae70001`。 。 。 .

#### 设置值

当存储给定的值时 `0xc5e561a64a0f52c2d038d827293b3deab99a886d41cc0667c938946dcad853`后缀 `[0, 1]`和数值 `['test', 'test2']`,则 `put` 方法将把数值存储在 `0xc5e561a64a0f52c2d038d827293b3deab99a886d41cc0667c938946dcad85300` 财务报告和审定财务报表 `0xc5e561a64a0f52c2d038d827293b3deab99a886d41cc0667c938946dcad85301`。 。 。 .

完整的例子见下文.

```ts
// ./examples/simple.ts

import { bytesToUtf8, createAddressFromString, getVerkleStem, utf8ToBytes } from '@ethereumjs/util'
import { createVerkleTree } from '@ethereumjs/verkle'

async function test() {
  const addrHex = '0x781f1e4238f9de8b4d0ede9932f5a4d08f15dae7'
  const address = createAddressFromString(addrHex)
  const tree = await createVerkleTree()
  const stem = getVerkleStem(tree['verkleCrypto'], address)
  await tree.put(stem, [0], [utf8ToBytes('test')])
  const value = await tree.get(stem, [0, 1])
  console.log(value[0] ? bytesToUtf8(value[0]) : 'not found') // 'test'
  console.log(value[1] ? bytesToUtf8(value[1]) : 'not found') // 'not found'
}

void test()
```

## 证据

### Verkle 证明

EthereumJS Verkle软件包仍在开发中,verkle验证生成尚未被支持.

## 浏览器

我们为所有图书馆提供混合的无害环境管理/CJS。 随着从2025年春季开始的v10断开发行回合,所有的库都是默认的"纯-JS",我们已经取消了所有硬接通的WASM代码. 此外,我们还大幅度地降低了捆绑大小,减少了依赖性的数量,并切除了Node.js特定原始物的所有用法(如Node.js事件发射器).

在现代浏览器内使用所提供的无害环境管理架构运行一个EthereumJS图书馆的浏览器是很容易的。 关于设置的例子,见 [./例/浏览器.html](https://npmcn.com/package/%40ethereumjs/verkle/examples/browser.html)。 。 。 .

## API 密码

### 文档

生成类型Doc API [文档](https://npmcn.com/package/%40ethereumjs/verkle/docs/README.md)

### 混合 CJS/ESM 构建

Verkle包与共同JS和无害环境管理同时被运出.

若您使用无害环境管理 `import` 在代码中,导入如下:

```ts
import { createVerkleTree } from '@ethereumjs/verkle'
```

如果您使用 Node.js 特定 `require`,CJS建筑将使用:

```ts
const { createVerkleTree } = require('@ethereumjs/verkle')
```

## 调试

此库使用 [调试](https://github.com/visionmedia/debug) 调试工具包 .

这个 `Verkle` 类特性可选调试日志。 单个调试选择可在 CL 上激活 `DEBUG=ethjs,[Logger Selection]`。 。 。 .

有以下备选方案:

| 锁定器 | 说明 |
| --- | --- |
| `verkle:#` | 已发生核心活字操作 |
| `verkle:#:put` | 已执行 verkle 操作 |
| `verkle:#:get` | 已发生 verkle 操作 |
| `verkle:#:del` | 已发生 verkle del 操作 |
| `verkle:#:find_path` | 正在搜索一个节点 |

观察不同级别的伐木情况:

最小记录运行 :

```shell
DEBUG=ethjs,verkle npx vitest test/verkle.spec.ts
```

运行 **设置** 方法记录 :

```shell
DEBUG=ethjs,verkle:put npx vitest test/verkle.spec.ts
```

运行 **响起** + 键 **设置**编号 :**起来**编号 :**三角形** 日志 :

```shell
DEBUG=ethjs,verkle,verkle:put,verkle:get,verkle:del npx vitest test/verkle.spec.ts
```

使用最大记录运行 :

```shell
DEBUG=ethjs,verkle:* npx vitest test/verkle.spec.ts
```

`ethjs` **必须** 列入 `DEBUG` 启用的环境变量 **任意** 木头. 附加的日志选择可以用逗号分隔列表来添加(没有空格). 带有扩展名的日志可以用冒号启用 `:`,以及 `*` 可用于包含所有扩展.

`DEBUG=ethjs,verkle:#:put,verkle:#:find_path:* npx vitest test/interop.spec.ts`

## 参考资料

-   维基
    -   [Ver树概览](https://ethereum.org/en/roadmap/verkle-trees/)
    -   [韦克勒树一般资源](https://verkle.info/)
    -   [伊特鲁姆基金会](https://ethereum.org/en/roadmap/verkle-trees)

## 爱丽丝

看我们的组织 [文档](https://ethereumjs.readthedocs.io/) 介绍 `EthereumJS` 以及关于现行标准和最佳做法的资料。 如果你想参加工作或改进图书馆,请审查我们 [捐款准则](https://ethereumjs.readthedocs.io/en/latest/contributing.html) 先说.

## 许可证

[麻省理工学院](https://opensource.org/licenses/MIT)

## 常见问题

### @ethereumjs/verkle 是什么？

实施伊特鲁姆地区所使用藤树\.

### 如何安装 @ethereumjs/verkle？

在项目目录运行 npm install @ethereumjs/verkle，或使用 pnpm add / yarn add / bun add。

### @ethereumjs/verkle 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @ethereumjs/verkle 支持 ESM 还是 CommonJS？

同时提供 ES Module 与 CommonJS 入口，import 和 require\(\) 都可以使用，打包工具会自动选择合适的版本。

### @ethereumjs/verkle 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js \>=18。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @ethereumjs/verkle 可以商用吗？

@ethereumjs/verkle 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @ethereumjs/verkle 的下载量有多少？

根据 npm 官方下载统计，@ethereumjs/verkle 在 2026/10/14 – 2026/11/12 这 30 天内被下载 14,994 次，日均约 500 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @ethereumjs/verkle 还在维护吗？

最新版本 10\.0\.0 发布于 2025/04/29（1\.5 年前）；至今共发布 6 个版本，其中过去 12 个月发布了 0 个；首次发布于 2024/02/09。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

