WalletConnect会话权限怎么读? 图 1
WalletConnect会话权限怎么读? · 图 1

WalletConnect 会话不是简单的已连接布尔值。Session Namespaces 同时约束链、账户、方法和事件;只看账户地址而忽略方法集合,容易把只读会话误当成可签名会话。

required 与 optional 分开提案

Dapp 在 requiredNamespaces 声明必需能力,钱包无法满足其中任一链、method 或 event 时应拒绝;optionalNamespaces 是可选择支持的附加能力。示例要求以太坊主网发送交易和 personal_sign,Polygon 的 typed-data 签名放在可选区:

    {
      "requiredNamespaces": {
        "eip155": {
          "chains": ["eip155:1"],
          "methods": ["eth_sendTransaction", "personal_sign"],
          "events": ["accountsChanged", "chainChanged"]
        }
      },
      "optionalNamespaces": {
        "eip155": {"chains": ["eip155:137"], "methods": ["eth_signTypedData_v4"], "events": []}
      }
    }

钱包不能擅自补能力

返回 accounts 应采用 CAIP-10,例如 eip155:1:0x…;methods 与 events 必须落在已批准集合。钱包可少给 optional 能力,但不能加入 Dapp 未请求的链或签名方法。调用未批准方法时,Dapp 应收到明确错误并回到重新提案。

用户端核对顺序

先看域名与会话来源,再逐条核对链、账户、可签方法和监听事件;跨链场景分别确认每条链的账户。任务结束后在钱包删除会话,避免长期连接残留。

会话建立后,Dapp 发送请求前还要把 chainId 与 session 中的批准链比较;账户切换或链切换事件只更新现场,不会自动扩展 namespace。收到未授权方法、过期 topic 或不匹配链的错误时,应结束该次调用并发起新的明确授权。

WalletConnect Session Namespaces:先固定不会漂移的判断

  1. WalletConnect会话提案通过requiredNamespaces和optionalNamespaces表达需要或可选的链、方法与事件能力,钱包批准后生成会话namespace。
  2. 会话中的accounts、methods与events必须与批准范围一致;钱包应拒绝不支持的必需能力,并只批准用户实际需要的链和方法。
  3. 会话授权只允许后续发送相应请求,不等于交易或签名已经获批;每次资金或签名动作仍需单独显示内容并由用户确认。(有限确认)

保存WalletConnect Session Namespaces记录时别漏这些字段

保留对象标识、网络、版本、访问时间,以及提案到会话映射、链方法事件矩阵、最小批准流程的原始输入输出。截图辅助说明,结构化字段用于重放。

WalletConnect Session Namespaces:先确定本页覆盖什么

顺序核心问题可执行目标
1提案到会话映射用提案到会话映射直接回答搜索意图并形成可执行核验信息。
2链方法事件矩阵用链方法事件矩阵直接回答搜索意图并形成可执行核验信息。
3最小批准流程用最小批准流程直接回答搜索意图并形成可执行核验信息。
4逐笔确认边界用逐笔确认边界直接回答搜索意图并形成可执行核验信息。

WalletConnect Session Namespaces的证据出处

  • WalletConnect Session Namespaces的一级来源 1:WalletConnect Docs。用于正式字段、流程或产品说明
  • WalletConnect Session Namespaces的一级来源 2:WalletConnect Best Practices。用于实现路径、比较基准或风险边界

与WalletConnect Session Namespaces直接相邻的站内主题

WalletConnect Session Namespaces的当前部署若与文档不一致,应先确认版本再操作。

WalletConnect Session Namespaces:环境变化后的失效点

不同钱包对可选namespace、会话更新和过期处理的界面不同,集成应以协议错误码和实际session状态为准。