
WalletConnect是一个开源的标准,用于连接桌面dApps和移动钱包。该系统由4个部分组成,允许桌面应用或网络应用之间的互动,不需要安装任何浏览器扩展程序,也不需要任何硬件,不包括其任何部分的安全性。
WalletConnect是一个简单的解决方案,它在基于浏览器的Dapps和移动钱包之间架起了沟通的桥梁,使用QR码来建立初始连接。它是一个开放的协议,不要求Dapp用户安装浏览器扩展。该协议与用户可能想要使用的特定移动钱包无关,并使Dapp开发者能够通过单一的实现方式与多个钱包整合。
WalletConnect是一个简单的解决方案,它在基于浏览器的Dapps和移动钱包之间架起了沟通的桥梁,使用QR码来建立初始连接。它是一个开放的协议,不要求Dapp用户安装浏览器扩展。该协议与用户可能想要使用的特定移动钱包无关,并使Dapp开发者能够通过单一的实现方式与多个钱包整合。
- 使用户能够在Dapps中使用他们的手机钱包,而不需要安装浏览器扩展
- 让用户能够使用他们选择的钱包,而不用担心哪些Dapp已经与哪些钱包整合了
- 简化Dapp开发者的钱包整合,而不是要求他们单独整合每个钱包
- 为Dapp开发者提供灵活性,让他们可以选择使用哪个钱包连接桥接服务器来与移动钱包进行通信
- 为移动钱包开发者提供控制,使其了解如何向其用户发送推送通知
Walletconnect 连接设计
设计的4个部分包括。
- 桌面dApp
移动钱包
桥接服务器
推送服务器
前两个是不言自明的,它们包括一个作为Dapp前端的桌面应用或网络应用,以及一个作为钱包的移动应用,管理和存储用户账户的私钥。
后两者对这一设计至关重要,任何人都可以设置,不需要对单一的Dapp或钱包作出任何承诺。 然而,桥接服务器由Dapp开发团队设置,推送服务器由钱包开发团队设置,这是比较合理的。
桥接服务器的唯一目的是在Dapp和钱包之间传递数据,将其暂时存储在一个会话ID下,而不知道所传递数据的内容。
推送服务器的唯一目的是触发移动钱包设备的推送通知,而不分享Android或iOS平台推送通知服务所要求的秘密。
后两者对这一设计至关重要,任何人都可以设置,不需要对单一的Dapp或钱包作出任何承诺。 然而,桥接服务器由Dapp开发团队设置,推送服务器由钱包开发团队设置,这是比较合理的。
桥接服务器的唯一目的是在Dapp和钱包之间传递数据,将其暂时存储在一个会话ID下,而不知道所传递数据的内容。
推送服务器的唯一目的是触发移动钱包设备的推送通知,而不分享Android或iOS平台推送通知服务所要求的秘密。
Walletconnect互动
当使用Dapp时,从根本上说,有3种互动需要用户的钱包。 这些是获取账户、发送交易和签署信息。 后两者本质上是相同的,Dapp提供一些数据,由用户在钱包上签名,并分别返回一个签名的交易ID或签名的消息。 因此,我们可以将其简化为签署请求形式的单一互动。 然而,我们需要一个初始交互来创建Dapp和钱包之间的通信。
与WalletConnect有3个交互。
与WalletConnect有3个交互。
- 会话创建。 为了创建会话,Dapp必须事先知道Bridge URL,你可以按照设置Bridge服务器的教程来设置你自己的URL。现在你有一个桥接URL,会话创建工作如下。(a) 桌面Dapp请求桥接服务器创建会话ID (b) 桌面Dapp生成一个短暂的共享密钥 (c) 桌面Dapp使用QR码共享会话数据 (d) 移动钱包扫描QR码以获得会话数据
- 获得账户。 在这一点上,桌面Dapp和移动钱包现在都有必要的会话数据来相互通信。因此,我们可以进行第一个基本的互动,获取账户:(a)移动钱包用共享密钥加密用户的账户(b)移动钱包使用会话ID将其发送到桥接服务器(c)桌面Dapp监听这一变化并获取加密的账户(d)桌面Dapp用共享密钥解密用户的账户
- 签署请求。Dapp现在可以根据用户的账户向其显示信息。最终,当需要时,Dapp将要求用户签署交易或信息,这给我们带来了第二个互动。签署请求。(a) 桌面Dapp用共享密钥将数据加密成签名请求 (b) 桌面Dapp用会话ID将签名请求发送到桥接器 (c) 桥接器服务器触发推送服务器的推送通知 (d) 移动钱包从桥接器服务器获取签名请求数据 (e) 移动钱包用共享密钥解密签名请求 (f) 移动钱包向用户显示签名请求是否被签名 (g) 移动钱包分享用户对签名请求的回应。该请求要么被批准(带有交易ID或签名信息),要么被拒绝。
支持Walletconnect协议的钱包
- Trust
- Metamask
- Pillar
- Gnosis Safe
- Walleth
- Tokenary
- Argent
- Rainbow
- Safepal
- Equal
- Coinomi
- Gridplus
- CoolWallets
- Atomic
- Authereum