時(shí)間:2023-07-21|瀏覽:270
文章概覽: - WalletConnect能做什么 - WalletConnect的市場(chǎng)支持情況 - WalletConnect消息通訊工作原理 - WalletConnect消息安全如何保障 - WalletConnect如何快速接入推送
01 WalletConnect能做什么: WalletConnect是一種基于二維碼建立連接的基礎(chǔ)通訊設(shè)施。它可以用于各種交互,并默認(rèn)與以太坊進(jìn)行交互。如果改變默認(rèn)的以太坊協(xié)議,就無(wú)法與其他使用WalletConnect錢包或Dapp進(jìn)行兼容。
在沒(méi)有WalletConnect之前,使用移動(dòng)端錢包的用戶需要使用Chrome插件或桌面端錢包來(lái)授權(quán)操作。這導(dǎo)致在移動(dòng)設(shè)備上使用的用戶操作和使用體驗(yàn)與桌面端不一致,并且需要額外的操作下載插件或錢包,非常麻煩。
02 WalletConnect的市場(chǎng)支持情況: 目前許多常見的錢包都支持WalletConnect,比如imToken、TokenPocket、麥子錢包和TrustWallet。
03 WalletConnect消息通訊工作原理: WalletConnect建立連接的原理是錢包端和Dapp端各自建立一個(gè)主題(Topic),對(duì)方可以訂閱這個(gè)主題,從而形成了雙方之間的通信通道。
具體流程如下: 1. Dapp端與中繼服務(wù)器建立Socket連接; 2. Dapp端生成DappClientID(用于接收來(lái)自Dapp的消息)和DappTopic(用于接收Dapp發(fā)出的登錄請(qǐng)求),并訂閱DappClientID; 3. Dapp端向中繼服務(wù)器發(fā)送DappTopic的信息,并攜帶DappClientID信息; 4. Dapp端展示包含DappTopic信息、中繼服務(wù)器地址和密碼的二維碼; 5. 錢包端掃描Dapp端的二維碼,解析信息并獲取DappTopic、中繼服務(wù)器地址和密碼; 6. 錢包端與中繼服務(wù)器建立Socket連接,生成WalletPeerID(用于接收來(lái)自錢包端的消息),并訂閱DappTopic和WalletPeerID; 7. 錢包端接收到中繼服務(wù)器轉(zhuǎn)發(fā)的Dapp登錄請(qǐng)求; 8. 錢包端處理登錄請(qǐng)求并發(fā)送Topic為DappClientID的消息,將處理結(jié)果和WalletPeerID的信息傳遞回去; 9. 連接建立成功后,如果Dapp要向錢包端發(fā)送消息,則發(fā)送Topic為WalletPeerID的信息; 10. 如果錢包端要向Dapp發(fā)送消息,則發(fā)送Topic為DappClientID的信息。
錢包端和Dapp端的Topic共同組成了Session,而Session的生命周期才是Dapp和錢包雙方建立連接的生命周期。WebSocket的斷開并不意味著與錢包的連接斷開。
04 WalletConnect通訊工作原理: WalletConnect只是一個(gè)通訊協(xié)議,可以用來(lái)傳輸任何信息。默認(rèn)情況下,WalletConnect使用WebHook方式來(lái)實(shí)現(xiàn)推送服務(wù),即在移動(dòng)應(yīng)用未打開的情況下通知用戶處理信息。
如果一方斷開了Socket連接,另一方發(fā)送的消息會(huì)暫存在中繼服務(wù)器中。當(dāng)下次斷開連接的一方 1. 消息接收方將URL和想要接收的消息發(fā)送給消息發(fā)送方; 2. 消息發(fā)送方滿足一定的條件后,會(huì)調(diào)用消息接收方的URL,通知其接收消息。
WalletConnect推送的流程如下: 1. 錢包端收到Dapp的登錄請(qǐng)求后,如果同意登錄請(qǐng)求,可以訂閱Topic為DappClientID和FirebaseID的消息; 2. 推送服務(wù)收到訂閱的Topic后,會(huì)向中繼服務(wù)器發(fā)送WebHook請(qǐng)求以訂閱Topic; 3. 如果中繼服務(wù)器發(fā)現(xiàn)推送服務(wù)訂閱的Topic有消息,會(huì)通知推送服務(wù); 4. 推送服務(wù)找到訂閱相關(guān)Topic的FirebaseID,并發(fā)起推送。
07 總結(jié): WalletConnect是一種通過(guò)掃描QR碼將桌面DApp連接到移動(dòng)設(shè)備的開放性協(xié)議,實(shí)現(xiàn)了端到端加密技術(shù)。它為以前只能在Metamask錢包上使用的DApps世界帶來(lái)了更多可能性。用戶可以在不妨礙私鑰安全的情況下與任何DApp進(jìn)行交互,并能在移動(dòng)設(shè)備上收到通知,簽署并同意任何交易請(qǐng)求。