5分钟看懂 Web3.0 钱包签名登录

文章目录

流程

  1. 前端调用随机数接口nonce,传入一个用户钱包地址。
    • 比如说用户安装了MateMask浏览器插件,通过MetaMask API可以获取用户钱包地址address。
    • 随机生成一个随机数,通过SIWEMessage(Signed-In with Ethereum)封装,传入address等信息,将SIWEMessage保存到Redis中【钱包address作为key,siwe.toMessage()作为value】。返回前端SIWEMessage,这个message就是前端要签名的文本。
  2. 前端通过ethers.js【专门和以太坊区块链交互】 API 验证message,通过MetaMask中获取的用户私钥,会生成签名signature。
  3. 前端调用login接口,传入我们的address和signature。
    • 根据address从Redis中拿出SIWEMessage,利用签名和SIWEMessage得到公钥,使用公钥获得address,如果address和我们传入的钱包地址一致,说明登录成功。

PS:MetaMask是做什么的?

Web3钱包,钱包中保存了自己的公钥和私钥信息,私钥用于签名,证明是你在进行当前行为,公钥用于验证,验证是本人的操作。

解释

如果之前没有接触过这方面的东西,这样只看流程肯定是很困难的,这里我想到了一个很好的例子可以解释:

比如我们的网站就是一个私人俱乐部,那么门口有一个保安需要验证我们(前端、用户)的身份,保安就是我们的后端服务。

我们手里有一个会员卡(MetaMask 钱包 / 其他ETH钱包),保存了自己的公钥和私钥,当然还有钱包地址。

这时我们想要进入俱乐部,我们给保安展示了钱包地址,保安(后端)使用钱包地址给我们生成了一个带有随机编号【这个随机编号是为了防止别人模仿】的纸条(纸条就是我们的SIWE消息,封装了nonce、address、chainId等信息),并且会把纸条内容放到Redis。

我们拿到这个纸条,如果你确实想要进入,需要你使用私钥确认(实际是调用ethers.js操作),确认后我们会得到一个签名signature。

保安拿到你的签名和钱包地址,通过钱包地址从Redis中拿出纸条,利用拿出来的纸条和签名,通过椭圆曲线数字签名算法(ECDSA) 可以恢复公钥,通过公钥可以获得公钥的address。最后将通过公钥获得的address和你的钱包地址进行对比,如果相同,我们就可以执行后续的登录逻辑了。

图示

最后·,自己画了一个图,大家可以看一看:

在这里插入图片描述

  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 目前,Web3.0 的概念和具体实现尚未确定。Web3.0 通常被认为是指基于区块链技术的分布式互联网,其中用户拥有自己的数据和隐私,并能够实现去中心化的应用和服务。 由于 Web3.0 尚未正式发布,因此目前并没有可供演示的 Demo。不过已经有一些基于区块链技术的去中心化应用正在开发和测试中,例如去中心化交易所(DEX)和去中心化身份验证(DID)等。 ### 回答2: Web3.0是指下一代互联网的演变阶段,强调在互联网上实现去中心化、智能化和个人所有权的理念。Web3.0 Demo是一个展示Web3.0概念和技术的演示项目。 Web3.0 Demo通常包括以下几个方面的内容: 首先,Demo展示了去中心化的特性。传统互联网的中心化特征使得数据和服务由少数巨头公司垄断,而Web3.0 Demo通过使用区块链技术,实现了去中心化的数据存储和控制。用户可以自己拥有和掌控自己的数据,不再需要依赖于中心化的服务提供商。 其次,Demo展示了智能合约的应用。智能合约是基于区块链技术的可编程合约,能够自动执行和强制执行合约条款。Web 3.0 Demo通过展示智能合约的应用场景,如去中介化的交易、自动化的支付等,使用户体验到智能合约的便捷和安全性。 此外,Demo还可以展示Web3.0下的网页设计和用户体验。Web3.0的网页设计更加注重个性化和用户权限控制。用户可以根据自己的偏好定制网页的外观和功能,同时也可以对自己的数据和权限进行精确管理,保护个人隐私和安全。 综上所述,Web3.0 Demo是一个展示未来互联网发展趋势和技术特点的演示项目,通过展示去中心化、智能化和个人所有权等特征,让用户更好地了解和体验Web3.0的概念和应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sivan_Xin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值