目录
Welcome to Code Block's blog
本篇文章主要介绍了
[小试牛刀-SOL链创建Token]
❤博主广交技术好友,喜欢文章的可以关注一下❤
文章为在测试网络进行,不涉及任何其他建议!!
1.编写目的
最近需要编写SOL合约进行SPL Token的转移,因为在测试网上需要自己部署测试Token,同时为了更加美观,Token需携带metadata数据(对名称、头像等)进行定义.在此对创建过程进行记录,希望帮助到有需要实现相关功能的朋友.
2.账户结构
SOL链内的所有数据都存储在账户中,创建Token需要使用不同的程序(合约)创建三个Account,结构图如下:
Mint Account:使用TOKEN_PROGRAM(Token相关操作)程序,创建一个Mint Account,这个账户的作用是用来铸造Token.
MetaData Account:使用METADATA_PROGRAM(metadata数据相关操作)程序,创建一个MetaData账户,用来存储Token基础信息(名称、图标/头像).
ACT Account: 铸造出的Token需要ACT Account进行接收,这需要使用用户和mint Account进行计算然后进行创建,用于接收铸造完成的Token.
3.环境及使用依赖
依赖名 | 版本号 |
@metaplex-foundation/mpl-token-metadata | 2.1.1 |
@solana/spl-token | 0.4.8 |
@solana/web3.js | 1.95.3 |
{
"scripts": {
"test": "ts-node ./test/createmint.test.ts"
},
"dependencies": {
"@metaplex-foundation/mpl-token-metadata": "^2.1.1",
"@solana/spl-token": "^0.4.8",
"@solana/web3.js": "^1.95.3",
},
"devDependencies": {
"@types/node": "^22.5.0",
"ts-node": "^10.9.2",
"typescript": "^5.5.4"
}
}
这里使用TypeScript和node环境进行代码编写,主要需要用到@metaplex-foundation/mpl-token-metadata(用于metadata Account初始化),@solana/spl-token(mint Account初始化和ACT Account创建),@solana/web3.js(用于基础Account创建和一些工具类).
注:这里尽量保持引入版本一致,因为不同版本的方法名称可能不同.
4.步骤分解
4.1.导入相关依赖
import { Keypair, PublicKey, SystemProgram,Connection,sendAndConfirmTransaction, Transaction } from "@solana/web3.js";
import { MINT_SIZE, TOKEN_PROGRAM_ID, createInitializeMint2Instruction, getOrCreateAssociatedTokenAccount,mintTo } from "@solana/spl-token";