教程 | 理解Solana中spl-token的Account体系
Solana HubSolana中的Account?
阅读此文将会熟悉Solana中spl-token的Account体系,以及如何操作spl-token。
每一个钱包账号在一个spl-token下都可以生成一个派生账号,这个钱包账号对派生账号拥有操作和修改等的所有权限。派生账号也可以继续创建派生账号。
假如你想实现spl-token的transfer,从A转移5个token到B:
- A、B都需要在此spl-token下都创建派生账号,交易可由A或者A在spl-token下派生账号delegate地址的owner签名,转移到B在spl-token下的派生地址
spl-token Account
pub?struct?Account?{
????pub?mint:?Pubkey,
????pub?owner:?Pubkey,
????pub?amount:?u64,
????pub?delegate:?COption,
????pub?state:?AccountState,
????pub?is_native:?COption<u64>,
????pub?delegated_amount:?u64,
????pub?close_authority:?COption,
}
spl-token的Account结构
mint
: 关联spl-token的program idowner
: 所属的钱包账号amount
: 持有spl-token的数量delegate
: 代理账号state
: 账号状态Uninitialized
: 账号未初始化Initialized
: 账号已经初始化 (owner
和delegate
都可以操作)Frozen
: 账号已被冻结 (owner
和delegate
都无法操作)is_native
: 是否原生代币,如果是则免除租金delegated_amount
: 代理账号可操作的spl-token数量close_authority
: 拥有关闭此账号权限的账号
spl-token
spl-token-ui是用于创建和管理 SPL 令牌的 UI 界面
https://www.spl-token-ui.com
Tokens
Create new token
创建新spl-token
Mint authority
: 拥有mint权限的账号 (钱包地址)Freeze authority
: 拥有冻结权限的账号Decimals
: 小数位
点击
Create new token
会唤醒浏览器钱包插件,授权操作之后,会生成一个spl -token的地址Edit existing token
编辑spl-token
Token mint address
: 上一步Create new token
创建完成后的spl-token地址
Edit mint authority
New mint authority
: 更新拥有mint权限的账号 (钱包账号)
Edit freeze authority
New freeze authority
: 更新拥有冻结权限的账号
Accounts
Create Account
创建一个账号
Token mint address
: spl-token地址Account owner
: 派生地址的owner账号 (钱包账号)Create normal account
: 创建普通账号Create associated account
: 创建关联账号 (相同owner和spl-token下,只能生成一个关联账号)
编辑账号
Mint
: 使用创建spl-token时的Mint authority
钱包账号签名,给目标地址mint指定数量的spl-token
Destination account
: 目标地址账号 (关联账号)Amount
: 数量
Transfer
: 转账. 使用源地址owner的钱包账号或delegate的owner钱包账号签名,授权发起一笔转账
Source account
: 源地址 (签名的钱包账号在此spl-token下的关联账号)Destination account
: 目标地址 (关联账号)Amount
: 数量
Freeze
: 冻结. 使用创建spl-token时的Freeze authority
账号owner钱包账号签名, 冻结某个账号
Account to freeze
: 冻结的账号 (关联账号)
Thaw
: 解冻. 使用创建spl-token时的Freeze authority
账号owner钱包账号签名, 解冻某个账号
Account to thaw
: 解冻的账号 (关联账号)
Set Owner
: 设置账户所有者
Account address
: 要设置的账户 (关联账号)New owner
: 新的owner (关联账号)
set Closer
: 设置关联账号的close authority
, 使用关联账号当前的close authority
或者owner钱包账号签名
Account address
: 关联账号New close authority
: 新的close authority
账号 (钱包账号)
Burn
: 销毁. 使用关联账号的owner钱包账号签名,销毁关联账号下指定数量的spl-token
Account address
: 要销毁spl-token的账号 (关联账号)Amount
: 数量
Close
: 关闭账号. 使用关联账号owner的钱包账号或者close authority
账号签名
Account address
: 关联账号Destination account
: 转移租金的目标账号 (关联账号)
Approve
: 授权. 使用关联账号owner的钱包账号签名
Account address
: 账号 (关联账号)Delegate
: 代理账号 (关联账号)Amount
: 授权的spl-token的数量
Revoke
: 撤销授权. 使用关联账号owner的钱包账号签名
Account address
: 账号 (关联账号)
Airdrops
SOLSOL Airdrop
支持切换的网络
mainnet-beta
testnet
devnet
localnet
空投的输入的地址可以是任何Solana支持的地址格式
- 钱包账号、关联账号、spl-token账号
token水龙头
Inspect Faucet
: 检查水龙头
输入地址后,点击Inspect faucet
会返回
FaucetKey
: 水龙头地址MintKey
: 水龙头领取的spl-tokenAdminKey
: 管理员账号PermittedAmount
: 单次可空投的spl-token数量(不带decimals
)Faucet address
: 水龙头地址
Create Faucet
: 创建水龙头
点击后会唤醒钱包,授权操作后,会生成一个水龙头账户
Token mint address
: spl-token的账户Admin address
: 管理员账号 (此账号可以忽略单次空投Amount
的限制)Amount
: 数量 (单次可空投的带decimals
的数量)
Close Faucet
: 关闭水龙头
Faucet address
: 水龙头地址Rent destination address
: 接受已存入水龙头租金的账号
Token Airdrop
: token空投
Admin
:Create Faucet
时设置的Admin address
地址, 可忽略本次Amount
的限制Token destination address
: 空投spl-token的目标账号Faucet address
: 水龙头地址Amount
: 数量