DTeam 技术日志

Doer、Delivery、Dream

WalletConnect 非权威开发指南

胡键 Posted at — Sep 8, 2020 阅读

在区块链开发领域,Dapp 和钱包彼此依存,相互需要。按理说,参考传统互联网应用,它俩之间的关系最好就类似普通应用和支付应用之间的关系:

但是,Dapp 内部自己开发一个小型专用钱包的却不在少数。抛开业务特殊性不谈,个人认为导致这一现象的原因在于:集成的复杂度

站在 Dapp 开发的角度,如果不自行开发,就得去集成第三方钱包。考虑到潜在钱包的数量,如果都靠专用 sdk 去集成,工作量可想而知。即便只考虑流行的钱包数量,工作量也不会小。更别提这样还可能导致潜在用户量的影响。

说起钱包 sdk,站在钱包提供商的角度,其实也可以理解。如果只有单纯的简单操作,其价值显然大打折扣。而且,有微信和支付宝珠玉在前,“能被集成”显然可以让自己的产品接触更多的受众。且不说这其中究竟有多少商业价值,单纯从技术人员的自我满足感来讲就值得去干了。

看上去两方都很有道理,那有没有一种两全其美的做法呢?既可以让 Dapp 开发者能快速集成第三方应用,同时又能有一个开放的标准让钱包提供商可以遵循,方便它们的产品被他人集成呢?

答案就是:WalletConnect

通过本文,你将看到:

同时,文末还会简单聊聊它和 Web3Modal 的关系。

什么是 WalletConnect

经过前面的铺垫,想必你应该已经猜到 WalletConnect 的作用了。简单地讲,它实现了钱包和 Dapp 之间的互联互通,一套开放的协议

从使用者角度来讲,支持 WalletConnect 的 Dapp 和钱包给他们带来了类似微信和支付宝的使用体验:

  1. 在需要时,Dapp 显示二维码。
  2. 使用钱包扫描二维码建立连接。
  3. 在钱包侧授权用户请求,完成请求动作。

官网的宣传图很好地体现了这一点,如下图。

WalletConnect

除了体验改善和前文提到的“降低集成门槛”,采用 WalletConnect 还有一个巨大的好处:安全性的提高

何出此言?这是因为:用户不必再为了使用某个 Dapp 就被迫把私钥导入进去。或者退而求其次,创建一堆 Dapp 专用的账户,然后在这些账户之间来回操作,既繁琐,也不见得安全性有质的提高,只是看上去“很安全”。

虽然有 Ethers.js 这样的工具降低了钱包开发的难度,但要想普通 Dapp 对账户管理的安全水平达到专业钱包服务商的水平还是勉为其难。而且,再开发一个内置的钱包不仅增加了工作量,用户还不见得领情。

但是,任何区块链开发者都知道,要想干点啥,账户信息是必需。WalletConnect 很好地解决了这个难题:在不提供私钥信息的情况下,帮助 Dapp 使用者完成其区块链相关操作。下一节会详细说明其技术实现细节。

最后,让我们总结一下以结束本节的内容:

WalletConnect 的技术细节

前面说过,WalletConnect 可以在不提供私钥的前提下帮助 Dapp 用户完成其区块链相关操作。实现这一机制的奥秘就在于其 ”Bridge“ 架构。

WalletConnect Architecture

整个过程并不复杂,Dapp 通过 Bridge Server 将请求传递给钱包,后者完成跟区块链的交互之后将结果原路返回。

当然,我相信仅仅是上面的架构图仍然无法打消你的疑问:

本文是付费文章,剩余内容请访问以下链接支付之后继续阅读:

付费链接 (已付费:10)

相关文章