# @exodus/address-provider 中文文档

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

版本：12\.15\.5
npm 元数据更新时间：2026-10-09T20:40:23.301Z
中文译文更新时间：2026-11-14T04:05:38.579Z
软件包许可：MIT

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

原始 npm 页面：https://www.npmjs.com/package/%40exodus/address-provider
原文对照：https://npmcn.com/package/%40exodus/address-provider/?lang=original
项目主页：https://github.com/ExodusMovement/exodus/tree/master/libs/features/address-provider
源码仓库：https://github.com/ExodusMovement/exodus

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

- 包体积（解压后）：125 kB，31 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：20 个
- 首次发布：2023-06-02T13:38:38.672Z
- 最新版本发布：2026-10-09T20:40:23.031Z
- 近 30 天下载量：11956（2026-10-14 至 2026-11-12，npm 官方下载统计）
- 已发布版本数：101（近 12 个月 9 个）

## 中文简介

用于生成和跟踪所用和未使用的地址的地址提供者.

## 安装

```sh
npm install @exodus/address-provider
```

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

## README

# @ exodus/ 地址提供者

本模块从不同的钱包账户获取资产地址 。 软件钱包账户的地址是使用 Keychain 种子生成的编码公钥,而硬件钱包账户则使用存储在其中的公共钥 [公钥存储器](https://npmcn.com/package/%40exodus/public-key-provider/module/store)。 。 。 .

```mermaid
flowchart LR
    A[AddressProvider] --> B[PublicKeyProvider]
    B -->|software| D[Keychain]
    B -->|hardware| E[PublicKeyStore]
```

在某些平台(\*咳嗽,可移动\*)上,地址衍生可能相当昂贵. 因此这个软件包还包括一个简单的钱包账户和基于bip32路径的缓存.

## 安装

```sh
pnpm add @exodus/address-provider
```

## 使用量

此特性设计为与 `@exodus/headless`。见 [使用 sdk](https://npmcn.com/package/docs/development/using-the-sdk.md)。 。 。 .

### 来玩吧

1.  打开游乐场 [https://exodus-hydra.pages.dev/features/地址-提供商](https://exodus-hydra.pages.dev/features/address-provider)
2.  尝试一些方法通过UI。 这些对应于1:1 `exodus.addressProvider` API (英语).
3.  运行 `await exodus.addressProvider.getReceiveAddress({ walletAccount: 'exodus_0', assetName: 'bitcoin' })` 在 Dev 工具控制台中.

### API 边

见 [使用 sdk](https://npmcn.com/package/docs/development/using-the-sdk.md#setup-the-api-side) 关于特性插入 SDK 和 API 接口的更多细节 [类型声明](https://npmcn.com/package/%40exodus/address-provider/api/index.d.ts)。 。 。 .

```ts
const address = await exodus.addressProvider.getAddress({
  purpose: 44,
  assetName: 'bitcoin',
  walletAccount: 'exodus_0',
  chainIndex: 0,
  addressIndex: 0,
})

const receiveAddress = await exodus.addressProvider.getReceiveAddress({
  assetName: 'bitcoin',
  walletAccount: 'exodus_0',
})

const unusedReceiveAddress = await exodus.addressProvider.getReceiveAddress({
  assetName: 'bitcoin',
  walletAccount: 'exodus_0',
  multiAddressMode: true,
})
```

如果您正在构建一个需要钱包地址的特性,请添加对 `addressProvider` 模块,它提供与外部几乎相同的 API `exodus.addressProvider` [API 密码](https://npmcn.com/package/%40exodus/address-provider/api/index.js) (caveat:模块预期) `WalletAccount` 实例,而 API 则期望钱包账户名称像 `'exodus_0'`) (中文(简体) ).

### 外部钱包地址

对于不从种子中获取地址的钱包账户(例如智能合同钱包),地址提供商会从种子中解析地址 `externalWalletAddressesAtom`登记册地址: `walletAccounts` 模块 :

```js
await exodus.walletAccounts.setExternalAddress({
  walletAccount: 'polymarket_0',
  assetName: 'matic',
  address: '0x1234...abcd',
})

// The address provider now returns this address for the external wallet account
const address = await exodus.addressProvider.getReceiveAddress({
  assetName: 'matic',
  walletAccount: 'polymarket_0',
})

// To remove
await exodus.walletAccounts.removeExternalAddress({
  walletAccount: 'polymarket_0',
  assetName: 'matic',
})
```

这仅适用于钱包账户 `isExternal` 实值 `true`。对于所有其他账户,则使用普通密钥衍生.

### UI 侧

见 [使用 sdk](https://npmcn.com/package/docs/development/using-the-sdk.md#events) 关于基本UI侧设置的更多细节.

```jsx
import exodus from '~/ui/exodus'

const MyComponent = () => {
  const { loading, value: receiveAddress } = useAsync(
    exodus.addressProvider.getReceiveAddress({ walletAccount: 'exodus_0', assetName: 'bitcoin' })
  )

  return loading ? <Text>Loading...</Text> : <Text>Your address: {receiveAddress}</Text>
}
```

### 模拟地址

有时你可能会想模拟另一个钱包,你没有种子或私钥。 您可以在此处的地址层或xpub/ pub 公钥层中进行嘲笑 [公用钥匙提供者](https://npmcn.com/package/%40exodus/public-key-provider)

提供通常用来获取地址的所有参数,从而模拟地址:

```js
exodus.debug.addressProvider.mockAddress({
  walletAccount: 'exodus_0',
  assetName: 'ethereum',
  address: '<address>',
  purpose: 44,
  chainIndex: 0,
  addressIndex: 0,
})
```

仅用一个参数子集来模拟多个地址 :

```js
exodus.debug.addressProvider.mockAddress({
  walletAccount: 'exodus_0',
  assetName: 'bitcoin',
  purpose: 44,
  address: '<address>',
})
```

这将导致嘲弄所有使用同一地址的更改/接收链地址.

要清除所有被嘲笑的地址,打电话 `exodus.debug.addressProvider.clear()`。 。 。 .

## 常见问题

### @exodus/address-provider 是什么？

用于生成和跟踪所用和未使用的地址的地址提供者\.

### 如何安装 @exodus/address-provider？

在项目目录运行 npm install @exodus/address-provider，或使用 pnpm add / yarn add / bun add。

### @exodus/address-provider 支持 TypeScript 吗？

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

### @exodus/address-provider 支持 ESM 还是 CommonJS？

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

### @exodus/address-provider 可以商用吗？

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

### @exodus/address-provider 的下载量有多少？

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

### @exodus/address-provider 还在维护吗？

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

