# @ethereumjs/binarytree 中文文档

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

版本：10\.1\.3
npm 元数据更新时间：2026-08-21T12:53:03.668Z
中文译文更新时间：2026-11-13T23:39:44.309Z
软件包许可：MIT

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

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

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

- 包体积（解压后）：385 kB，124 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- Node.js 要求：\>=20
- 运行依赖：5 个
- 首次发布：2025-03-24T17:35:30.868Z
- 最新版本发布：2026-08-21T12:53:03.509Z
- 近 30 天下载量：186896（2026-10-14 至 2026-11-12，npm 官方下载统计）
- 已发布版本数：8（近 12 个月 5 个）

## 中文简介

实施Ethereum使用的二进制树.

## 安装

```sh
npm install @ethereumjs/binarytree
```

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

## README

# @ethereumjs/ 二元树 `v10` (警告)

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

| 实施二进制树 [EIP-7864 (英语)](https://eips.ethereum.org/EIPS/eip-7864) |
| --- |

二进制树(英語:Binary Trees)是一款为埃特鲁姆州存储提出的新式密码数据结构,其证明尺寸比默克勒·帕特里夏·特里斯要小. 密钥映射到 a **树干** (头31字节)和 **指数** (最后字节)在干节点内.

**这个图书馆是实验性的** ——API不稳定,不得用于生产.

可运行的示例 [`examples/`](https://npmcn.com/package/%40ethereumjs/binarytree/examples/)。 。 。 .

## 目录

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

## 安装

```shell
npm install @ethereumjs/binarytree
```

## 开始

使用 `createBinaryTree()` {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}把一棵树当瞬间 默认为内存 `MapDB` 已使用; 通过 `db` 坚持不懈.

```ts
// ./examples/basicUsage.ts

import { createBinaryTree } from '@ethereumjs/binarytree'
import { bytesToHex, hexToBytes } from '@ethereumjs/util'

const main = async () => {
  const tree = await createBinaryTree()

  const key = hexToBytes(`0x${'00'.repeat(32)}`)
  const value = hexToBytes(`0x${'01'.repeat(32)}`)
  const stem = key.slice(0, 31)
  const index = key[31]

  await tree.put(stem, [index], [value])
  const [retrieved] = await tree.get(stem, [index])

  console.log(`Root: ${bytesToHex(tree.root())}`)
  console.log(`Value match: ${bytesToHex(retrieved!)}`)
}

void main()
```

`put(stem, indices, values)` 接受一个干线内并行的槽指数和32字节值. `get(stem, indices)` 返回相同顺序的值.

选项( E)`BinaryTreeOpts`: `db`, (中文(简体) ), `useRootPersistence`, (中文(简体) ), `cacheSize`, (中文(简体) ), `hashFunction` (默认为 BLAKE3 ).

## 证据

创建包含证明 `tree.createBinaryProof(key)`,以 `verifyBinaryProof()`,并用 `binaryTreeFromProof()`数字 :

```ts
// ./examples/binaryProof.ts

import { binaryTreeFromProof, createBinaryTree, verifyBinaryProof } from '@ethereumjs/binarytree'
import { bytesToHex, hexToBytes } from '@ethereumjs/util'
import { blake3 } from '@noble/hashes/blake3.js'

const main = async () => {
  const tree = await createBinaryTree()

  const key = hexToBytes(`0x${'00'.repeat(31)}01`)
  const hashedKey = blake3(key)
  const value = hexToBytes(`0x${'02'.repeat(32)}`)
  const stem = hashedKey.slice(0, 31)
  const index = hashedKey[31]

  await tree.put(stem, [index], [value])

  const proof = await tree.createBinaryProof(hashedKey)
  const verified = await verifyBinaryProof(tree.root(), hashedKey, proof)
  const sparse = await binaryTreeFromProof(proof)

  console.log(`Proof length: ${proof.length} nodes`)
  console.log(`Verified value: ${bytesToHex(verified!)}`)
  console.log(`Sparse tree root match: ${bytesToHex(sparse.root()) === bytesToHex(tree.root())}`)
}

void main()
```

典型的证明键 `blake3(address || treeIndex || subIndex)` 用于Verkle/binary-tree状态层。 不存在返回的有效证明 `null` 编号 : `undefined` 从 `verifyBinaryProof()`。 。 。 .

## 浏览器

提供了混合无害环境管理/CJS大楼。 浏览器设置见 [./例/浏览器.html](https://npmcn.com/package/%40ethereumjs/binarytree/examples/browser.html) (建造包,然后 `npx vite` 从软件包根开始).

## API 密码

生成类型文件 [文档](https://npmcn.com/package/%40ethereumjs/binarytree/docs/README.md)。 。 。 .

主要出口: `BinaryTree`, (中文(简体) ), `createBinaryTree`, (中文(简体) ), `binaryTreeFromProof`, (中文(简体) ), `verifyBinaryProof`, (中文(简体) ), `CheckpointDB`,节点类型 `./node`。 。 。 .

用于 [`StatefulBinaryTreeStateManager`](https://npmcn.com/package/%40ethereumjs/statemanager) 内 `@ethereumjs/statemanager` eIP-7864启动时 `Common`。 。 。 .

## 爱丽丝

这个 `EthereumJS` GitHub组织及其寄存器由原Ethereum基金会JavaScript团队和更广泛的Ethereum社区的成员管理. 如果您想参加工作或改进图书馆,请查看 [开发者文件](https://npmcn.com/package/DEVELOPER.md) \* 概述现行标准和工具,并审查 [行为守则](https://npmcn.com/package/CODE_OF_CONDUCT.md)。 。 。 .

## 许可证

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

## 常见问题

### @ethereumjs/binarytree 是什么？

实施Ethereum使用的二进制树\.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

