首页 > 解决方案 > NFT 能否用于 Web 应用的身份验证

问题描述

NFT 可以用作身份验证的手段吗?场景是用户购买了 NFT(ERC721),现在他访问了使用此令牌进行身份验证的网站,所以我猜测网站上的 web3.js 会检查用户的钱包,如果他的钱包中有令牌,然后可以访问该网站。 ...但是服务器端调用呢...服务器可以检查分类帐以查看谁拥有令牌,但是它如何知道进行调用的人是否是所有者..地址可以被欺骗,因此通过调用发送它是没有问题的。同样,如果用户现在出售他的代币,新用户拥有它

我在想数字签名之类的东西,但是如何获取所有者的公钥,并且要求用户签署消息很麻烦……我很菜鸟我知道什么,但是所以要求我在寻求答案之前尝试回答我的问题一些代码是每个帖子的要求

pragma solidity ^0.4.22;contract helloWorld {
 function renderHelloWorld () public pure returns (string) {
   return 'helloWorld';
 }
}

标签: ethereumsoliditysmartcontracts

解决方案


检查查看者是否拥有拥有令牌的地址是不够的。您需要通过要求他们签署消息来确认查看者控制了地址。

像这样的一个系统称为MetaKey

如果你想与后端协调会话,你需要做额外的工作,因为 NFT 可以转移。当 NFT 被转移时,你需要撤销会话密钥,这需要你监控区块链的转移事件。

不过,我不建议围绕 NFT 构建登录基础设施。避免安全漏洞将非常困难或不可能。最好使用钱包签名对人进行身份验证。有许多在线教程可用于构建此流程,例如这里


推荐阅读