index.js 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. const spl = require("@solana/spl-token");
  2. const anchor = require("@coral-xyz/anchor");
  3. const serumCmn = require("@project-serum/common");
  4. const TokenInstructions = require("@project-serum/serum").TokenInstructions;
  5. // TODO: remove this constant once @project-serum/serum uses the same version
  6. // of @solana/web3.js as anchor (or switch packages).
  7. const TOKEN_PROGRAM_ID = new anchor.web3.PublicKey(
  8. TokenInstructions.TOKEN_PROGRAM_ID.toString()
  9. );
  10. // Our own sleep function.
  11. function sleep(ms) {
  12. console.log("Sleeping for", ms / 1000, "seconds");
  13. return new Promise((resolve) => setTimeout(resolve, ms));
  14. }
  15. async function getTokenAccount(provider, addr) {
  16. return await serumCmn.getTokenAccount(provider, addr);
  17. }
  18. async function createMint(provider, authority) {
  19. if (authority === undefined) {
  20. authority = provider.wallet.publicKey;
  21. }
  22. const mint = await spl.Token.createMint(
  23. provider.connection,
  24. provider.wallet.payer,
  25. authority,
  26. null,
  27. 6,
  28. TOKEN_PROGRAM_ID
  29. );
  30. return mint;
  31. }
  32. async function createTokenAccount(provider, mint, owner) {
  33. const token = new spl.Token(
  34. provider.connection,
  35. mint,
  36. TOKEN_PROGRAM_ID,
  37. provider.wallet.payer
  38. );
  39. let vault = await token.createAccount(owner);
  40. return vault;
  41. }
  42. module.exports = {
  43. TOKEN_PROGRAM_ID,
  44. sleep,
  45. getTokenAccount,
  46. createTokenAccount,
  47. createMint,
  48. };