Open
Description
I'm creating a 2022 token with metadata, but there are some errors when building. I'm a beginner so my ability to fix errors is poor. Hope everyone can help.
Instruction:
use anchor_lang::prelude::*;
use anchor_lang::solana_program::rent::{
DEFAULT_EXEMPTION_THRESHOLD, DEFAULT_LAMPORTS_PER_BYTE_YEAR,
};
use anchor_lang::system_program::{transfer, Transfer};
use anchor_spl::token_interface::{
token_metadata_initialize, Mint, Token2022, TokenMetadataInitialize,
};
use spl_token_metadata_interface::state::TokenMetadata;
#[derive(Accounts)]
#[instruction(args:String)]
pub struct InitToken<'info> {
#[account(
init,
payer = payer,
mint::decimals = 6,
mint::authority = payer,
seeds = [b"token-2022", payer.key().as_ref(), args.name.as_bytes()],
bump,
extensions::metadata_pointer::authority = payer,
extensions::metadata_pointer::metadata_address = mint,
)]
pub mint: Account<'info, Mint>,
#[account(mut)]
pub payer: Signer<'info>,
pub rent: Sysvar<'info, Rent>,
pub system_program: Program<'info, System>,
pub token_program: Program<'info, Token2022>,
}
pub fn initialize_token(ctx: Context<InitToken>, args: TokenMetadataArgs) -> Result<()> {
let TokenMetadataArgs { name, symbol, uri } = args;
let token_metadata = TokenMetadata {
name: name.clone(),
symbol: symbol.clone(),
uri: uri.clone(),
..Default::default()
};
let data_len = 4 + token_metadata.try_to_vec()?.len();
let lamports =
data_len as u64 * DEFAULT_LAMPORTS_PER_BYTE_YEAR * DEFAULT_EXEMPTION_THRESHOLD as u64;
transfer(
CpiContext::new(
ctx.accounts.system_program.to_account_info(),
Transfer {
from: ctx.accounts.payer.to_account_info(),
to: ctx.accounts.mint.to_account_info(),
},
),
lamports,
)?;
token_metadata_initialize(
CpiContext::new(
ctx.accounts.token_program.to_account_info(),
TokenMetadataInitialize {
token_program_id: ctx.accounts.token_program.to_account_info(),
mint: ctx.accounts.mint.to_account_info(),
metadata: ctx.accounts.mint.to_account_info(),
mint_authority: ctx.accounts.payer.to_account_info(),
update_authority: ctx.accounts.payer.to_account_info(),
},
),
name,
symbol,
uri,
)?;
Ok(())
}
Cargo.toml
[package]
name = "sleep_to_earn"
version = "0.1.0"
description = "Created with Anchor"
edition = "2021"
[lib]
crate-type = ["cdylib", "lib"]
name = "sleep_to_earn"
[features]
default = []
cpi = ["no-entrypoint"]
no-entrypoint = []
no-idl = []
no-log-ix-name = []
idl-build = ["anchor-lang/idl-build", "anchor-spl/idl-build"]
[dependencies]
solana-program = "2.0.13"
spl-program-error = "0.5.0"
anchor-lang = "0.30.1"
anchor-spl = "0.30.1"
spl-token-metadata-interface = "0.5.1"
spl-type-length-value = "0.6.0"
Error:
Some errors have detailed explanations: E0277, E0308.
For more information about an error, try `rustc --explain E0277`.
error: could not compile `spl-type-length-value` (lib) due to 10 previous errors
warning: build failed, waiting for other jobs to finish...
Metadata
Metadata
Assignees
Labels
No labels