Instruksi Transfer
Memindahkan token dari satu akun ke akun lainnya. Ini adalah operasi dasar untuk mengirim token antar pengguna.
Sebelum kita dapat mentransfer token, kita perlu memiliki:
Akun
Mintyang sudah diinisialisasi.Akun sumber
Tokenatau akunAssociated Tokenyang sudah memiliki setidaknya jumlah yang ingin kita transfer.Akun tujuan
Tokenatau akunAssociated Tokenyang akan menerima token dari akun sumberToken.
Instruksi Mentah
Dengan menggunakan instruksi "mentah" tanpa abstraksi, beginilah tampilan transfer token:
ts
const destination = Keypair.generate();
const destinationTokenAccount = await getAssociatedTokenAddress(
mint.publicKey,
destination.publicKey,
);
// Create ATA creation instruction
const createAtaInstruction = createAssociatedTokenAccountIdempotentInstruction(
keypair.publicKey, // payer
destinationTokenAccount, // associated token account address
destination.publicKey, // owner
mint.publicKey, // mint
);
// Transfer tokens to ATA
const transferInstruction = createTransferInstruction(
sourceTokenAccount, // source token account pubkey
destinationTokenAccount, // destination token account pubkey
keypair.publicKey, // owner of the source token account
1e6, // amount
);
const transaction = new Transaction().add(
createAtaInstruction,
transferInstruction,
);
const signature = await sendAndConfirmTransaction(connection, transaction, [keypair]);
console.log(`Token accounts created and tokens transferred! Check out your TX here: https://explorer.solana.com/tx/${signature}?cluster=devnet`);Instruksi Terabstraksi
Beginilah tampilan instruksi yang sama jika diabstraksikan dengan instruksi transfer():
ts
const destination = Keypair.generate();
const destinationAta = await getOrCreateAssociatedTokenAccount(
connection,
keypair,
mint,
destination.publicKey
);
console.log(`This is your ATA: ${destinationAta.address}!`)
let tx = await transfer(
connection, // connection
keypair, // payer
sourceAta, // source token account
destinationAta, // destination token account
keypair.publicKey, // owner of the source token account
1e6, // amount to transfer
);
console.log(`Succesfully Transferred!. Transaction Here: https://explorer.solana.com/tx/${tx}?cluster=devnet`)