7.transfer-tokens-builder.ts 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import {
  2. address,
  3. createSolanaClient,
  4. getExplorerLink,
  5. getSignatureFromTransaction,
  6. signTransactionMessageWithSigners,
  7. } from "gill";
  8. import { loadKeypairSignerFromFile } from "gill/node";
  9. import { buildTransferTokensTransaction, TOKEN_PROGRAM_ADDRESS } from "gill/programs";
  10. const { rpc, sendAndConfirmTransaction } = createSolanaClient({
  11. urlOrMoniker: "devnet",
  12. });
  13. const signer = await loadKeypairSignerFromFile();
  14. const { value: latestBlockhash } = await rpc.getLatestBlockhash().send();
  15. const mint = address("HwxZNMkZbZMeiu9Xnmc6Rg8jYgNsJB47jwabHGUebW4F");
  16. const tokenProgram = TOKEN_PROGRAM_ADDRESS; // use the correct program for the `mint`
  17. const destination = address("7sZoCrE3cGgEpNgxcPnGffDeWfTewKnk6wWdLxmYA7Cy");
  18. const tx = await buildTransferTokensTransaction({
  19. feePayer: signer,
  20. version: "legacy",
  21. latestBlockhash,
  22. amount: 1_000_000,
  23. authority: signer,
  24. destination: destination,
  25. mint,
  26. tokenProgram,
  27. });
  28. const signedTransaction = await signTransactionMessageWithSigners(tx);
  29. console.log(
  30. "Explorer:",
  31. getExplorerLink({
  32. cluster: "devnet",
  33. transaction: getSignatureFromTransaction(signedTransaction),
  34. }),
  35. );
  36. await sendAndConfirmTransaction(signedTransaction);