誰開啟了曾經只有 Metamask 錢包可用的 DeFi 世界?一文讀懂 Wallet Connect 工作原理 - 冷萃財經

誰開啟了曾經只有 Metamask 錢包可用的 DeFi 世界?一文讀懂 Wallet Connect 工作原理

誰開啟了曾經只有 Metamask 錢包可用的 DeFi 世界?一文讀懂 Wallet Connect 工作原理

原文標題:《一文讀懂 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 主題,讓對方訂閱,這樣就形成了⼀個可以相互通信的通道。

誰開啟了曾經只有 Metamask 錢包可用的 DeFi 世界?一文讀懂 Wallet Connect 工作原理

誰開啟了曾經只有 Metamask 錢包可用的 DeFi 世界?一文讀懂 Wallet Connect 工作原理

  1. Dapp 端與中繼伺服器建立 Socket 連接;

  2. Dapp 端⽣成 Dapp ClientID(監聽該 Topic 會得到發送給 Dapp 的消息),Dapp Topic(監聽該Topic 會得到 Dapp 發出的登陸請求),並訂閱 Dapp ClientID;

  3. Dapp 端向中繼伺服器發送 Topic 為 Dapp Topic 的信息,並攜帶 Dapp ClientID 信息;

  4. Dapp 端展示⼆維碼包含 Dapp Topic 信息,中繼伺服器的地址,密碼;

  5. 錢包端掃描 Dapp 端的⼆維碼,解析出⼆維碼信息獲得 Dapp Topic,中繼伺服器地址,密碼;

  6. 錢包端與中繼伺服器建立socket 連接,然後產生 Wallet PeerID(監聽該 Topic 可以獲得發送給錢包端的消息),並訂閱 Dapp Topic 和 Wallet PeerID ;

  7. 接下來錢包端將接收到中繼伺服器轉發過來的 Dapp 的登陸請求;

  8. 錢包端處理是否同意 Dapp 的登陸,發送 Topic 為 Dapp ClientID 的消息,並把處理結果和Wallet PeerID 的信息傳遞迴去;

  9. 此時連接建立成功,如果「Dapp」想給「錢包端」發送消息,則發送 Topic 為 Wallet PeerID 的信息即可;

  10. 如果「錢包端」想給「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 消息安全如何保障

  1. 使用 AES-256 對稱加密來加密通訊的信息,HMAC-SHA256 做 Hash 簽名;

  2. Dapp 端⽣成的⼆維碼中包含對稱加密的密碼,⼿機端掃描該⼆維碼獲得密碼,所以 Dapp ⼆維碼不會過網傳遞。

06 WalletConnect 如何快速接入推送

//底層做支持的技術 WebHook

  • WebHook 是⼀種 HTTP 回調:某些條件下觸發的 HTTP POST 請求;

  • WalletConnect 的中繼服務中也有這個接受 WebHook URL 的 API 接⼝;

  • WalletConnect 單獨提供了 Firebase 推送服務。

  • 誰開啟了曾經只有 Metamask 錢包可用的 DeFi 世界?一文讀懂 Wallet Connect 工作原理

  1. 消息接收方將⼀個 URL 和想接收的消息發送給消息發送⽅;

  2. 消息發送方達成⼀定的條件,就會去調⽤ 消息接收⽅的 URL,來通知消息接收方接收消息。

 //WalletConnect 推送使⽤流程

  1. ⼿機端收到 Dapp 的登陸請求,⼿機端如果同意登陸請求,可以使⽤ Topic Dapp ClientID 和Firebase ID 向「推送服務」訂閱消息;

  2. 「推送服務」收到 Topic 會繼續向「中繼服務」發送 WebHook 訂閱 Topic;

  3. 如果「中繼伺服器」發現「推送服務」訂閱的 Topic 有信息,它就會通知「推送服務」;

  4. 「推送服務」找到訂閱相關 Topic 的 fitebase ID 發起推送。

誰開啟了曾經只有 Metamask 錢包可用的 DeFi 世界?一文讀懂 Wallet Connect 工作原理07 總結

WalletConnect 是⼀種通過掃描 QR 碼使⽤端到端加密技術將桌⾯ DApp 連接到移動設備的開放性協議。它開啟了整個曾經只有Metamask 錢包可⽤的 DApps 世界。⽤戶可以在不損害其私鑰安全的情況下與任何 DApp 交互,並能在其移動設備上收到通知,簽字同意任何交易請求。

冷萃財經原創,作者:awing,轉載請註明出處:https://www.lccjd.top/2021/07/12/%e8%b0%81%e5%bc%80%e5%90%af%e4%ba%86%e6%9b%be%e7%bb%8f%e5%8f%aa%e6%9c%89-metamask-%e9%92%b1%e5%8c%85%e5%8f%af%e7%94%a8%e7%9a%84-defi-%e4%b8%96%e7%95%8c%ef%bc%9f%e4%b8%80%e6%96%87%e8%af%bb%e6%87%82-w-2/?variant=zh-tw

0

掃一掃,分享到微信

猜你喜歡

文章評論

電子郵件地址不會被公開。 必填項已用*標註

後發表評論

    上一篇

    歐洲央行行長Christine Lagarde:全球至少有80家央行希望採用 CBDC

    下一篇

    AnySwap多鏈路由V3 漏洞攻擊技術分析和解決方案

    微信公眾號

    微信公眾號