# @anywalletkit/wallet-btc 中文文档

规范地址：https://npmcn.com/package/%40anywalletkit/wallet-btc/

版本：0\.4\.1
npm 元数据更新时间：2026-11-02T20:18:38.124Z
中文译文更新时间：2026-11-06T21:45:11.031Z
软件包许可：Apache-2\.0

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

原始 npm 页面：https://www.npmjs.com/package/%40anywalletkit/wallet-btc
原文对照：https://npmcn.com/package/%40anywalletkit/wallet-btc/?lang=original
项目主页：https://docs.anywallet.tech/
源码仓库：https://github.com/ultratestbro/anywalletkit

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

- 包体积（解压后）：549 kB，19 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- Node.js 要求：\>=22
- 运行依赖：5 个
- 首次发布：2026-10-24T18:43:01.069Z
- 最新版本发布：2026-11-02T20:18:37.788Z
- 近 30 天下载量：2304（2026-10-06 至 2026-11-04，npm 官方下载统计）
- 已发布版本数：12（近 12 个月 12 个）

## 中文简介

在@scure/btc-signer上,任何钱包的比特币钱包:BIP-84 p2wpkh和BIP-86trootroot账户,自己的硬币选择,RBF,Blockbook/Esplora transports.

## 安装

```sh
npm install @anywalletkit/wallet-btc
```

也可以使用：`pnpm add @anywalletkit/wallet-btc`、`yarn add @anywalletkit/wallet-btc`、`bun add @anywalletkit/wallet-btc`

## README

# @anywalletkit/wallet-btc (英语)

[![npm](https://img.shields.io/npm/v/@anywalletkit/wallet-btc?label=npm)](https://www.npmjs.com/package/@anywalletkit/wallet-btc)

比特币账户 [`@scure/btc-signer`](https://github.com/paulmillr/scure-btc-signer) (由Cure53审计;纯) `Uint8Array`,没有 `Buffer`诺德·希姆斯:

## 安装

```sh
npm install @anywalletkit/wallet-btc
# or: pnpm add @anywalletkit/wallet-btc  ·  yarn add @anywalletkit/wallet-btc
```

时间: [@anywalletkit/wallet-btc (英语)](https://www.npmjs.com/package/@anywalletkit/wallet-btc)发表于 [发布工作流程](https://github.com/ultratestbro/anywalletkit/blob/main/RELEASING.md) 与出处.

| `addressType` | 路径 | 地址 | 标准 |
| --- | --- | --- | --- |
| `p2wpkh` (默认) | `m/84'/0'/0'/0/i` | `bc1q…` | BIP-84 土生土长 |
| `p2tr` | `m/86'/0'/0'/0/i` | `bc1p…` | BIP-86 钥匙路径自来水 |

测试网络使用硬币类型 `1'` (单位:千美元)`tb1…` 编号 : `bcrt1…`) (中文(简体) ). 两条道路都由 官方BIP-84 / BIP-86测试矢量.

```ts
import WalletManagerBtc from '@anywalletkit/wallet-btc'

const wallet = new WalletManagerBtc(seedPhrase, {
  network: 'bitcoin',
  addressType: 'p2wpkh',                       // or 'p2tr'
  client: [
    { type: 'blockbook-http', clientConfig: { url: 'https://btc1.trezor.io' } },
    { type: 'esplora-http', clientConfig: { url: 'https://mempool.space/api' } }, // fails over in order
  ],
  maxFeeRate: 200,                             // sat/vB ceiling (default 500)
})
const account = await wallet.getAccount(0)

const preview = await account.describeTransaction({ to: 'bc1q…', value: 50_000n })
//   { kind: 'btc-transfer', inputs, outputs: [{ role: 'recipient' | 'change' }], fee, feeRate, vsize, rbf, lockTime, warnings }

await account.transfer({ recipient: 'bc1q…', amount: 50_000n })             // sats
await account.sendTransaction({ to: 'bc1q…', value: 50_000n, feeRate: 12n }) // explicit sat/vB
const hex = await account.signTransaction({ to: 'bc1q…', value: 50_000n })   // sign only
const max = await account.getMaxSpendable()                                  // sweep amount after fee
wallet.dispose()
```

## 花多少钱

硬币的选择是我们自己的(`selectCoins`, (中文(简体) ), `coinselect.ts`: 有效值 积累,最大第一;无法自给的投入被省去; 粉尘下的变化(294 sat p2wpkh / 330 sat p2tr)被折叠入收费;最多 `maxInputs` (200) 投入。 收费是 `feeRate × vsize` 与标准 segwit 连接 权重,以72字节的签名估计,所以报价永远不能低于收费 实际支付.

交易信号替换换收费( E)`rbf`设置 `nLockTime` 页:1 当前提示( o)`antiFeeSniping`,默认运输何时可以报告高度.

## 安全检查

没有明确答案的广播(推倒、超时、5xx或408、a) 无法读取的身体)抛出 `BroadcastUnknownError` (单位:千美元)`maybeSent`, (中文(简体) ), `hash` = txid 计算 发送前):交易可能位于集邮地上,所以不要另立开支. 节点的拒绝( 有原因的 4xx, 有错误的正文) 保留一个被标记的错误 (单位:千美元)`isAnsweredRefusal`),对几个客户来说,只有在每个人都拒绝的情况下,才会拒绝. "已入"中"/"区块链"回"txid". 习惯 `BtcClient` 应 标记拒绝 `answered: true`。产出与收件人匹配,并按脚本进行更改.

签字前 **财务报告和审定财务报表** 在广播之前——也用于呼叫者提供的生六分位数—— 每笔交易都解为 `BtcTxDescription` 必须通过:

-   收费标准 `maxFeeRate` (单位:千美元)`UnsafeTransactionError('fee-rate-too-high')`(三);
-   完全一个输出等于请求的接收者+数量,每个其它输出 是我们自己的变化(`'unexpected-output'`, (中文(简体) ), `'recipient-mismatch'`, (中文(简体) ), `'change-not-ours'`(三);
-   `transactionMaxFee` 编号 : `transferMaxFee` 绝对封顶.

不屏蔽的警告 : `high-fee-rate`, (中文(简体) ), `fee-over-10pct-of-amount`, (中文(简体) ), `dust-output`, (中文(简体) ), `no-change`。 。 。 .

## 信件签名

`sign()` 编号 : `verify()` p2wpkh 账户的BIP-137(标题) `39 + recovery`, (中文(简体) ), base64 — Electrum / 比特币核心编码. 底盘账户没有BIP-137 窗体; `sign()` 掷出 `UnsupportedAddressTypeError` (BIP-322未执行).

## 运输

`blockbook-http` (Trezor Blockbook REST,快节点加载)和 `esplora-http` (mempool.space, blockstream.info). 星洲网. 超时请求 `timeoutMs` (15个)和 对答复进行形状检查(`NetworkError` (否则) 传递您自己的对象 执行 `BtcClient` 为了其他一切.

## 活动历史

`createBtcHistory` 是链子 `HistorySource` (单位:千美元)`@anywalletkit/core`超过 Blockbook, 重用 `BlockbookClient` (单位:千美元)`getAddressPage`, (中文(简体) ), `getTransactionDetails`) (中文(简体) ).

```ts
import { createBtcHistory } from '@anywalletkit/wallet-btc/history'

const history = createBtcHistory({ blockbookUrls: ['https://btc1.trezor.io', 'https://bitcoin.atomicwallet.io'] })
const page = await history.listActivity('bc1q3x8yszvcvjjxqragsh0l6j8rxnhk7pay9hnj5h', { limit: 25 })
const older = await history.listActivity(address, { cursor: page.cursor })
const one = await history.getTransaction(page.items[0].hash, address)
history.explorerTxUrl(one.hash) // https://mempool.space/tx/…
```

| 选项 | 默认 | 说明 |
| --- | --- | --- |
| `blockbookUrl` 编号 : `blockbookUrls` | —— 说 | Blockbook根,按顺序进行(Cloudflare 403, 5xx, network ~ next). 特雷佐案`btc1…5.trezor.io`坐在Cloudflare挑战后,阻止非浏览器用户代理; `bitcoin.atomicwallet.io` 财务报告和审定财务报表 `blockbook.btc.zelcore.io` 于2026-10-14回信. QuickNode的"Blockbook"附加语同API. |
| `network` | `bitcoin` | `testnet` 编号 : `regtest` CAIP-2 ids; mempol.space testnet链接. |
| `pageSize` | 查询 `limit`页:1 | 每块书页行数(最大为1000). |
| `fetch`, (中文(简体) ), `timeoutMs` | 全球,15 000 |  |

**端点.** `GET /api/v2/address/{a}?details=txs&page=&pageSize=` - 最新的交易,首先是投入和产出(`hex` ) (删除). 光标是基数64 JSON `{ v: 1, p, s }`: 下一页和页大小的页码开始于页码( Blockbook 夹住出行页到上页, 所以 page stops at `totalPages`) (中文(简体) ). `since` ; 总是保留未经证实的行.

**测绘.** 输入已使用的地址( E)`ownIn`和收到的产出(`ownOut`)为总结. 已用投入-发送: `from` = 地址, (中文(简体) ), `to` =第一个不是我们的输出, `nativeValue` = 留给非自有产出的(变化被忽略,费用被分开);我们的每一项产出 = 自我整合。 没有用完的投入 − 收到: `from` =第一个输入地址(`coinbase` 当没有的时候, `nativeValue` =: `ownOut`。 。 。 . `transfers` 那是一条本地腿, `fee` =: `fees`, (中文(简体) ), `status` =: `confirmed` 一次 `confirmations ≥ 1` (次数) `pending`,没有 `block`, (中文(简体) ), `block` =: `blockHeight`, (中文(简体) ), `raw` = Blockbook 交易加 `ownIn` 编号 : `ownOut`。 。 。 .

装入 `test/fixtures/history/` 2026年10月14日从 `bitcoin.atomicwallet.io` 测试地址(其4个交易:2个接收,2个发送,有变化)和 `GET /api/v2/tx/{txid}` 一个发送。 没有协议模块承认比特币交易,因此没有识别器交叉检查.

## 常见问题

### @anywalletkit/wallet-btc 是什么？

在@scure/btc-signer上,任何钱包的比特币钱包:BIP-84 p2wpkh和BIP-86trootroot账户,自己的硬币选择,RBF,Blockbook/Esplora transports\.

### 如何安装 @anywalletkit/wallet-btc？

在项目目录运行 npm install @anywalletkit/wallet-btc，或使用 pnpm add / yarn add / bun add。

### @anywalletkit/wallet-btc 支持 TypeScript 吗？

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

### @anywalletkit/wallet-btc 支持 ESM 还是 CommonJS？

同时提供 ES Module 与 CommonJS 入口，import 和 require\(\) 都可以使用，打包工具会自动选择合适的版本。

### @anywalletkit/wallet-btc 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js \>=22。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @anywalletkit/wallet-btc 可以商用吗？

@anywalletkit/wallet-btc 使用 Apache-2\.0 许可。宽松许可：允许商业使用、修改和再分发，并附带明确的专利授权；分发时需保留许可与 NOTICE 文件，修改过的文件要注明改动。以上为概括，不构成法律意见，请以许可原文为准。

### @anywalletkit/wallet-btc 的下载量有多少？

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

### @anywalletkit/wallet-btc 还在维护吗？

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

