mint.rs 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. use {
  2. anchor_lang::prelude::*,
  3. anchor_spl::{
  4. token,
  5. associated_token,
  6. },
  7. };
  8. pub fn mint_to(
  9. ctx: Context<MintTo>,
  10. amount: u64,
  11. ) -> Result<()> {
  12. msg!("Minting token to token account...");
  13. msg!("Mint: {}", &ctx.accounts.mint_account.to_account_info().key());
  14. msg!("Token Address: {}", &ctx.accounts.associated_token_account.key());
  15. token::mint_to(
  16. CpiContext::new(
  17. ctx.accounts.token_program.to_account_info(),
  18. token::MintTo {
  19. mint: ctx.accounts.mint_account.to_account_info(),
  20. to: ctx.accounts.associated_token_account.to_account_info(),
  21. authority: ctx.accounts.mint_authority.to_account_info(),
  22. },
  23. ),
  24. amount,
  25. )?;
  26. msg!("Token minted to wallet successfully.");
  27. Ok(())
  28. }
  29. #[derive(Accounts)]
  30. pub struct MintTo<'info> {
  31. #[account(
  32. mut,
  33. mint::decimals = 9,
  34. mint::authority = mint_authority.key(),
  35. )]
  36. pub mint_account: Account<'info, token::Mint>,
  37. pub mint_authority: SystemAccount<'info>,
  38. #[account(
  39. init,
  40. payer = payer,
  41. associated_token::mint = mint_account,
  42. associated_token::authority = payer,
  43. )]
  44. pub associated_token_account: Account<'info, token::TokenAccount>,
  45. #[account(mut)]
  46. pub payer: Signer<'info>,
  47. pub rent: Sysvar<'info, Rent>,
  48. pub system_program: Program<'info, System>,
  49. pub token_program: Program<'info, token::Token>,
  50. pub associated_token_program: Program<'info, associated_token::AssociatedToken>,
  51. }