# @ensdomains/address-encoder 中文文档

规范地址：https://npmcn.com/package/%40ensdomains/address-encoder/

版本：3\.0\.0
npm 元数据更新时间：2026-10-22T10:02:37.158Z
中文译文更新时间：2026-11-13T17:58:58.806Z
软件包许可：MIT

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

原始 npm 页面：https://www.npmjs.com/package/%40ensdomains/address-encoder
原文对照：https://npmcn.com/package/%40ensdomains/address-encoder/?lang=original
源码仓库：https://github.com/ensdomains/address-encoder

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

- 包体积（解压后）：469 kB，507 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：4 个
- 首次发布：2019-10-21T09:34:53.639Z
- 最新版本发布：2026-10-22T10:02:36.602Z
- 近 30 天下载量：165916（2026-10-14 至 2026-11-12，npm 官方下载统计）
- 已发布版本数：47（近 12 个月 4 个）

## 中文简介

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

## 安装

```sh
npm install @ensdomains/address-encoder
```

也可以使用：`pnpm add @ensdomains/address-encoder`、`yarn add @ensdomains/address-encoder`、`bun add @ensdomains/address-encoder`

## README

# @ensdomains/ 地址编码器

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

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

此库被写入用于 [EIP 2304 就业政策](https://eips.ethereum.org/EIPS/eip-2304),但对于寻找通用密码地址编码器的任何人可能有用.

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

请阅读 [更详细的规格页](https://docs.ens.domains/ens-improvement-proposals/ensip-11-evmchain-address-resolution#specification)

## 安装

```bash
bun add @ensdomains/address-encoder
```

## 开始

```ts
// 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`](https://github.com/paulmillr/noble-hashes) 转换为正确的类型。 它期望六分弦没有 `0x` 前缀.

```ts
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
```

## 支持的密码

要查看此库中所有支持的密码, 请查看 [这里](https://github.com/ensdomains/address-encoder/blob/master/docs/supported-cryptocurrencies.md)。 。 。 .

## 其他功能

### Async 编码器获取器

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

const btcCoder = await getCoderByCoinNameAsync("btc");
```

### 单币进口

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

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

### 单个代码函数导入

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

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

### EVM 链

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

## 贡献指南

为了在这个图书馆里添加一分钱 或者如果你有兴趣以其他方式捐款 读一下 [捐款指南](https://github.com/ensdomains/address-encoder/blob/master/docs/contribution-guide.md) 在提交公关前.

## 常见问题

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

