Web3新手系列:探索使用Solana Token登录

Odaily星球日报發佈於 2025-01-16更新於 2025-01-16

文章摘要

NFT (non-fungible token) 作为一个正如其名字所指的“不可替代”的代币,非常适合用于作为一种身份认证工具。

NFT (non-fungible token) 作为一个正如其名字所指的“不可替代”的代币,非常适合用于作为一种身份认证工具。

接下来,让我们通过一个简单的例子,来探索一下使用 NFT 作为注册凭证的可行性。

前言

在开始之前,先让我来介绍接下来会用到的工具。

SPL Token

我们可以自己从零开始编写新的 Solana 合约,不过对于我们目前想要达到的目的来说,可以直接使用 Solana 提供的通用实现:Token Program。

Token Program 属于 Solana Program Library(SPL,https://spl.solana.com/)的一部分,SPL 中提供了包括 Token、Swap、Memo 的多个常用程序实现,并且提供了完善的客户端库、CLI 等工具,极大的方便了 Solana 开发者。

Token Program 的项目源码位于:https://github.com/solana-labs/solana-program-library/tree/master/token/program

Solana Playground

Solpy (https://beta.solpg.io/) 提供了一个线上编写和部署 Solana 合约的环境,并且默认包含了一些常用的工具,上一节介绍的 SPL Token 也在其中。可以让我们通过 spl-token-cli 方便的创建并管理 Token。

Auth Token

在这部分,我们会创建一个 NFT Token。如果用户 Mint 了 Token,那么就认为这个钱包地址已经在我们的系统中注册了,反之则提示用户先进行注册。

现在,我们先开始 On-chain 部分:

创建 Token

我们使用 spl-token 来创建一个新的 token,并且,通过「 --decimals 」来指定它是一个不可分割的 Token(就像 NFT 那样)

Web3新手系列:探索使用Solana Token登录

会输出下面的日志:

Web3新手系列:探索使用Solana Token登录

其中的 69yXraTu3FqXZkATg6MiRnWT2qHd4tRzWsfCHHE9j2XE 经常会被称作 Mint Address,也是我们所创建的 Token 的 ID。

Token 地址为:

https://solscan.io/token/69yXraTu3FqXZkATg6MiRnWT2qHd4tRzWsfCHHE9j2XE?cluster=devnet

创建 Token Account

接下来我们需要为上一步创建的 Token 创建一个 Token Account。

Web3新手系列:探索使用Solana Token登录

mint

在跟其他钱包地址 mint 新 Token 之前,让我们先尝试一下为上一步创建出的 Token Account mint 一个 Token unit。只需要输入:

Web3新手系列:探索使用Solana Token登录

会输出下面的日志:

Web3新手系列:探索使用Solana Token登录

或者也可以:

Web3新手系列:探索使用Solana Token登录

也可以尝试一下 mint 其他数值,例如 1.9 :

Web3新手系列:探索使用Solana Token登录

查看交易详情,会发现:由于我们在第一步创建 Token 时指定「 --decimals 」为 0 ,所以实际执行 mint 时,会舍去小数部分,于是 mint 的量将依然是 1 。

也可以尝试一下直接给一个钱包地址 mint token,这里使用 4wztJ4CAH4GbAUopZrVk7nLvoAC3KAF6ttMMWfnBRG1t 来演示:

Web3新手系列:探索使用Solana Token登录

为钱包地址 mint

上面的 mint 操作的目标是 Token Mint Address,而按照我们最初的设想,应该给其他不属于我们的钱包地址 Mint。

接下来,让我们使用 Web3 用户的钱包地址来完成上面的 mint 步骤。

  • Token 我们直接使用上面的 69yXraTu3FqXZkATg6MiRnWT2qHd4tRzWsfCHHE9j2XE

  • Wallet Address:使用 4wztJ4CAH4GbAUopZrVk7nLvoAC3KAF6ttMMWfnBRG1t

但我们直接简单的替换参数的时,却会得到意外的结果:

Web3新手系列:探索使用Solana Token登录

地址是存在的,只是 Mint 所需要的地址并不是原始的钱包地址,而是需要与之关联的 Token Account。

我们需要进行与上面相同的流程:给钱包地址创建 Token Account,然后使用创建出的 Token Account mint 新的 Token unit。

换句话说,如果我们想要为某个钱包地址铸造一个 Token unit,那么我们就必须先为这个钱包地址创建一个 Token Account。至于为什么需要这样做,其中一个原因是我们并没有权限直接修改某个地址的数据。

在 Solana 的文档中,有时候你会分别看到两个相似的概念:代币账户(Token Account)和 关联代币账户(Associated Token Account,ATA)。文档中看起来两者似乎有些关联,但是却并没有说明这一点,这非常让人困惑。

不过如果你查看 Metaplex 的文档,就会发现它很明确的指出:“关联代币账户,有时会被简称为代币账户”。

我们这里不对这两者进行深入研究,只需要想象代币账户是代币和钱包地址之间的媒介。

我们使用下面的命令,为钱包地址创建一个 Token Account:

Web3新手系列:探索使用Solana Token登录

重复创建将会报错:

Web3新手系列:探索使用Solana Token登录

在日志中也能看出,由确定的 Mint Account 和 钱包地址派生出的 Token Account 是确定的(3JocyxV4LX4VbNU248CvNozZphgRW5JTyxn7FPWrF8bx),只是由于已经存在了,所以才打印了错误信息。

获取 Token Account

我们需要通过 RPC 接口,获取某个钱包地址是否有 Mint 过我们创建的 NFT。具体来说,通过「 getTokenAccountsByOwner 」方法来查询数据。下面是接口需要的参数:

Web3新手系列:探索使用Solana Token登录

你需要将「 _YOUR_RPC_PROVIDER_ 」替换为你自己选择的 RPC 供应商提供的地址。

可以使用 Solana 官方提供的地址,或者,可以在这里找到公共的免费 RPC 网络:https://zan.top/service/public-rpc/solana

注意:公共地址可能不稳定,如果需要稳定的 RPC 服务,建议创建自己的 API Key。

对于上面的钱包地址来说,具体就是这样:

Web3新手系列:探索使用Solana Token登录

除了通过代码手动填充请求参数之外,也可以使用 @solana/web3.js 中提供的 Connection 上的「 getParsedTokenAccountsByOwner 」方法,其内部实际上就是通过创建 Connection 时提供的 RPC 接口调用了「 getParsedTokenAccountsByOwner 」method。

如果是一个已经创建过 Account Token 的钱包,则会返回:

Web3新手系列:探索使用Solana Token登录

删掉了对我们无用的数据

实现

通过上面的尝试,可知我们能够使用现有的能力实现我们想要的功能。那么接下来,就开始编写客户端代码。

以下代码都在 https://github.com/gin-lsl/my-sol-token-auth-example

可以在这里预览:https://my-sol-token-auth-example.vercel.app/

我会通过创建一个简单的 Nextjs 项目来实现它,使用 Ant Design Web3 来 Connect Wallet:

初始化 Nextjs 项目

Web3新手系列:探索使用Solana Token登录

所有选项均使用默认值:

Web3新手系列:探索使用Solana Token登录

为了快速开始,我们直接使用 @ant-design/web3-solana 来连接钱包,使用 @solana/spl-token 和 Token Program 交互。

添加相关的依赖:

Web3新手系列:探索使用Solana Token登录

我们需要包括首页的 3 个页面,创建 app/sign-in/page.tsx 和 app/sign-on/page.tsx。它们分别用于连接钱包并检查用户是否已经注册(是否 mint NFT),以及让用户进行注册流程(mint NFT)。

打开演示页面后,首先看到的是欢迎语,以及前往 Sign in 页面的链接:

Web3新手系列:探索使用Solana Token登录

进入页面后,您需要先去 Sign in:

点击「Continue with Solana」,将会唤起钱包

Web3新手系列:探索使用Solana Token登录

而如果你之前并没有注册,则会提示你先去注册:

Web3新手系列:探索使用Solana Token登录

这是因为在 /api/sign-in 的逻辑中,会根据连接的钱包地址查找关联的 Token Account。由于我们之前并没有使用过,所以自然找不到数据,于是系统就会认为这个钱包地址并没有注册过。

然后我们按照提示,来到 Sign on 页面,注册页面与登录页面大体上类似,只是在服务端的处理逻辑不同:

其实可以将两个逻辑合并,这里分开只是为了便于演示。

Web3新手系列:探索使用Solana Token登录

无论如何,让我们点击「Start with Solana」,连接钱包。然后,如果顺利的话,会看到成功的提示:

Web3新手系列:探索使用Solana Token登录

让我们来到 Solscan 中,看看发生了什么。进入 https://solscan.io/?cluster=devnet,查询你的钱包地址。或者,也可以查看这个地址:79reVF46NyuuH7PADR3i6RpQ7hmBZgYkiieXNYPM1oLF

有一条交易数据:

Web3新手系列:探索使用Solana Token登录

注意在 Instructions 中,能看出交易内部执行了 CreateAccount 指令,点击链接进入详情,会发现它所创建的就是一个 TokenAccount:EXfDYkHw3UQw2VqiSLsRAfLMsxkgqnd3nhxbB4V5HAvA。其中的 isOnCurve 值为 False,表明是一个没有私钥的关联账户。

回到之前的页面,转到 Portfolio -> NFTs,就能看到我们刚才在 sign-on 内部所做的 Mint 操作,以及 Mint 的那个 NFT:

总结

让我们来总结一下整个流程。我们使用 spl-token-cli 创建了一个 NFT,然后,把一个钱包地址是否有 Token Account 并且 Mint 过 Token 来判断是否在我们的网站注册过。

当 Web3 用户连接钱包时,我们会自动往后端发送 sign-on,在内部会创建 Token Account,并且 Mint 一个 Token unit,作为用户已注册的凭证。

在以后,用户就可以拿同样的钱包地址再次登录我们的网站了。

本文由 ZAN Team(X 账号 @zan_team)的 gin-lsl 撰写。

熱門幣種推薦

你可能也喜歡

交易

現貨

熱門文章

什麼是 SOLANA

HarryPotterWifHatMyroWynn10Inu,$solana: 一窺這個潮流迷因幣項目 介紹 在不斷演變的加密貨幣世界中,創新的項目層出不窮,吸引著投資者和愛好者的想像。其中一個項目是 HarryPotterWifHatMyroWynn10Inu,$solana,一個已經開始在加密社區中佔有一席之地的迷因幣。本文章旨在為您提供有關該項目的全面概述,闡明其目的、架構、創建者、投資者以及在發展過程中的重要里程碑。 什麼是 HarryPotterWifHatMyroWynn10Inu,$solana? 概述 HarryPotterWifHatMyroWynn10Inu,$solana 是一個基於 Solana 區塊鏈的迷因幣項目—這是一個以其擴展性和速度而著稱的平台。該項目旨在為加密空間帶來快樂和創意,不僅作為交易代幣,還作為生成和分享迷因內容的催化劑。其核心的社區受到鼓勵參與,提供一個動態生態系統,在這裡創造力和協作得以蓬勃發展。 目標和宗旨 該項目的本質是培養一個讓迷因愛好者聚集、分享和創作新穎迷因內容的環境。這種以敘事為驅動的方式在社區中注入了興奮感,推動了參與,同時展示了 Solana 區塊鏈內在的強大功能。通過建立一個以社區為中心的項目,HarryPotterWifHatMyroWynn10Inu,$solana 亦希望探討數字貨幣作為表達手段的社會影響。 HarryPotterWifHatMyroWynn10Inu,$solana 的創建者是誰? HarryPotterWifHatMyroWynn10Inu,$solana 的創建者身份仍然神秘莫測。該項目的結構是以放棄所有權的方式設計的,因此它作為一個由社區主導的倡議蓬勃發展。這種去中心化促進了所有利益相關者之間的透明性和民主參與。在迷因幣的世界中,這種方法越來越受歡迎,因為社區參與是至高無上的。 HarryPotterWifHatMyroWynn10Inu,$solana 的投資者是誰? 截至目前,沒有公開可得的關於支持 HarryPotterWifHatMyroWynn10Inu,$solana 的具體投資者或基金會的信息。知名投資者的缺席進一步強調了該項目的以社區為導向的精神,它獨立於傳統金融框架。這種獨立性使項目能夠在沒有外部壓力的情況下發展其身份,而是依賴於用戶基礎的集體興趣。 HarryPotterWifHatMyroWynn10Inu,$solana 如何運作? 經濟模型 該項目采用了一種獨特的經濟模型,支撐其功能性和用戶參與。HarryPotterWifHatMyroWynn10Inu,$solana 內部的交易旨在對所有參與方都有益。每一筆交易都會收取費用,這些費用隨後會在現有持有者中重新分配,同時增強流動性池。 這一模型的關鍵組成部分包括: 反射機制:交易費用的一部分會返回給持有者,促進對代幣的長期投資。 流動性池獲取:資金被分配以增強流動性,確保買賣操作可以順利執行。 燒毀機制:部分代幣可能會被燒毀以創造稀缺性,隨著需求的上升可能會增加價值。 這種設計鼓勵了一個自我維持的生態系統,在這裡社區互動和投資得以繁榮。 社區參與 HarryPotterWifHatMyroWynn10Inu,$solana 的核心價值在於社區參與。通過使用戶能夠通過創作迷因和促銷等各種活動參與項目的發展,該項目培育了一個充滿活力的生態系統,讓創造力得以蓬勃發展。 HarryPotterWifHatMyroWynn10Inu,$solana 的時間軸 HarryPotterWifHatMyroWynn10Inu,$solana 的發展軌跡上有多個值得注意的事件,塑造了它在加密社區中的當前地位: 創建:具體的創建日期仍未披露,但該項目的起源植根於貫穿數位時代的迷因文化之中。 社區接管:在創建者放棄所有權後,該項目過渡為由社區主導的模式,讓所有參與者都有份於它的成功。 審計和 NFT 收藏:為了增強可信度,該項目完成了一次徹底的審計,同時推出了一個 NFT 收藏,體現其以迷因為中心的精神。 夥伴關係和發展:該項目目前正在尋找潛在的夥伴關係,並組織基於其傳奇迷因的獨特網站和商品選項的發展。 要點 總結而言,HarryPotterWifHatMyroWynn10Inu,$solana 在加密貨幣的迷因幣領域中是一個值得注意的參與者。以下是一些關鍵要點: 社區主導的倡議:該項目作為一項合作努力蓬勃發展,鼓勵社區成員積極貢獻,同時與所有權聲索分離。 創新的經濟模型:利用反射、流動性獲取和燒毀機制,為用戶創建一個強大而引人入勝的財務環境。 NFT 和商品參與:通過推出 NFT 收藏,該項目旨在深化社區參與,強化迷因文化與數字貨幣之間的聯繫。 探索夥伴關係:該倡議並非靜止不前—持續的發展和潛在的夥伴關係表明了一種面向未來的增長取向。 結論 隨著 HarryPotterWifHatMyroWynn10Inu,$solana 在加密貨幣領域中不斷擴展,其獨特的社區參與、創新經濟結構以及迷因文化的融合勾勒出其未來的潛在路徑。即使其起源和投資者關係仍帶有神秘色彩,該項目卻講述了一個富有魅力的故事,體現去中心化創新的本質。在一個加密貨幣往往被視為純金融視角的世界中,HarryPotterWifHatMyroWynn10Inu,$solana 展示了加密運動融合了創造力、社區和合作的特性。無論您是經驗豐富的投資者還是新手,這個迷因幣項目的發展過程無疑是一個值得關注的迷人案例。

1.0k 人學過發佈於 2024.04.04更新於 2024.12.03

什麼是 SOLANA

什麼是 SOLANA 2.0

BarbieCrashBandicootRFK777Inu, $SOLANA 2.0:加密貨幣界的新玩家 BarbieCrashBandicootRFK777Inu, $SOLANA 2.0 介紹 在不斷演變的加密貨幣市場中,新興項目不斷吸引著投資者和愛好者的注意。在這些新興項目中,有一個名為BarbieCrashBandicootRFK777Inu,以加密貨幣符號$SOLANA 2.0代表。這個獨特的計劃結合了魅力、冒險和迷因文化的元素,旨在在高度競爭的領域中挑戰預期。這個項目抱有增長和創新的願景,捕捉到一種努力對抗已建立的巨頭的精神。 BarbieCrashBandicootRFK777Inu, $SOLANA 2.0 是什麼? 在其核心,BarbieCrashBandicootRFK777Inu是一個受到多種標誌性文化參考啟發的加密貨幣項目。它包括與Barbie相關的優雅和魅力,Crash Bandicoot的動感能量,以及RFK所代表的堅韌驅動,該項目的目標是在加密貨幣的世界中提供多面化的體驗。 BarbieCrashBandicootRFK777Inu項目的主要目標是將這些不同的元素融合成一個吸引廣泛受眾的凝聚生態系統。通過擁抱迷因文化的奇想,同時堅守去中心化和財務賦權的原則,該項目已定位為對於成熟投資者和加密世界的新手都具有吸引力的選擇。 BarbieCrashBandicootRFK777Inu, $SOLANA 2.0 的創造者是誰? 儘管對BarbieCrashBandicootRFK777Inu的關注不斷增長,關於其創造者的信息仍然 largely未知。創始人或開發團隊的匿名性引發了對項目結構和治理的疑問。在加密貨幣的世界中,項目沒有公開創始人是很常見的。這一缺乏信息可能會使某些潛在投資者卻步,而其他人則可能將其視為擁抱許多加密貨幣項目所基礎的去中心化精神的機會。 BarbieCrashBandicootRFK777Inu, $SOLANA 2.0 的投資者是誰? 目前,關於支持BarbieCrashBandicootRFK777Inu的投資基金或機構的信息相對較少。項目缺乏詳細的投資支持突顯了許多加密貨幣的獨立性。在這種情況下,項目的資金是否來自基層社群的支持或更大金融實體的支持,仍有待觀察。 BarbieCrashBandicootRFK777Inu, $SOLANA 2.0 如何運作? BarbieCrashBandicootRFK777Inu設計了多項功能,使其在擁擠的加密空間中獨具一格。雖然具體的技術細節仍然保密,但該項目預計將融入旨在增強用戶參與度和促進社區增長的功能。從時尚和冒險到遊戲的多樣影響力的結合,促進了一種迎合多樣興趣的包容氛圍。 此外,該項目與$SOLANA 2.0生態系統的聯繫暗示著潛在的技術優勢。這可能包括創新的交易速度、可擴展性和成本效益,與Solana區塊鏈的技術能力相一致。項目的創始人似乎正在依靠這一技術基礎,以創建持久的社區體驗和實質性的產品供應。 BarbieCrashBandicootRFK777Inu, $SOLANA 2.0 的時間表 BarbieCrashBandicootRFK777Inu的旅程包含幾個關鍵里程碑,提供了該項目迄今為止的發展見解: 項目概念化:最初的想法圍繞著魅力、冒險和迷因文化的融合,為項目的獨特概念提供了框架。 代幣創建:象徵性的$SOLANA 2.0代幣建立,旨在體現項目的願景並吸引潛在投資者的興趣。 項目開發:目前,該項目正進行進一步開發,重點是挑戰加密空間中的現有玩家並提供創新的產品。 這些里程碑反映了項目的增長軌跡,同時突顯了其致力於開發一個開創性的加密貨幣體驗的承諾。 關於BarbieCrashBandicootRFK777Inu, $SOLANA 2.0 的要點 獨特概念:BarbieCrashBandicootRFK777Inu通過將魅力、冒險和迷因文化的元素融合到一個加密貨幣項目中而脫穎而出。 弱者精神:該項目擁抱弱者的角色,旨在挑戰現有的加密貨幣項目並在行業中開闢一塊市場。 開發階段:正在進行積極的開發工作,旨在提供符合社區和投資者期望的新鮮和創新的產品。 結論 BarbieCrashBandicootRFK777Inu,以符號$SOLANA 2.0呈現,是加密貨幣市場中一個引人入勝的新進者。其獨特的文化參考混合和雄心勃勃的願景,可能引起尋求在加密領域尋找替代項目價值的人的共鳴。 雖然創始人和投資者的未知狀態可能會引發疑問,但該項目對魅力和冒險的重視展現了擴展加密貨幣可能體現的界限的迷人敘事。隨著項目的持續發展,觀察其在更廣泛的加密市場中的演變及其如何在競爭對手中定位自己,將會非常有趣。對於那些參與者來說,BarbieCrashBandicootRFK777Inu可能會解鎖重新定義與數字資產互動的驚喜體驗。 目前,隨著項目的推進,其旅程提醒著我們,加密空間的創新沒有界限,提供了一切從興奮和娛樂到財務賦權的潛力。

207 人學過發佈於 2024.04.05更新於 2024.12.03

什麼是 SOLANA 2.0

如何購買SOL

歡迎來到HTX.com!在這裡,購買Solana (SOL)變得簡單而便捷。跟隨我們的逐步指南,放心開始您的加密貨幣之旅。第一步:創建您的HTX帳戶使用您的 Email、手機號碼在HTX註冊一個免費帳戶。體驗無憂的註冊過程並解鎖所有平台功能。立即註冊第二步:前往買幣頁面,選擇您的支付方式信用卡/金融卡購買:使用您的Visa或Mastercard即時購買Solana (SOL)。餘額購買:使用您HTX帳戶餘額中的資金進行無縫交易。第三方購買:探索諸如Google Pay或Apple Pay等流行支付方式以增加便利性。C2C購買:在HTX平台上直接與其他用戶交易。HTX 場外交易 (OTC) 購買:為大量交易者提供個性化服務和競爭性匯率。第三步:存儲您的Solana (SOL)購買Solana (SOL)後,將其存儲在您的HTX帳戶中。您也可以透過區塊鏈轉帳將其發送到其他地址或者用於交易其他加密貨幣。第四步:交易Solana (SOL)在HTX的現貨市場輕鬆交易Solana (SOL)。前往您的帳戶,選擇交易對,執行交易,並即時監控。HTX為初學者和經驗豐富的交易者提供了友好的用戶體驗。

2.6k 人學過發佈於 2024.12.12更新於 2026.06.02

如何購買SOL

相關討論

歡迎來到 HTX 社群。在這裡,您可以了解最新的平台發展動態並獲得專業的市場意見。 以下是用戶對 SOL (SOL)幣價的意見。

活动图片