# @asevault/connect 中文文档

规范地址：https://npmcn.com/package/%40asevault/connect/

版本：0\.3\.3
npm 元数据更新时间：2026-10-18T22:35:10.302Z
中文译文更新时间：2026-11-06T22:56:06.993Z
软件包许可：Apache-2\.0

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

原始 npm 页面：https://www.npmjs.com/package/%40asevault/connect
原文对照：https://npmcn.com/package/%40asevault/connect/?lang=original
项目主页：https://asepad.fun/

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

- 包体积（解压后）：134 kB，27 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：0 个
- 首次发布：2026-10-15T21:37:24.322Z
- 最新版本发布：2026-10-18T22:35:10.136Z
- 近 30 天下载量：2299（2026-10-07 至 2026-11-05，npm 官方下载统计）
- 已发布版本数：16（近 12 个月 16 个）

## 中文简介

在Asentum上将 dApps 连接到 AseVault 移动钱包 - 深通/QR连接,ML-DSA-65签名请求,交易批准. Asepad.fun的产品.

## 安装

```sh
npm install @asevault/connect
```

也可以使用：`pnpm add @asevault/connect`、`yarn add @asevault/connect`、`bun add @asevault/connect`

## README

# @ asevault/ 连接

将 Asentum dApp 连接到 AseVault 移动钱包(ML-DSA-65签名). 密钥留在设备上;每个请求都需要在申请中获得批准. 零从属.

```bash
npm install @asevault/connect
```

## 使用量

```ts
import { AseVaultProvider } from '@asevault/connect';

const wallet = new AseVaultProvider({ name: 'My dApp' });

await wallet.connect();            // approve in AseVault -> session
const address = wallet.address;    // ase1...

const { txHash } = await wallet.callContract({
  to: 'ase1...',                   // or 0x...
  method: 'swapExactIn',
  args: ['1', '0xeeee...', '1000000000000000000', '990000000000000000'],
});

const { txHash: deployTx, address: contract } = await wallet.deploy(source);

const { txHash: sendTx } = await wallet.sendTransaction({ to: 'ase1...', amount: '1000000000000000000' });

const { signature } = await wallet.signMessage({ message: 'hello' });

const { status, receipt } = await wallet.waitForTx(txHash);
// status: 'confirmed' | 'reverted' | 'timeout'
// timeout: no receipt landed. Reverted txs are dropped without a receipt
// on Asentum, so a timeout usually means dropped or reverted.

const gas = await wallet.estimateGas({ to: 'ase1...', method: 'swapExactIn', args });

wallet.on('chainChanged', (id) => {});
wallet.disconnect();
```

EIP-1193样式请求()与被注入的提供者使用相同的方法名支持:

```ts
await wallet.request({ method: 'ase_sendCall', params: { to, method: 'mint', args: [] } });
await wallet.request({ method: 'eth_blockNumber' });
await wallet.request({ method: 'estimateGas', params: { to, method: 'mint', args: [] } });
await wallet.accounts();
await wallet.getAddress();
wallet.selectedAddress;
wallet.chainId;
```

## 运输

自动选择,或强制通过 `new AseVaultProvider({ transport })`数字 :

| DApp运行的地方 | 运输 | UX 密码 |
| --- | --- | --- |
| AseVault 应用浏览器 | `InAppTransport` | 现场核准单 |
| 移动浏览器 | `DeepLinkTransport` | 应用切换、批准、返回标签 |
| 桌面浏览器 | `RelayTransport` | 屏幕上的QR,电话批准 |

在桌面上,提供者默认为公共中继器(`relay.asepad.fun`和 `connect()` 显示内置的 QR 模式。 过 `relay: false` 选择退出( 然后连接失败) `WALLET_NOT_INSTALLED`) (中文(简体) ).

```ts
const wallet = new AseVaultProvider({ relay: true });
await wallet.connect();              // QR modal opens automatically

// Per-call override:
await wallet.connect({ ui: 'none' });

// Render the QR yourself:
const wallet2 = new AseVaultProvider({ relay: true, ui: 'none' });
wallet2.on('uri', (uri) => renderQr(uri));

// Custom renderer:
const wallet3 = new AseVaultProvider({ relay: true, ui: (uri) => myQr(uri) });

// Custom relay URL:
const wallet4 = new AseVaultProvider({ relay: 'https://your-relay' });

// Explicit transport:
import { RelayTransport } from '@asevault/connect';
const wallet5 = new AseVaultProvider({
  transport: new RelayTransport('https://your-relay', { onUri: (uri) => renderQr(uri) }),
});
```

### 延迟和故障

钱包在预测时每~2.5 s 进行请求队列投票,结果投票为 1 s. 等待几秒钟之间 `callContract()` 电话里有批准表 如果钱包是背景的,OS会决定何时醒. 在~5 s后显示"检查你的手机"提示.

`connect()` 在显示 QR 之前探测中继器。 如果无法到达,它会抛出 `RELAY_UNREACHABLE`在一项待决请求中,连续三次无法到达的投票也以 `RELAY_UNREACHABLE`。 。 。 .

零依赖 Dev 中继器在 `scripts/dev-relay.mjs`运行它,在你的局域网IP上服务DApp,扫描QR.

## 阅读器 API

`wallet.client` (或 `new AseVaultReader()`)手柄读取端点故障和超时:

| 方法 | 回返 |
| --- | --- |
| `view(contract, method, args)` | 未包装的 `returnValue`JSON 字符串解析后, 缩写为字符串 |
| `getBalance(address)` | (威仪) |
| `balanceOf(contract, address)` | 通过 `view` |
| `getBlockNumber()` | 编号 |
| `getBlock(n)` | `{ receipts: [{ txHash, success, error, recipient, events }] }` |
| `getReceipt(hash)` | 收讫或 `null` (待定/未找到) |
| `getTxState(hash)` | “待决” |
| `waitForTx(hash, timeoutMs?)` | 状态 : “ 确认 ” |
| `waitReceipt(hash, timeoutMs?)` | 收件或超时抛出 |
| `getContractEvents(contract, { event?, fromBlock?, toBlock?, limit? })` | 匹配事件, 最新第一 |
| `estimateGas(contract, method, args)` | bigint 气体单位 |
| `chainId()` | 小数字符串 |
| `useRpc(urls)` 编号 : `validateRpc(url)` | 终点池+健康探测器 |

这个 `/view` RPC 返回 `{ ok, returnValue, gasUsed }`。 。 。 . `view()` 决定: `returnValue` 直接,不是信封.

## 自动检测

在 AseVault 浏览器内插入钱包 `window.__asevaultBridge` 加号 `window.asevault`编号 :`window.asentum` 别名( n)`request()`, (中文(简体) ), `connect()`, (中文(简体) ), `disconnect()`, (中文(简体) ), `accounts()`, (中文(简体) ), `getAddress()`, (中文(简体) ), `sendCall`, (中文(简体) ), `sendTransfer`, (中文(简体) ), `signMessage`, (中文(简体) ), `ase_deploy`) (中文(简体) ). `InAppTransport` 约束 `__asevaultBridge`这样 `installAseVaultProvider()` 可替换 `window.asevault` 没有打破频道。 钱包推出 `accountsChanged`编号 :`disconnect`编号 :`connect` 将事件输入页面.

## 议定书(v1)

-   `asevault://v1/connect?origin=&name=&permissions=&callback=&nonce=` - > (中文) `callback?asevault=1&session=<b64>` (会议载有ML-DSA-65的证明) `ASEVAULT_CONNECT|<nonce>|<address>`(中文(简体) )
-   `asevault://v1/sign?session=&payload=<b64url>&callback=&nonce=&kind=` - > (中文) `callback?asevault=1&tx=<hash>` 或者说 `?error=<code>&message=`
-   `asevault://v1/disconnect?session=`
-   中继 : `POST/GET {relay}/r/<nonce>` 结果, `POST/GET {relay}/q` 已排队的请求

## 警卫

-   钥匙从不离开AseVault。 dApps只看到地址,公钥,签名和广播结果.
-   每一份申请都需要得到明确的申请批准.
-   会话是来源范围并可在AseVault(Connected Apps)内部被撤销.

全面整合指南: `CONNECT.md`。 。 。 .

* * *

产物: [Asepad.fun (英语)](https://asepad.fun/)。 。 。 .

## 常见问题

### @asevault/connect 是什么？

在Asentum上将 dApps 连接到 AseVault 移动钱包 - 深通/QR连接,ML-DSA-65签名请求,交易批准\. Asepad\.fun的产品\.

### 如何安装 @asevault/connect？

在项目目录运行 npm install @asevault/connect，或使用 pnpm add / yarn add / bun add。

### @asevault/connect 支持 TypeScript 吗？

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

### @asevault/connect 支持 ESM 还是 CommonJS？

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

### @asevault/connect 可以商用吗？

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

### @asevault/connect 的下载量有多少？

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

### @asevault/connect 还在维护吗？

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

