token.rs 867 B

1234567891011121314151617181920212223242526272829303132333435
  1. use solana_program::{msg, program_pack::Pack};
  2. use spl_token::state::Mint;
  3. use steel::*;
  4. use steel_api::prelude::*;
  5. pub fn process_create_token(
  6. accounts: &[AccountInfo],
  7. name: String,
  8. symbol: String,
  9. ) -> ProgramResult {
  10. let mint = Mint {
  11. mint_authority: COption::Some(accounts[0].key.to_owned()),
  12. supply: 0,
  13. decimals: 2,
  14. is_initialized: false,
  15. freeze_authority: COption::None,
  16. };
  17. let mut data = vec![];
  18. mint.pack_into_slice(&mut data);
  19. let mut instruction = Instruction::new(
  20. accounts[0].key.to_owned(),
  21. vec![],
  22. vec![AccountMeta::new_readonly(accounts[0].key.to_owned(), false)],
  23. data,
  24. );
  25. let mut instruction_data = vec![];
  26. instruction.pack_into_slice(&mut instruction_data);
  27. msg!("Instruction data: {:?}", instruction_data);
  28. Ok(())
  29. }