@ensdomains/address-encoder

中文文档
3.0.0发布于 2026/10/22MITTypeScriptES Module构建来源已验证近 30 天下载 16.6万

各种密码的编码和解码地址格式

中文使用文档
文档目录10 节
  1. 安装
  2. 开始
  3. 十六进制字符串编码
  4. 支持的密码
  5. 其他功能
  6. Async 编码器获取器
  7. 单币进口
  8. 单个代码函数导入
  9. EVM 链
  10. 贡献指南

@ensdomains/ 地址编码器

类型脚本中的加密货币地址编码器/解码器

文本格式地址被解码为他们的本土二进制表示,反之亦然. 对于比特币衍生的链条,这意味着他们的脚本PubKey;对于以特鲁姆衍生的链条,这是他们的散列.

此库被写入用于 EIP 2304 就业政策,但对于寻找通用密码地址编码器的任何人可能有用.

EVM兼容链要么使用 SLIP44 硬币Type 指定,要么 0x80000000 | chainId 其中0x800000000是SLIP44所保留的msb(最显著的位数),在这个范围内没有硬币类型. 这是为了避免数字与已存在的硬币类型相合.

请阅读 更详细的规格页

安装

bun add @ensdomains/address-encoder

开始

// Import coder getter
import { getCoderByCoinName } from "@ensdomains/address-encoder";

// Get the coder for the address you want to encode/decode
const btcCoder = getCoderByCoinName("btc");

// Decode the address
const decodedAddress = btcCoder.decode("1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa");
// Uint8Array(25) [ 118, 169, 20, 98, 233, 7, 177, 92, 191, 39, 213, 66, 83, 153, 235, 246, 240, 251, 80, 235, 184, 143, 24, 136, 172 ]

// Encode the address
const encodedAddress = btcCoder.encode(decodedAddress);
// 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa

十六进制字符串编码

如果你正在编码的数据是十六进制字符串而不是 Uint8Array,您可以使用 hexToBytes() 从 @noble/hashes 转换为正确的类型。 它期望六分弦没有 0x 前缀.

import { getCoderByCoinName } from "@ensdomains/address-encoder";
import { hexToBytes } from "@noble/hashes/utils.js";

const btcCoder = getCoderByCoinName("btc");

// Convert hex encoded data to bytes
const dataAsBytes = hexToBytes(
  "76a91462e907b15cbf27d5425399ebf6f0fb50ebb88f1888ac"
);
// Uint8Array(25) [ 118, 169, 20, 98, 233, 7, 177, 92, 191, 39, 213, 66, 83, 153, 235, 246, 240, 251, 80, 235, 184, 143, 24, 136, 172 ]

// Pass bytes to encoder
const encodedAddress = btcCoder.encode(dataAsBytes);
// 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa

支持的密码

要查看此库中所有支持的密码, 请查看 这里。 。 。 .

其他功能

Async 编码器获取器

import { getCoderByCoinNameAsync } from "@ensdomains/address-encoder/async";

const btcCoder = await getCoderByCoinNameAsync("btc");

单币进口

import { btc } from "@ensdomains/address-encoder/coins";

const decodedAddress = btc.decode("1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa");
const encodedAddress = btc.encode(decodedAddress);

单个代码函数导入

import {
  decodeBtcAddress,
  encodeBtcAddress,
} from "@ensdomains/address-encoder/coders";

const decodedAddress = decodeBtcAddress("1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa");
const encodedAddress = encodeBtcAddress(decodedAddress);

EVM 链

支持的EVM链有多种,但除ETH外,其中没有任何一个出口来自 coins 或者说 coders。如果您想要单独导入一个 EVM 链,您只需使用 eth 导入为替换.

贡献指南

为了在这个图书馆里添加一分钱 或者如果你有兴趣以其他方式捐款 读一下 捐款指南 在提交公关前.

版本与发布记录

@ensdomains/address-encoder 共发布 47 个版本,首次发布于 2019/10/21;过去 12 个月发布了 4 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
3.0.0latest2026/10/2222 天前
2.0.12026/10/1727 天前
2.0.02026/10/131 个月前
1.1.52025/11/2411 个月前
1.1.42025/08/261.2 年前
1.1.32025/08/131.3 年前

其他发布通道:next → 1.0.0。

关于 @ensdomains/address-encoder 的常见问题

@ensdomains/address-encoder 是什么?

各种密码的编码和解码地址格式

如何安装 @ensdomains/address-encoder?

在项目目录运行 npm install @ensdomains/address-encoder,或使用 pnpm add / yarn add / bun add。

@ensdomains/address-encoder 支持 TypeScript 吗?

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

@ensdomains/address-encoder 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@ensdomains/address-encoder 可以商用吗?

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

@ensdomains/address-encoder 的下载量有多少?

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

@ensdomains/address-encoder 还在维护吗?

最新版本 3.0.0 发布于 2026/10/22(22 天前);至今共发布 47 个版本,其中过去 12 个月发布了 4 个;首次发布于 2019/10/21。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。