@ canton- network/ 核心提供者- dapp
CIP-103 (中文(简体) )
提供者 州 dApps 的执行。扩展
@canton-network/core-splice-provider 以钱包为媒介的访问
dApp API(和代理分类账调用).
大多数应用程序应当使用
@canton-network/dapp-sdk,哪个
摘取并包装这些提供者。 新建下层时直接使用此软件包
集成或自定义发现/运输接线.
发表于 无 下级 阿帕奇2.0 (英语).
安装
npm install @canton-network/core-provider-dapp
供应商
| 类 | API 密码 | 典型钱包 | 运输 |
|---|---|---|---|
DappSyncProvider | CIP-103 同步 | 浏览器扩展名/ 桌面 | postMessage (单位:千美元)WindowTransport(中文(简体) ) |
DappAsyncProvider | CIP-103 自动合成 | 远程/保管网关 | HTTPS RPC + SSE 软件 |
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 测试时
或者连接一个非浏览器主机.
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 .
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 有可选注射提供者的:
window.canton?: Provider<DappLedgerRpc>
DappLedgerRpc 是同步 dApp RPC 映射与 Ledger 组合 ledgerApi 操作类型,
匹配一个既能讲CIP-103又能讲代理分类账的完整浏览器钱包注入.
相关
| 软件包 | 作用 |
|---|---|
@canton-network/core-splice-provider | 提供者接口和 AbstractProvider |
@canton-network/core-provider-ledger | 直接 JSON LAPI 供应商( 无钱包) |
@canton-network/core-rpc-transport | WindowTransport, (中文(简体) ), HttpTransport,, , , , , , , , |
@canton-network/dapp-sdk | 高级SDK在这些供应商之上 |
光谱
- 同步 OpenRPC :
openrpc-dapp-api.json - Async OpenRPC : (美国英语)
openrpc-dapp-remote-api.json - CIP-103 (中文(简体) )