[{"data":1,"prerenderedAt":19},["ShallowReactive",2],{"blog-content-zh-what-is-walletconnect":3},{"slug":4,"title":5,"excerpt":6,"description":7,"bodyHtml":8,"faqItems":9},"what-is-walletconnect","什么是 WalletConnect？扫码钱包会话的工作原理（以及如何断开）","WalletConnect 是你扫码把钱包连接到 dApp 时背后的协议。本文说明这一扫究竟建立了什么、一个会话能做什么与不能做什么，以及如何安全地检查并结束会话。","用大白话讲清 WalletConnect 会话的运作方式：二维码里编码了什么、dApp 会请求哪些权限，以及如何检查并撤销处于活动状态的连接。","\u003Cblockquote>WalletConnect 是一个消息传递协议，负责在 dApp 与钱包之间传递加密消息，让 dApp 能够请求签名，却始终接触不到你的私钥。扫描它的二维码只会建立一次配对；批准 dApp 的会话提案之后，才会创建一个会话，列出它可以请求的链与方法——那是发问的权限，不是动手的权限；任何资产转移依然需要你亲自签名。断开连接只会在本地结束会话，并不会撤销链上的代币授权。在 WATS 上，会话在 WATS Mobile App 中批准。\u003C\u002Fblockquote>\u003Ch2>WalletConnect 到底是什么（又不是什么）\u003C\u002Fh2>\u003Cp>WalletConnect 是一个消息传递协议。它唯一的职责就是在 dApp 与钱包之间传递消息，让两者能够沟通，而 dApp 始终接触不到你的私钥。当某个网站显示一个二维码并提示\u003Cem>连接钱包\u003C\u002Fem>时，那个码通常就是一份 WalletConnect 配对邀请。\u003C\u002Fp>\u003Cp>它不是钱包，不是托管方，也不是区块链：它不持有任何资金，也不做任何签名。它同样不是浏览器扩展——扩展是把 provider 直接注入页面。人们最熟悉它的跨设备场景——截至 2026 年，手机钱包与桌面端 dApp 通信仍以这种方式最为常见——但它同样是标准的同设备路径，通过深度链接把手机浏览器里的 dApp 唤起到同一部手机上的钱包应用。\u003C\u002Fp>\u003Ch2>扫码的那一刻发生了什么\u003C\u002Fh2>\u003Cp>二维码里编码的是一条配对 URI：一个 topic 标识符、一个中继协议标识符和一把对称密钥。这把密钥是原样传递的，而不是由钱包推导出来的——正因如此，泄露或被截图的配对 URI 是敏感信息。随后双方便在该配对 topic 上交换加密消息。\u003C\u002Fp>\u003Cp>配对只是握手。承载每一笔签名请求的会话运行在一个\u003Cem>独立的\u003C\u002Fem> topic 上，使用的是 dApp 与钱包通过 X25519 交换、再经 HKDF 扩展直接协商出的专属密钥。配对密钥只保护配对层级的消息，永远不涉及你的交易请求。\u003C\u002Fp>\u003Cp>人们最容易误解的是中继：它只路由密文和元数据，无法读取载荷、无法篡改，也无法代你签名。中继宕机会让会话失效，但你的资金毫发无损——你的密钥从未离开设备。接着 dApp 会发出一份会话提案，你的钱包把它渲染成一个授权确认页面；此后发生的一切，都取决于你批准了什么。逐步点击的完整流程见我们的指南：\u003Ca href=\"\u002Fblog\u002Fhow-to-connect-wallet-to-dapp\">如何把钱包连接到 dApp\u003C\u002Fa>。\u003C\u002Fp>\u003Ch2>会话、命名空间与权限：dApp 能要求什么\u003C\u002Fh2>\u003Cp>会话提案是结构化的，而不是自由填写的。它会列出\u003Cem>命名空间\u003C\u002Fem>：dApp 想要的链、方法和事件——以太坊主网、某条 L2 或 Solana；交易签名与结构化数据（typed data）签名；chain-changed 与 accounts-changed 事件。\u003C\u002Fp>\u003Cp>注意方向：链、方法和事件由 dApp 请求，而账户本身是在你的钱包里选定、并在授权时返回给对方的。v2 的划分同样重要。\u003Cem>Required\u003C\u002Fem>（必需）命名空间是全有或全无——要么完整满足，要么提案被直接拒绝——但截至 2026 年这已是遗留路径，已被弃用且不再推荐，取而代之的是\u003Cem>optional\u003C\u002Fem>（可选）命名空间，钱包可以只批准其中一部分。好的钱包会把两者都展示给你，让你清楚哪些是可以商量的。\u003C\u002Fp>\u003Cp>批准一个会话会做两件事：把你在已批准链上的公开地址共享出去，并授予 dApp 就已批准方法\u003Cstrong>发送请求\u003C\u002Fstrong>的权限。有权发问，不等于有权动手。\u003C\u002Fp>\u003Ch2>签名请求：连接为什么不等于授权\u003C\u002Fh2>\u003Cp>会话一旦建立，每一个有实质影响的操作都会作为一条单独的请求送达，必须由你明确批准：兑换会变成一笔交易请求，登录会变成一条消息签名请求，市场挂单会变成一份结构化数据签名。\u003C\u002Fp>\u003Cp>这才是真正重要的安全边界。已连接的 dApp 无法悄无声息地转走你的资产：那需要签名，而签名需要你的设备和你的批准。它\u003Cem>能\u003C\u002Fem>做的，是抛出一条具有误导性、后果在屏幕上并不一目了然的请求。\u003C\u002Fp>\u003Cp>有两类请求值得格外警惕：一是代币授权（approval），它赋予某个合约持续花费某种代币的权限，即使会话早已结束依然有效；二是链下签名——就是那种不消耗 gas 的——它可能授权一笔订单或一份许可，供合约日后兑现。两者看上去都毫不起眼。\u003C\u002Fp>\u003Ch2>WalletConnect 出问题的地方：陈旧会话、假二维码与盲签\u003C\u002Fh2>\u003Cp>\u003Cstrong>陈旧会话。\u003C\u002Fstrong>会话是有有效期的，但人们往往积攒了几十个仍然有效的连接，指向那些只用过一次的网站。每一个都是一条随时可以向你钱包推送请求的通道——也就是更多让人误批准的攻击面。\u003C\u002Fp>\u003Cp>\u003Cstrong>伪造或被调包的二维码。\u003C\u002Fstrong>控制了页面的攻击者——仿冒域名、被劫持的前端——可以把自己的配对 URI 显示出来，取代真正的那个。你连接成功了，只不过连的是他们。这正是我们在\u003Ca href=\"\u002Fblog\u002Fwhat-is-a-wallet-drainer\">钱包吸金器如何运作\u003C\u002Fa>一文中拆解的陷阱：连接确实成功，伤害发生在紧随其后的签名请求里。\u003C\u002Fp>\u003Cp>\u003Cstrong>盲签。\u003C\u002Fstrong>如果你的钱包无法解码一条请求、只能显示原始数据，那你就是在相信该网站对自己交易的一面之词。请把它当作停下来的理由，而不是走个过场。\u003C\u002Fp>\u003Ch2>如何检查并断开活动会话（以及为什么授权是另一回事）\u003C\u002Fh2>\u003Cp>每一个支持 WalletConnect 的钱包都会保留一份活动会话列表，通常在“连接”或“已连接应用”里。请把它当成一份清单来读：每一条都写明了 dApp 的名称，以及它能看到的链和账户。\u003C\u002Fp>\u003Cp>断开连接不花一分钱：你的钱包会通过中继发布一条会话删除消息，并从自身状态中移除该会话——没有交易、没有 gas、没有链上记录。不过要把这种拆除视为“尽力而为”：如果对端离线或中继不可达，dApp 可能会一直把该会话当作有效，直到消息送达或会话过期。\u003C\u002Fp>\u003Cp>最容易让人栽跟头的一点：\u003Cem>断开会话并不会撤销代币授权\u003C\u002Fem>。会话权限存在于你钱包的本地状态里；代币授权则存在于链上，由你签署的一笔交易授予。结束会话只能阻止新的请求，额度（allowance）依然原封不动——撤销它是链上的另一个独立步骤，详见我们的操作说明：\u003Ca href=\"\u002Fblog\u002Fhow-to-revoke-token-approvals\">如何撤销代币授权\u003C\u002Fa>。两件事都要做。\u003C\u002Fp>\u003Ch2>WATS 如何处理 dApp 连接\u003C\u002Fh2>\u003Cp>在 WATS 上，WalletConnect 会话由 WATS Mobile App 处理：它负责扫描二维码，并把每一份提案和签名请求渲染到你的手机上等待批准。在 WATS 的每一款产品上，托管方式都是一样的，包括 \u003Ca href=\"\u002Fhot-wallet\">WATS Hot Wallet\u003C\u002Fa>——密钥由你自己掌握，WATS 从不持有任何密钥，因此任何已连接的 dApp 都无法在没有你签名的情况下动用资金。\u003C\u002Fp>\u003Cp>不同之处在于手续费层。每一次操作——转账、兑换、质押——都以单一代币 ATS 计费，用来替代链上的原生 gas：在 EVM 上通过 ERC-4337 paymaster，在 Solana 与 TON 上通过等效的 fee-payer\u002Frelayer 机制。由于 ATS 是 LayerZero OFT，一份余额即可覆盖这三大生态。收取的 ATS 会被销毁，从 100,000,000 逐步趋向 30,000,000 的下限。WATS 是首个且唯一将 ERC-4337 + OFT 单一代币手续费（以其替代原生 gas 收取）与该销毁机制结合起来的钱包。\u003C\u002Fp>",[10,13,16],{"q":11,"a":12},"通过 WalletConnect 连接钱包，会让 dApp 拿到我的资金吗？","不会。会话只让 dApp 看到你在已批准链上的公开地址，并向你发送请求。任何转移资产的操作都需要你在自己的设备上批准签名，所以仅凭一个连接无法花掉任何东西。在 WATS 上，这些提案与签名请求会渲染到 WATS Mobile App 中等待你批准；而且由于 WATS 从不持有任何密钥，任何已连接的 dApp 都无法在没有你签名的情况下动用资金。",{"q":14,"a":15},"断开 WalletConnect 会话会撤销代币授权吗？","不会，这是两回事。会话存在于你钱包的本地状态中，你在钱包里断开的那一刻它就结束了，且不消耗 gas。代币授权存在于链上的代币合约中，会一直有效，直到你发送一笔撤销交易。",{"q":17,"a":18},"WalletConnect 的中继服务器能读取我的交易或窃取我的密钥吗？","不能。在 WalletConnect v2 中，承载你的交易与签名请求的会话，是用 dApp 与你的钱包通过 X25519 交换直接协商出的密钥加密的——这把密钥从不暴露给中继。配对 URI 中携带的那把对称密钥只保护配对层级的消息。中继只路由密文和元数据，而在整个流程中，你的私钥从未离开过你的钱包。",1786059402370]