Solana 网站接入Sollet/Phantom钱包连接功能的实现步骤咨询
Solana生态浏览器扩展钱包的连接逻辑和Metamask的核心逻辑基本一致,二者都是通过钱包向浏览器window对象注入专属provider实例来完成和网页的交互,学习成本很低,你可以直接迁移你做Metamask适配时的思路。
二者核心逻辑的对齐点
- 检测逻辑一致:页面加载完成后先校验
window对象上是否有对应钱包注入的实例即可判断用户是否安装钱包,Metamask对应window.ethereum,Phantom对应window.solana,Sollet对应window.sollet - 授权逻辑一致:点击连接按钮后调用provider暴露的授权方法即可唤起钱包的授权弹窗,Metamask调用的是
eth_requestAccounts方法,Solana系钱包大多直接调用connect()方法,授权通过后即可拿到用户的公钥地址 - 后续交互逻辑一致:签名、发送交易等操作,都是调用provider上的对应方法,传入构造好的交易/消息实例即可完成,和Metamask的交互流程没有本质区别
快速落地步骤
- 先做钱包检测:页面加载完成后遍历
window对象上的Solana钱包标识,判断用户已安装的可用钱包,渲染对应连接按钮 - 再写连接逻辑:给连接按钮绑定点击事件,调用对应钱包provider的
connect()方法,处理成功/异常回调,授权成功后把钱包公钥、provider实例存在页面状态里即可 - 加授权持久化:Solana系钱包大多支持静默授权,下次用户进入页面时可以调用
connect({ onlyIfTrusted: true }),用户之前授权过的话不需要再次点击弹窗就能直接拿到连接状态 - 如果需要一次性适配多个Solana钱包,不用单独写每个钱包的适配逻辑,可以用官方维护的通用钱包适配库,封装了所有主流Solana钱包的注入差异,几行代码就能完成多钱包接入
内容的提问来源于stack exchange,提问作者jeeberjoe
相关产品推荐
相关产品推荐

