BitTribeLab2021-07-11 20:00:52
原文标题:《一文读懂 WalletConnect》
文章概览
WalletConnect 能干什么
WalletConnect 的市场支持情况
WalletConnect 消息通讯工作原理
WalletConnect 消息安全如何保障
WalletConnect 如何快速接入推送
01 WalletConnect 能干什么它是⼀个基于⼆维码建立连接的基础通讯设施。你可以在它的基础上去建⽴各种交互,它默认的交互协议都是与以太坊的交互。当然你也可以做能够想象到的各种事,可以不只局限于 Dapp 通讯交互,如果你把默认的以太坊协议改掉,也意味着你将与其他⽀持 WalletConnect 钱包、Dapp 脱离关系,互不兼容。
现在出现了很多针对电脑这种大屏幕的 Dapp 应用,在 WalletConnect 没有出现之前,必须使用Chrome 插件或者桌面端钱包来授权操作,这让原本使用移动端钱包的用户操作和使用习惯出现了割裂感,还需另外操作下载插件或钱包,再将私钥导⼊进去,很麻烦。
02 WalletConnect 的市场支持情况最近较为常见的钱包都在支持,比如:
imToken
TokenPocket
麦子钱包
Trust Wallet
03 WalletConnect 消息通讯工作原理//WalletConnect 建立连接原理
Topic 名词解释:文本意思为“主题”,在 WalletConnect 中钱包端与 Dapp 端各有⼀个 Topic 主题,让对方订阅,这样就形成了⼀个可以相互通信的通道。
Dapp 端与中继服务器建立 Socket 连接;
Dapp 端⽣成 Dapp ClientID(监听该 Topic 会得到发送给 Dapp 的消息),Dapp Topic(监听该Topic 会得到 Dapp 发出的登陆请求),并订阅 Dapp ClientID;
Dapp 端向中继服务器发送 Topic 为 Dapp Topic 的信息,并携带 Dapp ClientID 信息;
Dapp 端展示⼆维码包含 Dapp Topic 信息,中继服务器的地址,密码;
钱包端扫描 Dapp 端的⼆维码,解析出⼆维码信息获得 Dapp Topic,中继服务器地址,密码;
钱包端与中继服务器建立socket 连接,然后产生 Wallet PeerID(监听该 Topic 可以获得发送给钱包端的消息),并订阅 Dapp Topic 和 Wallet PeerID ;
接下来钱包端将接收到中继服务器转发过来的 Dapp 的登陆请求;
钱包端处理是否同意 Dapp 的登陆,发送 Topic 为 Dapp ClientID 的消息,并把处理结果和Wallet PeerID 的信息传递回去;
此时连接建立成功,如果「Dapp」想给「钱包端」发送消息,则发送 Topic 为 Wallet PeerID 的信息即可;
如果「钱包端」想给「Dapp」发送消息,则发送 Topic 为 Dapp ClientID 的信息即可。
钱包端 Topic 和 Dapp 端 Topic 两方共同组成了 Session。WalletConnect 的 Session 生命周期才是 Dapp 与钱包双方建立的连接的生命周期,WebSocket 只是它的“通讯⼯具”,WebSocket 的断开不代表此次与钱包的连接断开。
04 WalletConnect 通讯工作原理WalletConnect 只是⼀套通讯协议,双⽅通信什么信息都可以;
WalletConnect 默认通过 WebHook 的⽅式来⽀持推送服务,你可以在⼿机 App 没有打开的情况下来通知⽤户处理信息;
如果有⼀方 A 断开 Socket 连接,另⼀⽅ B 发送消息会暂存在中继服务中,当下⼀次 A 与中继服务器建⽴ Socket 连接,并订阅相关的 Topic,才会将中继服务暂存的消息发送给 A。
05 WalletConnect 消息安全如何保障使用 AES-256 对称加密来加密通讯的信息,HMAC-SHA256 做 Hash 签名;
Dapp 端⽣成的⼆维码中包含对称加密的密码,⼿机端扫描该⼆维码获得密码,所以 Dapp ⼆维码不会过网传递。
06 WalletConnect 如何快速接入推送//底层做支持的技术 WebHook
WebHook 是⼀种 HTTP 回调:某些条件下触发的 HTTP POST 请求;
WalletConnect 的中继服务中也有这个接受 WebHook URL 的 API 接⼝;
WalletConnect 单独提供了 Firebase 推送服务。
消息接收方将⼀个 URL 和想接收的消息发送给消息发送⽅;
消息发送方达成⼀定的条件,就会去调⽤ 消息接收⽅的 URL,来通知消息接收方接收消息。
//WalletConnect 推送使⽤流程
⼿机端收到 Dapp 的登陆请求,⼿机端如果同意登陆请求,可以使⽤ Topic Dapp ClientID 和Firebase ID 向「推送服务」订阅消息;
「推送服务」收到 Topic 会继续向「中继服务」发送 WebHook 订阅 Topic;
如果「中继服务器」发现「推送服务」订阅的 Topic 有信息,它就会通知「推送服务」;
「推送服务」找到订阅相关 Topic 的 fitebase ID 发起推送。
07 总结
WalletConnect 是⼀种通过扫描 QR 码使⽤端到端加密技术将桌⾯ DApp 连接到移动设备的开放性协议。它开启了整个曾经只有Metamask 钱包可⽤的 DApps 世界。⽤户可以在不损害其私钥安全的情况下与任何 DApp 交互,并能在其移动设备上收到通知,签字同意任何交易请求。
以太坊Layer 2必知必会2023-04-26 15:03:27
浅析NFT未来:仅少数项目上涨 出圈项目会成赢家2023-04-26 14:15:26
E-CNY时代来临:当你的工资成为数字人民币2023-04-26 12:43:48
浅谈为什么MEV搜索者矿池并不可行?2023-04-26 12:08:40
"庄家"互撕 曝出加密巨头拉的那些"帮派"2023-04-26 11:59:08
怎样到达Web3世界:使用Web3技术的公司及集成到业务的步骤2023-04-26 11:53:15
稳定币项目 HAI、Starknet 2023 路线图2023-04-26 11:46:35
ChatGPT类产品安全隐患解决?英伟达发布开源工具包2023-04-26 11:26:24
蚂蚁集团发布HOU、AntChainBridge、Web3开放联盟链等多个Web3产品2023-04-26 11:24:46
ChatGPT背后的算力博弈 中国企业亟待打破美国桎梏2023-04-26 10:59:28
简析DWF Labs:出手频繁 颇具争议的加密做市商2023-04-26 10:48:45
NFT 交易平台生存现状研究:后版税战争时代下的龙头之争2023-04-26 09:20:51
以太坊提款功能开启后的带宽使用情况2023-04-26 08:30:24
上海升级提款效应:数据揭示 LSD 项目们的表现2023-04-26 07:28:37
3分钟读懂基于LayerZero的多链抗MEV DEX聚合器Cashmere2023-04-25 20:05:34
对话去中心化流动性质押协议Rocket Pool:如何促进以太坊Staking民主化?2023-04-25 19:02:21
Bankless:欧美都想监管稳定币 他们怎么做?2023-04-25 17:43:44
Coinbase起诉SEC全文:请在合理时间内回应加密规则请愿书2023-04-25 16:43:34
慢雾:Web3 假钱包第三方源调查分析2023-04-25 15:43:36
Binance Sensei介绍:您的Web3 AI导师2023-04-25 13:20:55