📢 Gate广场 #NERO发帖挑战# 秀观点赢大奖活动火热开启!
Gate NERO生态周来袭!发帖秀出NERO项目洞察和活动实用攻略,瓜分30,000NERO!
💰️ 15位优质发帖用户 * 2,000枚NERO每人
如何参与:
1️⃣ 调研NERO项目
对NERO的基本面、社区治理、发展目标、代币经济模型等方面进行研究,分享你对项目的深度研究。
2️⃣ 参与并分享真实体验
参与NERO生态周相关活动,并晒出你的参与截图、收益图或实用教程。可以是收益展示、简明易懂的新手攻略、小窍门,也可以是行情点位分析,内容详实优先。
3️⃣ 鼓励带新互动
如果你的帖子吸引到他人参与活动,或者有好友评论“已参与/已交易”,将大幅提升你的获奖概率!
NERO热门活动(帖文需附以下活动链接):
NERO Chain (NERO) 生态周:Gate 已上线 NERO 现货交易,为回馈平台用户,HODLer Airdrop、Launchpool、CandyDrop、余币宝已上线 NERO,邀您体验。参与攻略见公告:https://www.gate.com/announcements/article/46284
高质量帖子Tips:
教程越详细、图片越直观、互动量越高,获奖几率越大!
市场见解独到、真实参与经历、有带新互动者,评选将优先考虑。
帖子需原创,字数不少于250字,且需获得至少3条有效互动
Solana Token实现身份认证:NFT作为Web3注册凭证探索
探索使用 Solana Token 实现身份认证
NFT 作为一种不可替代的代币,非常适合用作身份认证工具。本文将通过一个简单示例,探讨使用 NFT 作为注册凭证的可行性。
前言
在开始之前,先介绍一下将要用到的工具。
SPL Token
我们可以直接使用 Solana 提供的通用实现:Token Program。Token Program 属于 Solana Program Library(SPL)的一部分,SPL 提供了包括 Token、Swap、Memo 在内的多个常用程序实现,并提供了完善的客户端库、CLI 等工具,极大方便了 Solana 开发者。
Solana Playground
Solpy 提供了一个在线编写和部署 Solana 合约的环境,默认包含一些常用工具,如 SPL Token。我们可以通过 spl-token-cli 方便地创建和管理 Token。
Auth Token
在这部分,我们会创建一个 NFT Token。如果用户 Mint 了该 Token,则认为该钱包地址已在系统中注册,否则提示用户先进行注册。
现在开始 On-chain 部分:
创建 Token
使用 spl-token 创建一个新的 token,通过 --decimals 指定它是一个不可分割的 Token(类似 NFT):
spl-token create-token --decimals 0
输出日志中的 Mint Address 就是我们创建的 Token 的 ID。
创建 Token Account
为上一步创建的 Token 创建一个 Token Account:
spl-token create-account <token_mint_address>
Mint Token
尝试为刚创建的 Token Account mint 一个 Token unit:
spl-token mint <token_mint_address> 1
也可以直接给一个钱包地址 mint token:
spl-token mint <token_mint_address> 1 <wallet_address>
为钱包地址 Mint
如果要为某个钱包地址铸造 Token,需要先为该地址创建 Token Account,然后使用创建的 Token Account mint 新的 Token unit。
为钱包地址创建 Token Account:
spl-token create-account <token_mint_address> --owner <wallet_address>
获取 Token Account
通过 RPC 接口的 getTokenAccountsByOwner 方法,可以查询某个钱包地址是否有 Mint 过我们创建的 NFT。
实现
接下来,我们通过创建一个简单的 Nextjs 项目来实现功能,使用 Ant Design Web3 来连接钱包。
初始化 Nextjs 项目:
npx create-next-app@latest
添加相关依赖:
npm install @ant-design/web3 @ant-design/web3-solana @solana/spl-token
创建 sign-in 和 sign-on 页面,分别用于连接钱包检查用户是否注册,以及让用户进行注册流程。
在 sign-in 页面,系统会根据连接的钱包地址查找关联的 Token Account。如果找不到数据,则认为该钱包地址未注册。
sign-on 页面会为用户创建 Token Account 并 Mint Token,作为用户已注册的凭证。
总结
我们使用 spl-token-cli 创建了一个 NFT,然后通过判断钱包地址是否有 Token Account 并 Mint 过 Token 来判断是否注册。
当 Web3 用户连接钱包时,系统会自动创建 Token Account 并 Mint Token 作为注册凭证。之后用户就可以使用同样的钱包地址再次登录网站。