Instruksi Freeze dan Thaw
Freeze mencegah semua operasi token pada akun sampai di-thaw. Hanya freeze authority dari mint yang dapat melakukan operasi ini.
Thaw mengaktifkan kembali operasi token pada akun yang sebelumnya dibekukan. Hanya freeze authority dari mint yang dapat men-thaw akun.
Sebelum kita dapat membekukan dan mencairkan token apa pun, kita perlu sudah memiliki:
Akun
Mintyang telah diinisialisasi di mana kita memegangfreezeAuthorityAkun
Tokenatau akunAssociated Tokenyang telah diinisialisasi yang ingin kita bekukan atau cairkan
Raw Instruction
Dengan menggunakan instruksi "raw" tanpa abstraksi apa pun, beginilah cara membekukan token:
const keypair = Keypair.generate();
const tokenAccount = await getAssociatedTokenAddress(
mint.publicKey,
keypair.publicKey,
);
// Create ATA creation instruction
const createAtaInstruction = createAssociatedTokenAccountIdempotentInstruction(
keypair.publicKey, // payer
tokenAccount, // associated token account address
destination.publicKey, // owner
mint.publicKey, // mint
);
// Freeze an ATA
const freezeInstruction = createFreezeAccountInstruction(
tokenAccount // account
mint // mint
keypair.publickey // authority
);
const transaction = new Transaction().add(
createAtaInstruction,
freezeInstruction,
);
const signature = await sendAndConfirmTransaction(connection, transaction, [keypair]);
console.log(`Token accounts created and frozen! Check out your TX here: https://explorer.solana.com/tx/${signature}?cluster=devnet`);Dengan menggunakan instruksi "raw" tanpa abstraksi apa pun, beginilah cara mencabut token:
// Thaw an ATA
const thawInstruction = createThawAccountInstruction(
tokenAccount // account
mint // mint
keypair.publickey // authority
);
const transaction = new Transaction().add(thawInstruction);
const signature = await sendAndConfirmTransaction(connection, transaction, [keypair]);
console.log(`Token account thawed! Check out your TX here: https://explorer.solana.com/tx/${signature}?cluster=devnet`);Abstracted Instruction
Beginilah instruksi yang sama akan terlihat jika diabstraksikan dengan instruksi freezeAccount():
const tokenAccount = Keypair.generate();
const ata = await getOrCreateAssociatedTokenAccount(
connection,
keypair,
mint,
tokenAccount.publicKey
);
console.log(`This is your ATA: ${ata.address}!`)
let tx = await freezeAccount(
connection,
keypair,
tokenAccount // account
mint // mint
keypair.publickey // authority
);
console.log(`Token Account succesfully Frozen!. Transaction Here: https://explorer.solana.com/tx/${tx}?cluster=devnet`)Beginilah instruksi yang sama akan terlihat jika diabstraksikan dengan instruksi thawAccount():
let tx = await thawAccount(
connection,
keypair,
tokenAccount // account
mint // mint
keypair.publickey // authority
);
console.log(`Token Account succesfully Thawed!. Transaction Here: https://explorer.solana.com/tx/${tx}?cluster=devnet`)