@ganache/rlp

中文文档
0.9.2发布于 2023/12/21MITTypeScriptCommonJS近 30 天下载 6.7万

递归长度前缀编码模块

中文使用文档

@ganache/rlp

递归长度 前缀编码 为了Node.js.

依据 https://github.com/ethereumjs/rlp 页面存档备份,存于互联网档案馆,附带一些优化 用于编码 :

function encodeRange<
  T extends EncodingInput | Readonly<EncodingInput>,
  Start extends RangeOf<T["length"]>
>(
  items: T,
  start: Start,
  length: Exclude<Remainders<T["length"], Start>, 0>
): { length: number; output: Buffer[] } {
  //...;
}

开始 RLP 编码 items从 start 直至 length调用 RLP.digest 改为 完成编码.

返回包含总计的对象 length 编码部分中的所有数据, 财务报告和审定财务报表 output,一组编码缓冲器.

function digest(ranges: Readonly<Buffer[]>[], length: number) {
  // ...
}

完成编码开始于 encodeRange。 。 。 .

A 返回编码数据的缓冲.

其他变化:

  • 次要优化到 encode
  • encode 只接受缓冲器或嵌入式缓冲器阵列,字符串,数字,比值, 和BN的支持已经取消.

这些修改允许以块来编码数据,避免处理相同的数据 在与Ganache的常见情况下,输入多次。 示例

type EthereumRawTx = [
  nonce: Buffer,
  gasPrice: Buffer,
  gas: Buffer,
  to: Buffer,
  value: Buffer,
  data: Buffer,
  v: Buffer,
  r: Buffer,
  s: Buffer
];
// encode the first 6 entries
const partialRlp = encodeRange(raw, 0, 6);
// encode the last 3 entires
const signature = encodeRange(raw, 6, 3);
// combine all entries
const serialized = digest(
  [partialRlp.output, signature.output],
  partialRlp.length + signature.length
);
return {
  // computing the `from` address requires entries 0-6
  from: computeFromAddress(partialRlp, v.toNumber(), raw, chainId),
  // hash requires entries 0-9
  hash: Data.from(keccak(serialized), 32),
  // serialized uses all entries for storage/transmission
  serialized
};

版本与发布记录

@ganache/rlp 共发布 64 个版本,首次发布于 2021/07/09;过去 12 个月发布了 0 个版本。

版本发布日期距今
0.9.2latest2023/12/212 年前
0.9.12023/08/233 年前
0.9.02023/07/063 年前
0.8.02023/04/133 年前
0.7.12023/02/023 年前
0.7.02022/12/163 年前

其他发布通道:canary → 0.1.1-canary.1342,internal → 0.1.1-internal.0,alpha → 0.5.3-alpha.0,beta → 0.1.1-beta.2,rc → 0.1.1-rc.0。

关于 @ganache/rlp 的常见问题

@ganache/rlp 是什么?

递归长度前缀编码模块

如何安装 @ganache/rlp?

在项目目录运行 npm install @ganache/rlp,或使用 pnpm add / yarn add / bun add。

@ganache/rlp 支持 TypeScript 吗?

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

@ganache/rlp 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@ganache/rlp 可以商用吗?

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

@ganache/rlp 的下载量有多少?

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

@ganache/rlp 还在维护吗?

最新版本 0.9.2 发布于 2023/12/21(2 年前);至今共发布 64 个版本,其中过去 12 个月发布了 0 个;首次发布于 2021/07/09。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。