# @canton-network/core-provider-dapp 中文文档

规范地址：https://npmcn.com/package/%40canton-network/core-provider-dapp/

版本：1\.17\.0
npm 元数据更新时间：2026-11-05T21:18:42.424Z
中文译文更新时间：2026-11-09T01:18:37.857Z
软件包许可：Apache-2\.0

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

原始 npm 页面：https://www.npmjs.com/package/%40canton-network/core-provider-dapp
原文对照：https://npmcn.com/package/%40canton-network/core-provider-dapp/?lang=original
项目主页：https://github.com/canton-network/wallet/tree/main/core/provider-dapp#readme
源码仓库：https://github.com/canton-network/wallet

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

- 包体积（解压后）：56.2 kB，13 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- 运行依赖：6 个
- 首次发布：2026-03-02T11:47:42.389Z
- 最新版本发布：2026-11-05T21:18:42.267Z
- 近 30 天下载量：337464（2026-10-09 至 2026-11-07，npm 官方下载统计）
- 已发布版本数：42（近 12 个月 42 个）

## 中文简介

CIP-0103 为web dApps提供商,覆盖Sync和Async API.

## 安装

```sh
npm install @canton-network/core-provider-dapp
```

也可以使用：`pnpm add @canton-network/core-provider-dapp`、`yarn add @canton-network/core-provider-dapp`、`bun add @canton-network/core-provider-dapp`

## README

# @ canton- network/ 核心提供者- dapp

[CIP-103 (中文(简体) )](https://github.com/canton-foundation/cips/blob/main/cip-0103/cip-0103.md) **提供者** 州 dApps 的执行。扩展 [`@canton-network/core-splice-provider`](https://npmcn.com/package/%40canton-network/splice-provider) 以钱包为媒介的访问 dApp API(和代理分类账调用).

大多数应用程序应当使用 [`@canton-network/dapp-sdk`](https://www.npmjs.com/package/@canton-network/dapp-sdk),哪个 摘取并包装这些提供者。 新建下层时直接使用此软件包 集成或自定义发现/运输接线.

发表于 [无](https://www.npmjs.com/package/@canton-network/core-provider-dapp) 下级 阿帕奇2.0 (英语).

## 安装

```bash
npm install @canton-network/core-provider-dapp
```

## 供应商

| 类 | API 密码 | 典型钱包 | 运输 |
| --- | --- | --- | --- |
| `DappSyncProvider` | CIP-103 同步 | 浏览器扩展名/ 桌面 | `postMessage` (单位:千美元)`WindowTransport`(中文(简体) ) |
| `DappAsyncProvider` | CIP-103 自动合成 | 远程/保管网关 | HTTPS RPC + SSE 软件 |

```mermaid
flowchart LR
    dApp["dApp / dApp SDK"] --> Sync["DappSyncProvider"]
    dApp --> Async["DappAsyncProvider"]
    Sync -->|"postMessage"| Ext["Extension / desktop wallet"]
    Async -->|"HTTPS + SSE"| Gw["Remote wallet gateway"]
    Ext --> LAPI["JSON Ledger API"]
    Gw --> LAPI
```

两者都执行同样的提供方表面(`request`, (中文(简体) ), `on`, (中文(简体) ), `emit`, (中文(简体) ), `removeListener`方法 而事件类型来自生成的 OpenRPC 客户端 (单位:千美元)`@canton-network/core-wallet-dapp-rpc-client` 财务报告和审定财务报表 `@canton-network/core-wallet-dapp-remote-rpc-client`) (中文(简体) ).

## 同步 vs 同步

**同步** ——用户交互是进程内(流行/扩展). 方法返回结果 直接说.

**自动同步** ——用户互动不能阻断. 需要批准返回的方法a `userUrl` (或类似的)让用户完成动作;结果稍后作为事件到达 (例如 `connected`, (中文(简体) ), `txChanged`, (中文(简体) ), `messageSignature`) (中文(简体) ).

|  | 同步 | 自动同步 |
| --- | --- | --- |
| 连接 | 准备好后返回会话 | 可能回来 `userUrl`· ; `connected` 登录后 |
| `prepareExecute` | 请求的完成 | 回返 `userUrl`; 通过 `txChanged` |
| `signMessage` | 返回签名 | 等待 / 签名 / 失败通过 `messageSignature` |
| 活动 | 关于窗口传输的钱包通知 | 从网关共享 SSE 流 |

## 使用量

### `DappSyncProvider`

默认为 a `WindowTransport` 有义务 `window`。通过自定义 `RpcTransport` 测试时 或者连接一个非浏览器主机.

```ts
import { DappSyncProvider } from '@canton-network/core-provider-dapp'

const provider = new DappSyncProvider()

provider.on('statusChanged', (status) => {
    console.log('connected:', status.connection.isConnected)
})

const { isConnected } = await provider.request({ method: 'isConnected' })
if (!isConnected) {
    await provider.request({ method: 'connect' })
}

const accounts = await provider.request({ method: 'listAccounts' })
```

### `DappAsyncProvider`

指向远程网关基址。 可选会话符号打开 SSE 事件流 立即; 在弹出式的 IDP 认证后, 提供者会更新符号并重新连接 SSE .

```ts
import { DappAsyncProvider } from '@canton-network/core-provider-dapp'

const provider = new DappAsyncProvider('https://wallet-gateway.example.com')

provider.on('connected', (status) => {
    console.log('session ready', status)
})

provider.on('txChanged', (tx) => {
    if (tx.status === 'executed') console.log(tx.payload.updateId)
})

const connect = await provider.request({ method: 'connect' })
// If not already authenticated, open connect.userUrl for the user to log in.
```

## 活动

订阅 `provider.on` 编号 : `provider.removeListener`。有效载荷随CIP-103/ OpenRPC事件计划.

| 活动 | 同步 | 自动同步 | 何时 |
| --- | --- | --- | --- |
| `statusChanged` | 对 | 对 | 连接/ 会话更改 |
| `accountsChanged` | 对 | 对 | 增加/取消的缔约方或主要变化 |
| `txChanged` | 对 | 对 | `prepareExecute` 生命周期 |
| `connected` | —— 说 | 对 | 自动登录完成 `connect` |
| `messageSignature` | —— 说 | 对 | 自动同步 `signMessage` 生命周期 |

`DappSyncProvider` 桥接钱包所发送的通知 `WindowTransport` 输入 提供者倾听器地图 . `DappAsyncProvider` 多轴共享 `EventSource` 纵横 同一网关 URL + 令牌.

## `window.canton`

此软件包会增强 `Window` 有可选注射提供者的:

```ts
window.canton?: Provider<DappLedgerRpc>
```

`DappLedgerRpc` 是同步 dApp RPC 映射与 Ledger 组合 `ledgerApi` 操作类型, 匹配一个既能讲CIP-103又能讲代理分类账的完整浏览器钱包注入.

## 相关

| 软件包 | 作用 |
| --- | --- |
| [`@canton-network/core-splice-provider`](https://npmcn.com/package/%40canton-network/splice-provider) | 提供者接口和 `AbstractProvider` |
| [`@canton-network/core-provider-ledger`](https://npmcn.com/package/%40canton-network/provider-ledger) | 直接 JSON LAPI 供应商( 无钱包) |
| [`@canton-network/core-rpc-transport`](https://npmcn.com/package/%40canton-network/rpc-transport) | `WindowTransport`, (中文(简体) ), `HttpTransport`,, , , , , , , , |
| [`@canton-network/dapp-sdk`](https://npmcn.com/package/sdk/dapp-sdk) | 高级SDK在这些供应商之上 |

## 光谱

-   同步 OpenRPC : [`openrpc-dapp-api.json`](https://npmcn.com/package/api-specs/openrpc-dapp-api.json)
-   Async OpenRPC : (美国英语) [`openrpc-dapp-remote-api.json`](https://npmcn.com/package/api-specs/openrpc-dapp-remote-api.json)
-   [CIP-103 (中文(简体) )](https://github.com/canton-foundation/cips/blob/main/cip-0103/cip-0103.md)

## 常见问题

### @canton-network/core-provider-dapp 是什么？

CIP-0103 为web dApps提供商,覆盖Sync和Async API\.

### 如何安装 @canton-network/core-provider-dapp？

在项目目录运行 npm install @canton-network/core-provider-dapp，或使用 pnpm add / yarn add / bun add。

### @canton-network/core-provider-dapp 支持 TypeScript 吗？

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

### @canton-network/core-provider-dapp 支持 ESM 还是 CommonJS？

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

### @canton-network/core-provider-dapp 可以商用吗？

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

### @canton-network/core-provider-dapp 的下载量有多少？

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

### @canton-network/core-provider-dapp 还在维护吗？

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

