教程 | 理解Solana中spl-token的Account体系_SDT:intelligencefogcomputerchain

Solana中的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-tokenAccount

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的programidowner:所属的钱包账号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

Createnewtoken

创建新spl-token

Mintauthority:拥有mint权限的账号(钱包地址)Freezeauthority:拥有冻结权限的账号Decimals:小数位点击Createnewtoken会唤醒浏览器钱包插件,授权操作之后,会生成一个spl-token的地址

Editexistingtoken

编辑spl-token

Tokenmintaddress:上一步Createnewtoken创建完成后的spl-token地址EditmintauthorityNewmintauthority:更新拥有mint权限的账号(钱包账号)EditfreezeauthorityNewfreezeauthority:更新拥有冻结权限的账号

Accounts

CreateAccount

创建一个账号

Tokenmintaddress:spl-token地址Accountowner:派生地址的owner账号(钱包账号)Createnormalaccount:创建普通账号Createassociatedaccount:创建关联账号(相同owner和spl-token下,只能生成一个关联账号)EditAccount

编辑账号

Mint:使用创建spl-token时的Mintauthority钱包账号签名,给目标地址mint指定数量的spl-tokenDestinationaccount:目标地址账号(关联账号)Amount:数量Transfer:转账.使用源地址owner的钱包账号或delegate的owner钱包账号签名,授权发起一笔转账Sourceaccount:源地址(签名的钱包账号在此spl-token下的关联账号)Destinationaccount:目标地址(关联账号)Amount:数量Freeze:冻结.使用创建spl-token时的Freezeauthority账号owner钱包账号签名,冻结某个账号Accounttofreeze:冻结的账号(关联账号)Thaw:解冻.使用创建spl-token时的Freezeauthority账号owner钱包账号签名,解冻某个账号Accounttothaw:解冻的账号(关联账号)SetOwner:设置账户所有者Accountaddress:要设置的账户(关联账号)Newowner:新的owner(关联账号)setCloser:设置关联账号的closeauthority,使用关联账号当前的closeauthority或者owner钱包账号签名Accountaddress:关联账号Newcloseauthority:新的closeauthority账号(钱包账号)Burn:销毁.使用关联账号的owner钱包账号签名,销毁关联账号下指定数量的spl-tokenAccountaddress:要销毁spl-token的账号(关联账号)Amount:数量Close:关闭账号.使用关联账号owner的钱包账号或者closeauthority账号签名Accountaddress:关联账号Destinationaccount:转移租金的目标账号(关联账号)Approve:授权.使用关联账号owner的钱包账号签名Accountaddress:账号(关联账号)Delegate:代理账号(关联账号)Amount:授权的spl-token的数量Revoke:撤销授权.使用关联账号owner的钱包账号签名Accountaddress:账号(关联账号)

Airdrops

SOL

SOLAirdrop

支持切换的网络

mainnet-betatestnetdevnetlocalnet空投的输入的地址可以是任何Solana支持的地址格式

钱包账号、关联账号、spl-token账号TOKENS

TokenFaucets

token水龙头

InspectFaucet:检查水龙头输入地址后,点击Inspectfaucet会返回FaucetKey:水龙头地址MintKey:水龙头领取的spl-tokenAdminKey:管理员账号PermittedAmount:单次可空投的spl-token数量(不带decimals)Faucetaddress:水龙头地址CreateFaucet:创建水龙头点击后会唤醒钱包,授权操作后,会生成一个水龙头账户Tokenmintaddress:spl-token的账户Adminaddress:管理员账号(此账号可以忽略单次空投Amount的限制)Amount:数量(单次可空投的带decimals的数量)CloseFaucet:关闭水龙头Faucetaddress:水龙头地址Rentdestinationaddress:接受已存入水龙头租金的账号TokenAirdrop:token空投Admin:CreateFaucet时设置的Adminaddress地址,可忽略本次Amount的限制Tokendestinationaddress:空投spl-token的目标账号Faucetaddress:水龙头地址Amount:数量

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

金智博客

[0:0ms0-6:165ms