
Solana Dev 101 — Cara Mentransfer Token Solana dengan TypeScript
Daftar Isi
- 1. Siapkan proyek
- 2. Impor library
- 3. Buat koneksi ke jaringan Solana
- 4. Tentukan keypair pembayar biaya dan pemilik sebelumnya
- 5. Tentukan public key mint dan alamat dompet penerima
- 6. Buat associated token address (ATA) untuk penerima
- 7. Tentukan public key untuk akun token sumber dan akun tujuan
- 8. Buat transaksi baru dan tambahkan instruksi transfer
- 9. Kirim transaksi ke jaringan Solana
- Kode Lengkap
Di Solana, akun token digunakan untuk menyimpan dan mengelola token, termasuk non-fungible token (NFT). Hal ini dapat menyulitkan developer pemula di Solana saat mentransfer token melalui kode. Dalam tutorial ini, kita akan mempelajari cara mentransfer NFT dari satu dompet ke dompet lain di blockchain Solana. Kita akan melakukannya dengan membuat Associated Token Account (ATA) baru untuk penerima dan mentransfer NFT ke akun tersebut.
Sederhanakan pengembangan program Solana menggunakan Kite.
Perbedaan Transfer NFT dan SOL
Dalam transfer token, Associated Token Account (ATA) baru harus dibuat untuk memulai transfer dari pemilik sebelumnya ke pemilik baru. Proses ini tidak dilakukan melalui transfer dompet → dompet.
Proses ini berbeda dari transfer SOL biasa karena system program akan menangani transfer tersebut, dan ATA baru tidak perlu dibuat untuk menyimpan SOL yang terlibat dalam transaksi.
Untuk melihat representasi visual singkat dari proses ini, lihat ilustrasi berikut:
Singkatnya, dalam transfer NFT/token, aset dikirim dari ATA saat ini ke ATA baru milik penerima, bukan ditransfer langsung ke dompet.
Prasyarat
Sebelum melanjutkan tutorial ini, pastikan Anda memenuhi prasyarat berikut:
- Pengetahuan dasar tentang TypeScript.
- Node.js telah terinstal di perangkat Anda.
- Package manager npm atau yarn telah terinstal.
Langkah-Langkah Pembuatan
Sekarang, ikuti langkah-langkah berikut untuk membuat kodenya:
1. Siapkan proyek
- Buat direktori baru bernama “Transfer” untuk proyek Anda.
- Buka terminal dan navigasikan ke folder proyek.
- Inisialisasi proyek Node.js baru menggunakan perintah:
npm init -yatauyarn init -y. - Instal dependensi yang diperlukan dengan menjalankan perintah:
npm install @solana/web3.js @solana/spl-token bs58- Buat file TypeScript baru, misalnya transferNFT.ts, lalu buka di editor kode.
2. Impor library
Impor library yang diperlukan dan definisikan fungsi transfer dalam file transferNFT.ts baru:
import { Keypair, Transaction, Connection, PublicKey } from "@solana/web3.js";
import { createTransferCheckedInstruction, getAssociatedTokenAddress } from "@solana/spl-token";
import * as bs58 from "bs58";
async function transfer() {
// Code for transferring NFTs goes here
}
transfer();Dalam kode di atas, kita mengimpor package yang diperlukan sekaligus membuat fungsi transfer.
3. Buat koneksi ke jaringan Solana
const connection = new Connection("https://rpc.helius.xyz/?api-key=");Dalam kode di atas, kita menggunakan Helius RPC untuk membuat koneksi dengan blockchain Solana.
4. Tentukan keypair pembayar biaya dan pemilik sebelumnya
const feePayer = Keypair.fromSecretKey(bs58.decode("privateKey"));
const prevOwner = Keypair.fromSecretKey(bs58.decode("privateKey"));5. Tentukan public key mint dan alamat dompet penerima
Public key mint adalah alamat token dari NFT yang ingin Anda transfer:
const mintPubkey = new PublicKey("4umMdShNxbdnoV2EZjUp6h5GYYneZFLH9otBEU2K3ZYP");
const receiveAddress = new PublicKey("2xSHLfiPs3aEhzbLnYbyzWYMEaYnwSwJwAnVh5CwHWwX");6. Buat associated token address (ATA) untuk penerima
const ata = await getAssociatedTokenAddress(mintPubkey, receiveAddress);Dalam kode ini, kita menetapkan pemilik ATA baru sebagai public key dari alamat lain. Pemilik tersebut tidak harus menjadi pembayar transaksi.
Pastikan untuk mengatur receiveAddress ke alamat tujuan transfer aset.
7. Tentukan public key untuk akun token sumber dan akun tujuan
const tokenAccount1Pubkey = new PublicKey("CE2uTSeVbBhy2Q8qVEnp8qAJYBQkVxMC4uGzchiAn6gG");
const tokenAccount2Pubkey = new PublicKey(ata);8. Buat transaksi baru dan tambahkan instruksi transfer
const tx = new Transaction();
tx.add(
createTransferCheckedInstruction(
tokenAccount1Pubkey,
mintPubkey,
tokenAccount2Pubkey,
prevOwner.publicKey,
1, // Amount you are transferring.
0 // Decimals, since this is an NFT you can leave 0.
)
);Dalam kode di atas, kita:
- Menentukan akun token sebelumnya dan saat ini.
- Mengatur jumlah yang akan ditransfer menjadi 1 (karena alamat mint hanya memiliki suplai sebanyak 1).
- Mengatur desimal menjadi 0 karena mengikuti standar non-fungible token. Untuk fungible token, Anda dapat mengatur desimal dengan benar untuk transfer.
9. Kirim transaksi ke jaringan Solana
const txhash = await connection.sendTransaction(tx, [feePayer, prevOwner]);
console.log(`Transaction hash: ${txhash}`);Sekarang kita menggunakan metode sendTransaction untuk menyelesaikan transaksi serta menentukan pembayar biaya dan pemilik aset sebelumnya sebagai penanda tangan.
Kode Lengkap
import { Keypair, Transaction, Connection, PublicKey } from "@solana/web3.js";
import { createTransferCheckedInstruction, getAssociatedTokenAddress } from "@solana/spl-token";
import * as bs58 from "bs58";
async function transfer() {
// connection to Solana.
const connection = new Connection("https://rpc.helius.xyz/?api-key=");
// Payer of new ATA.
const feePayer = Keypair.fromSecretKey(
bs58.decode("privateKey")
);
// Previous owner of Token or NFT
const prevOwner = Keypair.fromSecretKey(
bs58.decode("privateKey")
);
// Mint address of the NFT.
const mintPubkey = new PublicKey("4umMdShNxbdnoV2EZjUp6h5GYYneZFLH9otBEU2K3ZYP");
// Recipient of the NFT.
const receiveAdress = new PublicKey('2xSHLfiPs3aEhzbLnYbyzWYMEaYnwSwJwAnVh5CwHWwX')
// Original Token Account
const tokenAccount1Pubkey = new PublicKey("CE2uTSeVbBhy2Q8qVEnp8qAJYBQkVxMC4uGzchiAn6gG");
let ata = await getAssociatedTokenAddress(
mintPubkey, // mint
receiveAdress // owner
);
// Create transfer instruction to from the previous ATA owned by old wallet, to new ATA.
const tokenAccount2Pubkey = new PublicKey(ata);
let tx = new Transaction();
tx.add(
createTransferCheckedInstruction(
tokenAccount1Pubkey, // from
mintPubkey, // mint
tokenAccount2Pubkey, // to
prevOwner.publicKey, // from's owner
1, // amount
0 // decimals
)
);
// Send Transaction here.
console.log(`txhash: ${await connection.sendTransaction(tx, [feePayer, prevOwner])}`);
}
transfer()Ingatlah untuk mengganti nilai placeholder dalam kode dengan nilai Anda yang sebenarnya, seperti URL RPC, secret key, dan public key untuk transfer.
Kesimpulan
Selamat! Anda telah berhasil membuat kode untuk mentransfer NFT di Solana dengan membuat Associated Token Account (ATA) baru dan mentransfer NFT ke akun penerima. Dengan mengikuti tutorial ini, Anda telah mempelajari cara membuat koneksi, menghasilkan ATA, dan mengirim transaksi di blockchain Solana. Kini Anda dapat menerapkan informasi yang dipelajari di sini pada contoh dApp apa pun yang Anda buat.
Artikel Terkait
Berlangganan Helius
Ikuti perkembangan terbaru dalam pengembangan Solana dan dapatkan pembaruan saat kami memublikasikan postingan


