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

