完整文档页面(中文翻译)。文末附有来源说明。

阅读英文版

integrationsdapp-sdkadapters-and-discovery

适配器与发现

dApp SDK 适配器注册与钱包发现

init() 中注册的适配器决定 SDK 能发现哪些钱包,以及 connect() 打开的钱包选择器中向用户展示哪些选项。换言之:

  • 若适配器已注册(且通过 detect()),即可在选择器中显示。
  • 会话恢复仅对已注册的适配器生效。

选项 1:使用内置默认网关

这会注册 SDK 的默认网关列表(来自 gateways.json),以及所有注入/公告的钱包:

await sdk.init()

选项 2:添加适配器(推荐)

使用 additionalAdapters 在保留默认网关的同时添加更多钱包(自定义远程 Gateway、WalletConnect 等)。

添加 WalletConnect

import { WalletConnectAdapter } from '@canton-network/dapp-sdk'

const wc = WalletConnectAdapter.create({
    projectId: import.meta.env.VITE_WC_PROJECT_ID,
})

await sdk.init({ additionalAdapters: [wc] })

添加自定义远程 Wallet Gateway URL

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

await sdk.init({
    additionalAdapters: [
        new RemoteAdapter({
            name: 'My Gateway',
            rpcUrl: 'https://my-gateway.example/api/v0/dapp',
        }),
    ],
})

添加自定义扩展适配器(postMessage 目标)

import { ExtensionAdapter } from '@canton-network/dapp-sdk'

await sdk.init({
    additionalAdapters: [
        new ExtensionAdapter({
            providerId: 'browser:ext:com.example.mywallet' as never,
            name: 'My Wallet',
            target: 'com.example.mywallet',
        }),
    ],
})

选项 3:替换默认网关

若只想提供特定远程网关(不使用 SDK 默认项),请提供 defaultAdapters

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

await sdk.init({
    defaultAdapters: [
        new RemoteAdapter({
            name: 'Production Gateway',
            rpcUrl: 'https://gateway.example/api/v0/dapp',
        }),
    ],
})

选项 4:有意不注册远程网关

传入空列表表示明确选择「无」(适用于 dApp 仅支持注入/公告钱包,或稍后自行添加适配器)。

await sdk.init({ defaultAdapters: [] })

本文由 CC Privacy Club 根据 Canton Network 官方文档(CC-BY-4.0)整理翻译,仅供学习;实现细节以官方最新版本为准。