@ethereumjs/binarytree

中文文档
10.1.3发布于 2026/08/21MITTypeScriptESM + CJS近 30 天下载 18.7万

实施Ethereum使用的二进制树.

中文使用文档
文档目录8 节
  1. 目录
  2. 安装
  3. 开始
  4. 证据
  5. 浏览器
  6. API 密码
  7. 爱丽丝
  8. 许可证

@ethereumjs/ 二元树 v10 (警告)

NPM Package GitHub Issues Actions Status Code Coverage Discord

实施二进制树 EIP-7864 (英语)

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

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

可运行的示例 examples/。 。 。 .

目录

安装

npm install @ethereumjs/binarytree

开始

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

// ./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()数字 :

// ./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 (建造包,然后 npx vite 从软件包根开始).

API 密码

生成类型文件 文档。 。 。 .

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

用于 StatefulBinaryTreeStateManager 内 @ethereumjs/statemanager eIP-7864启动时 Common。 。 。 .

爱丽丝

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

许可证

麻省理工学院

版本与发布记录

@ethereumjs/binarytree 共发布 8 个版本,首次发布于 2025/03/25;过去 12 个月发布了 5 个版本。

版本发布日期距今
10.1.3latest2026/08/212 个月前
10.1.22026/05/295 个月前
10.1.12026/01/289 个月前
10.1.1-nightly.2nightly2026/01/199 个月前
10.1.1-nightly.12025/12/0411 个月前
10.1.02025/11/071 年前

其他发布通道:rc → 10.0.0-dev-rc.1,nightly → 10.1.1-nightly.2。

关于 @ethereumjs/binarytree 的常见问题

@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 和提交记录判断。