function_call_external_accounts.sol 1.1 KB

12345678910111213141516171819202122232425262728293031
  1. import {AccountMeta} from 'solana';
  2. contract SplToken {
  3. address constant tokenProgramId = address"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA";
  4. address constant SYSVAR_RENT_PUBKEY = address"SysvarRent111111111111111111111111111111111";
  5. struct InitializeMintInstruction {
  6. uint8 instruction;
  7. uint8 decimals;
  8. address mintAuthority;
  9. uint8 freezeAuthorityOption;
  10. address freezeAuthority;
  11. }
  12. function create_mint_with_freezeauthority(uint8 decimals, address mintAuthority, address freezeAuthority) public {
  13. InitializeMintInstruction instr = InitializeMintInstruction({
  14. instruction: 0,
  15. decimals: decimals,
  16. mintAuthority: mintAuthority,
  17. freezeAuthorityOption: 1,
  18. freezeAuthority: freezeAuthority
  19. });
  20. AccountMeta[2] metas = [
  21. AccountMeta({pubkey: instr.mintAuthority, is_writable: true, is_signer: false}),
  22. AccountMeta({pubkey: SYSVAR_RENT_PUBKEY, is_writable: false, is_signer: false})
  23. ];
  24. tokenProgramId.call{accounts: metas}(instr);
  25. }
  26. }