手把手教你用 Solana Token-2022 创建支持元数据的区块链代币

手把手教你用 Solana Token-2022 创建支持元数据的区块链代币

随着区块链技术的快速发展,Solana 凭借其高吞吐量和低交易成本成为开发者创建代币的热门平台。Solana 的 Token-2022 程序为代币引入了原生元数据支持,让开发者可以轻松为代币添加名称、符号、图标等信息。本文将通过详细的实操步骤,带你从零开始创建一个支持元数据的 Solana 代币,适合区块链开发新手和进阶用户。快来动手实践,打造属于你的专属代币吧!

本文详细介绍了如何使用 Solana 的 Token-2022 程序创建支持元数据的代币。内容包括:通过命令行创建代币、初始化元数据、创建代币账户、铸造代币,以及通过 RPC 接口查询账户信息。每个步骤都配有清晰的代码示例和操作指南,帮助读者快速上手。同时,文章还提供了一种通过 GitHub Gist 创建临时元数据文件的便捷方法,适合初学者快速验证代币创建流程。

实操

创建支持元数据(Metadata)的 Token-2022 代币

使用 Solana 的 Token-2022 程序(而非标准 SPL Token 程序)创建一个支持原生元数据功能 的新代币,后续可直接通过 spl-token initialize-metadata 添加代币名称、图标等信息。

bash 复制代码
spl-token --program-id TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb create-token --enable-metadata
Creating token 3QvdZgaBcoqeDrPWVGFaHmo2KCyQfKVQc5J3ygnt3C9M under program TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb
To initialize metadata inside the mint, please run `spl-token initialize-metadata 3QvdZgaBcoqeDrPWVGFaHmo2KCyQfKVQc5J3ygnt3C9M <YOUR_TOKEN_NAME> <YOUR_TOKEN_SYMBOL> <YOUR_TOKEN_URI>`, and sign with the mint authority.

Address:  3QvdZgaBcoqeDrPWVGFaHmo2KCyQfKVQc5J3ygnt3C9M
Decimals:  9

Signature: 32stG9bPaLod4t3bG95SMVfPDQiPCQ7CN826ixawLHmB3PSSUu23qsT2H7qcp8euN7LBNcksQ8pH59uUtwxbz2in

快速创建临时元数据文件

通过GitHub Gist(免费):
  1. 访问 gist.github.com
  2. 创建文件 metadata.json,内容如下:
json 复制代码
{
  "name": "PaxonToken",
  "symbol": "PTK",
  "description": "My first description",
  "image": "https://avatars.githubusercontent.com/u/124650229?v=4",
  "website": "http://paxon.fun"
}
  1. 点击 "Create public gist" 后复制链接即可用于初始化 MetaData

初始化元数据信息

为基于 Token-2022 程序的代币初始化元数据信息名称、符号、URI 等)。

bash 复制代码
spl-token initialize-metadata 3QvdZgaBcoqeDrPWVGFaHmo2KCyQfKVQc5J3ygnt3C9M "PaxonToken" "PTK" https://gist.github.com/qiaopengjun5162/07ca0fa324697e0bdf5b21dd21d43101 --update-authority 6MZDRo5v8K2NfdohdD76QNpSgk3GH3Aup53BeMaRAEpd

Signature: 27UR89VjMMUtWVhpAYRQAJgM9ZAUgixxQfaTA1iCU2SQXZHoaDVg9cStoC8mny81QuhmCH9D83jB4VRKFyQBctiL

创建 Token 账户 TokenAccount

为指定代币(铸造地址 3QvdZgaBcoqeDrPWVGFaHmo2KCyQfKVQc5J3ygnt3C9M)创建一个 Token 账户,用于持有该代币。

bash 复制代码
spl-token create-account 3QvdZgaBcoqeDrPWVGFaHmo2KCyQfKVQc5J3ygnt3C9M
Creating account FbeYQxoZqmQMu6QXWA1HaMfMzec6soEXZWtGUA6LD3Gd

Signature: 4kSp3NDQatioNRXjpN8BTRCuoAcQKRAAmvkVupXKKQynYMp46XDAAPS1atiMDb388ebcicvRa64Q4RJatNFEXtSo

查看 Token 账户信息

查询与指定代币铸造地址(3QvdZgaBcoqeDrPWVGFaHmo2KCyQfKVQc5J3ygnt3C9M)关联的 Token 账户信息,例如余额、所有者等。

bash 复制代码
spl-token account-info 3QvdZgaBcoqeDrPWVGFaHmo2KCyQfKVQc5J3ygnt3C9M

SPL Token Account
  Address: FbeYQxoZqmQMu6QXWA1HaMfMzec6soEXZWtGUA6LD3Gd
  Program: TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb
  Balance: 0
  Decimals: 9
  Mint: 3QvdZgaBcoqeDrPWVGFaHmo2KCyQfKVQc5J3ygnt3C9M
  Owner: 6MZDRo5v8K2NfdohdD76QNpSgk3GH3Aup53BeMaRAEpd
  State: Initialized
  Delegation: (not set)
  Close authority: (not set)
Extensions:
  Immutable owner

铸造代币 Mint Token

为指定的代币铸造账户(3QvdZgaBcoqeDrPWVGFaHmo2KCyQfKVQc5J3ygnt3C9M)铸造 1 个单位代币,并将其分配到目标 Token 账户(FbeYQxoZqmQMu6QXWA1HaMfMzec6soEXZWtGUA6LD3Gd)。

bash 复制代码
spl-token mint 3QvdZgaBcoqeDrPWVGFaHmo2KCyQfKVQc5J3ygnt3C9M 1 FbeYQxoZqmQMu6QXWA1HaMfMzec6soEXZWtGUA6LD3Gd
Minting 1 tokens
  Token: 3QvdZgaBcoqeDrPWVGFaHmo2KCyQfKVQc5J3ygnt3C9M
  Recipient: FbeYQxoZqmQMu6QXWA1HaMfMzec6soEXZWtGUA6LD3Gd

Signature: 3Ctgm6GQnptJNCLzKiBybLda7qn4k3fNCu1RMSrxKRjfjVHBUFMnFNzRmjJQkR5xVvavBHsjFAjhEnf9DQsJgtWe

查看 Token 账户信息

bash 复制代码
spl-token account-info 3QvdZgaBcoqeDrPWVGFaHmo2KCyQfKVQc5J3ygnt3C9M

SPL Token Account
  Address: FbeYQxoZqmQMu6QXWA1HaMfMzec6soEXZWtGUA6LD3Gd
  Program: TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb
  Balance: 1
  Decimals: 9
  Mint: 3QvdZgaBcoqeDrPWVGFaHmo2KCyQfKVQc5J3ygnt3C9M
  Owner: 6MZDRo5v8K2NfdohdD76QNpSgk3GH3Aup53BeMaRAEpd
  State: Initialized
  Delegation: (not set)
  Close authority: (not set)
Extensions:
  Immutable owner

显示代币铸造账户信息

查询指定代币铸造账户(3QvdZgaBcoqeDrPWVGFaHmo2KCyQfKVQc5J3ygnt3C9M)的详细信息,包括总供应量、铸造权限、元数据(如名称 "PaxonToken"、符号 "PTK")等。

bash 复制代码
spl-token display 3QvdZgaBcoqeDrPWVGFaHmo2KCyQfKVQc5J3ygnt3C9M

SPL Token Mint
  Address: 3QvdZgaBcoqeDrPWVGFaHmo2KCyQfKVQc5J3ygnt3C9M
  Program: TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb
  Supply: 1000000000
  Decimals: 9
  Mint authority: 6MZDRo5v8K2NfdohdD76QNpSgk3GH3Aup53BeMaRAEpd
  Freeze authority: (not set)
Extensions
  Metadata Pointer:
    Authority: 6MZDRo5v8K2NfdohdD76QNpSgk3GH3Aup53BeMaRAEpd
    Metadata address: 3QvdZgaBcoqeDrPWVGFaHmo2KCyQfKVQc5J3ygnt3C9M
  Metadata:
    Update Authority: 6MZDRo5v8K2NfdohdD76QNpSgk3GH3Aup53BeMaRAEpd
    Mint: 3QvdZgaBcoqeDrPWVGFaHmo2KCyQfKVQc5J3ygnt3C9M
    Name: PaxonToken
    Symbol: PTK
    URI: https://gist.github.com/qiaopengjun5162/07ca0fa324697e0bdf5b21dd21d43101

通过 getAccountInfo RPC 接口查询相关信息

Request:
curl 复制代码
curl --location 'https://dawn-old-firefly.solana-devnet.quiknode.pro/' \
--header 'Content-Type: application/json' \
--data '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "getAccountInfo",
    "params": [
        "3QvdZgaBcoqeDrPWVGFaHmo2KCyQfKVQc5J3ygnt3C9M",
        {
            "encoding": "jsonParsed",
            "commitment": "confirmed"
        }
    ]
}'
Response:
json 复制代码
{
    "jsonrpc": "2.0",
    "result": {
        "context": {
            "apiVersion": "2.2.16",
            "slot": 387580140
        },
        "value": {
            "data": {
                "parsed": {
                    "info": {
                        "decimals": 9,
                        "extensions": [
                            {
                                "extension": "metadataPointer",
                                "state": {
                                    "authority": "6MZDRo5v8K2NfdohdD76QNpSgk3GH3Aup53BeMaRAEpd",
                                    "metadataAddress": "3QvdZgaBcoqeDrPWVGFaHmo2KCyQfKVQc5J3ygnt3C9M"
                                }
                            },
                            {
                                "extension": "tokenMetadata",
                                "state": {
                                    "additionalMetadata": [],
                                    "mint": "3QvdZgaBcoqeDrPWVGFaHmo2KCyQfKVQc5J3ygnt3C9M",
                                    "name": "PaxonToken",
                                    "symbol": "PTK",
                                    "updateAuthority": "6MZDRo5v8K2NfdohdD76QNpSgk3GH3Aup53BeMaRAEpd",
                                    "uri": "https://gist.github.com/qiaopengjun5162/07ca0fa324697e0bdf5b21dd21d43101"
                                }
                            }
                        ],
                        "freezeAuthority": null,
                        "isInitialized": true,
                        "mintAuthority": "6MZDRo5v8K2NfdohdD76QNpSgk3GH3Aup53BeMaRAEpd",
                        "supply": "1000000000"
                    },
                    "type": "mint"
                },
                "program": "spl-token-2022",
                "space": 403
            },
            "executable": false,
            "lamports": 3695760,
            "owner": "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb",
            "rentEpoch": 18446744073709551615,
            "space": 403
        }
    },
    "id": 1
}

总结

通过本文的实操指南,你已经掌握了使用 Solana Token-2022 程序创建支持元数据代币的全流程。从代币创建、元数据初始化,到代币账户管理和铸造,每一步都清晰易懂。Solana 的高效性和 Token-2022 的灵活性为开发者提供了强大的工具,让代币创建变得更加简单和可定制。无论是开发测试还是实际项目,Token-2022 都能满足多样化的需求。赶快动手实践,探索更多 Solana 生态的无限可能!

参考

相关推荐
风象南37 分钟前
SpringBoot的4种Bean注入冲突解决方案
java·spring boot·后端
睡觉z1 小时前
初认Flask框架
后端·python·flask
果子⌂1 小时前
初识 Flask 框架
后端·python·flask
隔壁小白2 小时前
Laravel模板Blade 用法 x-layouts.guest 和x-guest-layout 什么区别
github·laravel
Kookoos2 小时前
ABP vNext 多语言与本地化:动态切换、资源继承与热更新
后端·.net·abp vnext
HEY_FLYINGPIG3 小时前
Flask应用中处理异步事件(后台线程+事件循环)的方法(2)
后端·python·flask
创实信息4 小时前
软件开发 | 从 Azure DevOps迁移至GitHub企业版的最佳路径
ai·github·azure·devops
qianmoQ5 小时前
GitHub 趋势日报 (2025年06月12日)
github
weixin_985432119 小时前
Spring Boot 中的 @ConditionalOnBean 注解详解
java·spring boot·后端
猎人everest9 小时前
快速搭建运行Django第一个应用—投票
后端·python·django