@canton-network/dapp-sdk

中文文档
1.9.0发布于 2026/11/06Apache-2.0TypeScriptESM + CJS近 30 天下载 2.2万

Canton Network上的 dApp 开发浏览器 SDK

中文使用文档
文档目录16 节
  1. 特征
  2. 安装
  3. 快速启动
  4. 建筑
  5. 钱包提供者
  6. 使用量
  7. 选项A:模块级API(推荐给大多数应用程序)
  8. 备选案文B:与发现对象的匹配
  9. 备选案文C:与供应商直接兼容
  10. API 参考
  11. 达标
  12. Dapplient 选项
  13. 发现对象
  14. 内建适应器
  15. 文档
  16. 许可证

dApp SDK (英语)

@canton-network/dapp-sdk - 用于在平台上建立分散化应用程序的SDK类型 广州网。将用户连接到Canton钱包,管理账户,签名消息,以及执行交易——所有交易都通过一个供应商中立的接口,由 CIP-0103 (中文(简体) )。 。 。 .

[注] 每一份释放的移徙指南都公布于 讨论情况。 。 。 .

特征

  • 钱包发现 远程网关,EIP-6963型 canton:announceProvider 事件和可插接的适配器
  • 钱包拾取器 UI – 内置,框架不可知的网络组件,允许用户选择钱包,输入自定义网关 URL,并管理最近使用的连接
  • 钱包连接 ——连接,断开,并监视连接状态
  • 账户管理 ——清单账户并应对账户变动
  • 交易执行 - 要求Daml交易的用户批准和签名
  • 编目 API 访问 - 代理认证向Canton JSON Ledger API提出的请求
  • 实时活动 订阅状态变化、账户变化和交易生命周期事件
  • 多种运输 用于远程钱包网关的HTTP/SSE, postMessage 浏览器扩展钱包
  • 提供者接口 - EIP-1193型CIP-103供应商通过 getConnectedProvider() 之后 connect()

安装

npm install @canton-network/dapp-sdk
pnpm add @canton-network/dapp-sdk

快速启动

最快的前进方式是通过模块级便利API. 它管理着一个单子 DappClient 在幕后,打开取钱包器,为您处理适配器注册.

import * as sdk from '@canton-network/dapp-sdk'

// Opens the wallet picker and connects to the selected wallet
const result = await sdk.connect()
console.log(result.isConnected)

// List the user's accounts (parties)
const accounts = await sdk.listAccounts()

// Execute a transaction
await sdk.prepareExecute({
    commands: [
        {
            CreateCommand: {
                templateId: '#MyApp:MyModule:MyTemplate',
                createArguments: { owner: accounts[0].partyId },
            },
        },
    ],
})

// Listen for real-time updates
sdk.onTxChanged((tx) => {
    console.log('Transaction update:', tx)
})

// Disconnect when done
await sdk.disconnect()

建筑

SDK是围绕三层构建的:

┌──────────────────────────────────────────────┐
│  DappClient                                  │
│  Thin wrapper: typed RPC helpers, events,    │
│  session persist                             │
├──────────────────────────────────────────────┤
│  DiscoveryClient                             │
│  Adapter registry, session restore,          │
│  wallet picker integration                   │
├──────────────────────────────────────────────┤
│  ProviderAdapter implementations             │
│  ExtensionAdapter (announce protocol)        │
│  (browser / postMessage)                     │
│  RemoteAdapter (HTTP/SSE gateway)            │
└──────────────────────────────────────────────┘

钱包提供者

钱包和扩展作者:参见 钱包提供者(发现) 在dApp 大楼的文档中,说明如何在拾取器中出现(RemoteAdapter, (中文(简体) ), canton:announceProvider,以及 additionalAdapters) (中文(简体) ).

使用量

导入 SDK 作为命名空间 。 这个 connect() 函数打开内置的钱包拾取器、登记可用的适配器并返回 a ConnectResult。 。 。 .

import * as sdk from '@canton-network/dapp-sdk'
import { RemoteAdapter } from '@canton-network/dapp-sdk'

await sdk.connect()
const status = await sdk.status()

您可以在连接时间提供额外的适配器 :

await sdk.connect({
    additionalAdapters: [
        new RemoteAdapter({
            name: 'My Gateway',
            rpcUrl: 'https://gateway.example.com/api/json-rpc',
        }),
    ],
})

备选案文B:与发现对象的匹配

要对适配器注册和连接流程进行更多的控制,请使用 DiscoveryClient 直接传递给生成的提供者 DappClient。 。 。 .

import {
    DappClient,
    DiscoveryClient,
    RemoteAdapter,
} from '@canton-network/dapp-sdk'

const discovery = await DiscoveryClient.create({
    adapters: [
        new RemoteAdapter({
            name: 'Splice Wallet Gateway',
            rpcUrl: 'https://gateway.example.com/api/json-rpc',
        }),
    ],
})
await discovery.connect() // opens the picker if configured

const session = discovery.getActiveSession()!
const client = new DappClient(session.provider, {
    providerType: session.adapter.type,
})

const status = await client.status()

备选案文C:与供应商直接兼容

如果你已经有一个 Provider<DappRpcTypes> (例如从自己的适配器),你可以完全跳过发现.

import { DappClient, RemoteAdapter } from '@canton-network/dapp-sdk'

const provider = new RemoteAdapter({
    name: 'Splice Wallet Gateway',
    rpcUrl: 'https://gateway.example.com/api/json-rpc',
}).provider()

const client = new DappClient(provider)
const result = await client.connect()

API 参考

达标

方法回返说明
connect()ConnectResult通过提供者启动连接
disconnect()void断开连接并清除本地状态
status()StatusEvent当前连接状态
listAccounts()ListAccountsResult列出用户账户( 当事方)
prepareExecute(params)null提交交易供签署
prepareExecuteAndWait(params)PrepareExecuteAndWaitResult提交并等待完成
ledgerApi(params)LedgerApiResult代理编辑器 API 请求
open()void打开钱包 UI
getProvider()Provider访问基本提供者
onStatusChanged(listener)void订阅状态更改
onAccountsChanged(listener)void订阅到账户更改
onTxChanged(listener)void订阅交易更改

Dapplient 选项

选项类型默认说明
providerTypeProviderType'remote'感染 open() 路线('browser' 使用后Message, 其他人使用弹出)

发现对象

方法说明
create(config)创建初始化客户端并尝试恢复会话
registerAdapter(adapter)添加一个 ProviderAdapter 运行时间
listAdapters()列出已注册适配器
connect(providerId?)连接到特定的适配器或打开取取器
disconnect()断开活动会话
getActiveSession()获取当前 ActiveSession 或者说 null
on(event, handler)听着 discovery:connected, (中文(简体) ), discovery:disconnected, (中文(简体) ), discovery:error
removeListener(event, handler)删除事件倾听器

内建适应器

适配器提供者类型运输说明
ExtensionAdapter'browser'postMessage浏览器扩展通过 canton:announceProvider (单位:千美元)钱包提供者指南) (中文(简体) ).
RemoteAdapter'remote'HTTP/SSE 软件CIP-103 钱包 网络上的网关.

文档

完整的文档,包括详细的使用指南,API参考,以及钱包网关的配置:

许可证

阿帕奇 - 2.0

版本与发布记录

@canton-network/dapp-sdk 共发布 49 个版本,首次发布于 2025/08/29;过去 12 个月发布了 34 个版本。

版本发布日期距今
1.9.0latest2026/11/063 天前
1.8.02026/10/1227 天前
1.7.12026/09/111 个月前
1.7.02026/09/101 个月前
1.6.02026/09/052 个月前
1.5.12026/08/132 个月前

关于 @canton-network/dapp-sdk 的常见问题

@canton-network/dapp-sdk 是什么?

Canton Network上的 dApp 开发浏览器 SDK

如何安装 @canton-network/dapp-sdk?

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

@canton-network/dapp-sdk 支持 TypeScript 吗?

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

@canton-network/dapp-sdk 支持 ESM 还是 CommonJS?

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

@canton-network/dapp-sdk 可以商用吗?

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

@canton-network/dapp-sdk 的下载量有多少?

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

@canton-network/dapp-sdk 还在维护吗?

最新版本 1.9.0 发布于 2026/11/06(3 天前);至今共发布 49 个版本,其中过去 12 个月发布了 34 个;首次发布于 2025/08/29。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。