Home/Wiki/Topik Teknis Lanjutan: Token-2022, PDA, Multisig & Error

Topik Teknis Lanjutan: Token-2022, PDA, Multisig & Error

Panduan teknis lanjutan yang mencakup kegagalan transaksi, spesifik Token-2022, manajemen akun PDA, integrasi hardware wallet, dan interpretasi error code.

#Mengapa transaksi gagal: alasan teknis?

Bahkan transaksi yang dibentuk dengan benar mungkin tidak masuk ke blok. Memahami alasannya membantu menghindari pemborosan waktu dan gas.

Arsitektur Transaksi Solana

Setiap transaksi di Solana memiliki batasan ketat dan pembatasan waktu:

  • Ukuran maksimum: 1232 bytes (MTU paket jaringan)
  • Batas Compute Units: 1,400,000 CU per transaksi
  • Masa hidup: 150 slot (~60-90 detik)
  • Validitas Blockhash: Valid hanya untuk blok terbaru

Transaction Expired: Error Paling Umum

Apa yang terjadi: Transaksi berisi referensi ke blockhash terbaru (identifier blok). Jika lebih dari 150 slot berlalu saat menunggu di antrian, jaringan menolak transaksi sebagai kadaluwarsa.

Proses teknis:

  • Anda membentuk transaksi dengan blockhash blok N
  • Transaksi menunggu inklusi di blok
  • Jaringan mencapai blok N+150
  • Blockhash Anda tidak lagi di daftar "recent blockhashes"
  • Validator menolak transaksi dengan error "Blockhash not found"

Mengapa ini terjadi:

Kemacetan jaringan: Selama mint NFT populer atau hype token baru, jaringan menerima jutaan transaksi. Priority Fee menentukan urutan.

Priority Fee rendah: Jika Anda menetapkan biaya minimum, validator akan memprioritaskan transaksi dengan pembayaran lebih tinggi.

Masalah RPC: Node RPC publik dapat lambat atau kehilangan koneksi.

Solusi:

  • ✅ Tingkatkan Priority Fee ke "Medium" atau "High" di settings wallet
  • ✅ Coba lagi setelah 1-2 menit (blockhash diperbarui otomatis)
  • ✅ Gunakan endpoint RPC pribadi (Helius, Triton) untuk stabilitas

Penting: Transaksi Expired tidak mengurangi biaya. Dana Anda aman.

Account State Changed: Konflik Data

Apa yang terjadi: Antara pembentukan transaksi dan eksekusinya, state akun berubah.

Skenario tipikal:

Skenario 1: Top-up selama cleanup

  • Scanner menentukan: akun kosong, balance = 0
  • Anda membentuk transaksi CloseAccount
  • Seseorang mengirim Anda 1 token ke akun ini
  • Transaksi mencoba menutup akun dengan balance > 0
  • Error: "Account has non-zero balance"

Skenario 2: Race condition dengan transaksi lain

  • Anda mengirim swap token A di DEX
  • Bersamaan mengirim transaksi penutupan akun token A
  • Kedua transaksi mencoba mengubah akun yang sama
  • Satu lolos, yang kedua ditolak

Solusi:

  • ✅ Jalankan ulang scan - data akan diperbarui
  • ✅ Gunakan alat dengan simulasi pre-flight (periksa sebelum mengirim)
  • ✅ Hindari operasi simultan dengan satu token

Compute Budget Exceeded: Batas Komputasi Terlampaui

Apa yang terjadi: Transaksi mencoba mengeksekusi operasi terlalu kompleks, melebihi batas 1.4M Compute Units.

Penyebab:

  • Terlalu banyak instruksi dalam batch: Mencoba menutup 30-40 akun sekaligus
  • Smart contract kompleks: Beberapa Token-2022 dengan extensions memerlukan lebih banyak komputasi
  • Nested program calls: Program A memanggil program B, yang memanggil C

Solusi:

  • ✅ Kurangi jumlah akun dalam batch (tutup 15-20 bukan 25-30)
  • ✅ Gunakan alat yang otomatis mengoptimalkan ukuran batch
  • ✅ Tambahkan instruksi ComputeBudgetProgram.setComputeUnitLimit() untuk meningkatkan batas

Detail teknis: Anda dapat meminta hingga 1,400,000 CU, tetapi ini memerlukan Priority Fee proporsional lebih tinggi:

Priority Fee = CU yang diminta × Harga per CU

Insufficient Lamports: Dana Tidak Mencukupi

Apa yang terjadi: SOL tidak cukup di balance untuk mengeksekusi operasi.

Penyebab tidak jelas:

Rent-exempt minimum: Jika Anda mencoba transfer semua SOL tetapi memiliki akun kosong terbuka, wallet harus mempertahankan minimum untuk menutupi rent semua akun.

Perubahan gas dinamis: Selama kemacetan, Priority Fee dapat tumbuh 10-100x. Transaksi yang dibentuk dengan perhitungan gas 0.000005 SOL mungkin memerlukan 0.0005 SOL.

Multiple transaksi: Anda mengirim 5 transaksi berturut-turut, masing-masing mereservasi gas. Yang terakhir tidak lolos karena dana bebas tidak cukup.

Solusi:

  • ✅ Selalu simpan minimum 0.01-0.02 SOL di balance
  • ✅ Gunakan mode "Advanced" di wallet untuk kontrol reservasi gas
  • ✅ Kirim transaksi secara berurutan, menunggu konfirmasi

#Bagaimana Token-2022 bekerja dan bagaimana mengklaim rent darinya?

Token Extensions Program (Token-2022) adalah evolusi SPL Token klasik, diluncurkan pada 2023.

Perbedaan Utama dari SPL Token

SPL Token (klasik):

  • Program ID: TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA
  • Ukuran tetap: 165 bytes
  • Fungsionalitas dasar: transfer, mint, burn, approve

Token-2022:

  • Program ID: TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb
  • Ukuran variabel: 165-500+ bytes (tergantung extensions)
  • Fungsionalitas diperluas: 16+ kemampuan tambahan

Extension Utama

Transfer Fee Extension:

Memungkinkan creator token memungut biaya pada setiap transfer.

Contoh:

Transfer 100 token Fee: 2% = 2 token Penerima dapat: 98 token Creator dapat: 2 token biaya

Dampak pada pemulihan rent: Akun dengan Transfer Fee mengambil lebih banyak ruang → rent meningkat ke ~0.0025 SOL.

Permanent Delegate:

Creator token menunjuk alamat yang dapat mentransfer token dari wallet mana pun tanpa persetujuan pemilik.

Aplikasi:

  • Stablecoin terpusat (USDC dapat membekukan dana kriminal)
  • Token game (developer dapat menyita saat ban)

Risiko: Creator memiliki akses backdoor ke dana Anda.

Confidential Transfers:

Enkripsi balance menggunakan zero-knowledge proofs.

Cara kerjanya:

  • Hanya balance terenkripsi yang terlihat secara publik
  • Pengirim dan penerima tahu jumlah sebenarnya
  • Validator dapat memverifikasi kebenaran tanpa pengungkapan

Ukuran akun: Hingga 400 bytes → rent hingga ~0.004 SOL

Non-Transferable Tokens:

Token yang tidak dapat ditransfer (soulbound).

Aplikasi:

  • Sertifikat dan diploma
  • Pencapaian game
  • Token KYC (verifikasi identitas)

Spesifik pemulihan rent: Token semacam itu tidak dapat dibakar, tetapi akun dapat ditutup jika creator menyediakan fungsi ini.

Mengapa Alat Lama Tidak Melihat Token-2022

Alasan teknis: Layanan cleanup klasik menggunakan metode RPC yang hanya mengembalikan token SPL. Pendekatan yang benar memerlukan dua query terpisah untuk program SPL dan Token-2022.

Pemulihan Rent Token-2022

Jumlah pemulihan (perkiraan):

  • Token-2022 dasar: ~0.00204 SOL (seperti SPL)
  • Dengan satu extension: ~0.0025 SOL
  • Dengan dua extensions: ~0.003 SOL
  • Dengan Confidential Transfers: ~0.004 SOL

Penting: Jumlah aktual tergantung pada ukuran akun yang tepat dalam bytes.

Proses penutupan: Identik dengan token SPL - Bakar sisa (jika ada), kemudian instruksi CloseAccount. Satu-satunya perbedaan: perlu menggunakan Program ID yang benar saat membentuk instruksi.

#Apa itu akun PDA dan bisakah rent dipulihkan darinya?

Program Derived Address (PDA) - akun yang dikontrol oleh program, bukan pengguna.

Apa itu PDA Secara Teknis

Akun biasa:

Private Key → Public Key (alamat) Signature transaksi = private key Anda

PDA:

Program ID + Seeds → Alamat deterministik Signature transaksi = program (via invoke_signed)

Fitur kunci: PDA tidak memiliki private key. Hanya program yang dapat menandatangani operasi atas namanya.

Di Mana PDA Digunakan

Protokol lending (Solend, MarginFi):

Saat Anda deposit:

  • Program membuat PDA untuk menyimpan collateral Anda
  • Anda pemilik tetapi tidak mengontrol langsung
  • Penarikan hanya mungkin melalui fungsi withdraw() program

DEX (Raydium, Orca):

Open order disimpan di PDA - Order Book berisi PDA setiap open order. Batalkan order = tutup PDA + kembalikan rent

Program staking:

Token yang di-stake Anda berada di PDA - program mengontrol periode unlock, Anda tidak dapat "mencuri" token Anda sendiri sebelum habis masa berlaku

Bisakah Rent Dikembalikan dari PDA

Tergantung implementasi program.

Jika program menyediakan Close Authority untuk pengguna:

✅ Anda dapat menutup PDA dan mengembalikan rent
Contoh: Versi Serum DEX yang usang, protokol lending lama

Jika program tidak menyediakan:

❌ PDA tetap terbuka selamanya
Contoh: Beberapa program staking membuat PDA secara permanen

Jika dana masih digunakan:

❌ Penutupan tidak mungkin sampai penarikan
Contoh: Tidak dapat menutup PDA dengan pinjaman aktif di lending

Cara Menentukan Apakah Anda Dapat Mengembalikan Rent

Langkah 1: Periksa Owner

Buka akun di Solscan dan periksa apakah Owner adalah program yang dikenal (Raydium, Orca).

Langkah 2: Periksa Balance

Jika balance = hanya rent (tidak ada token/data), penutupan mungkin dimungkinkan.

Langkah 3: Periksa Close Authority

Beberapa explorer menampilkan field Close Authority. Jika itu alamat Anda - Anda dapat menutup.

Deteksi Otomatis di Alat Cleanup

Layanan berkualitas:

  • Memindai semua akun di mana Anda adalah Rent Payer
  • Filter berdasarkan program dengan logika yang dikenal
  • Periksa balance dan status via RPC
  • Tampilkan hanya PDA yang aman ditutup

Peringatan: Jangan tutup PDA secara manual tanpa pemahaman. Dapat kehilangan akses ke dana di protokol.

#Bagaimana menggunakan Ledger dan hardware wallet untuk cleanup?

Hardware wallet memberikan keamanan maksimal tetapi memerlukan langkah tambahan untuk operasi cleanup.

Mengapa Ledger Memblokir Transaksi Kompleks

Keterbatasan layar: Ledger Nano S/X memiliki layar 128×64 pixel. Ini dapat menampilkan alamat (sebagian), jumlah transfer, dan info transaksi dasar, tetapi TIDAK detail 20 instruksi CloseAccount, daftar semua akun yang terpengaruh, atau panggilan smart contract kompleks.

Mekanisme perlindungan: Jika Ledger tidak dapat menampilkan detail transaksi, ia menolak secara default dengan error:

Condition of use not satisfied (0x6985)

Apa itu Blind Signing

Blind Signing - mode di mana Anda mengizinkan Ledger menandatangani transaksi tanpa tampilan detail lengkap di layar.

Cara mengaktifkan:

  • Hubungkan Ledger ke komputer
  • Buka app Solana di perangkat
  • Tekan kedua tombol bersamaan untuk masuk Settings
  • Temukan opsi "Blind signing"
  • Beralih ke "Enabled"
  • Keluar dari Settings

Penting: Setting ini ada di dalam app Solana di Ledger, bukan di Ledger Live di komputer.

Risiko Blind Signing

Kehilangan verifikasi perangkat: Anda tidak melihat apa yang Anda tandatangani. Secara teoritis, situs jahat dapat mengirim transaksi mentransfer semua SOL ke hacker dan menutup akun Anda - dan Anda tidak akan melihat ini di layar Ledger.

Cara meminimalkan risiko:

  • ✅ Aktifkan Blind Signing hanya untuk operasi spesifik
  • ✅ Gunakan hanya layanan terverifikasi
  • ✅ Periksa simulasi transaksi di wallet Phantom/Solflare (jika menggunakan sebagai interface)
  • ✅ Nonaktifkan Blind Signing segera setelah digunakan

Workflow Alternatif Tanpa Blind Signing

Metode 1: Cleanup parsial

Beberapa operasi sederhana tidak memerlukan Blind Signing - menutup 1-3 akun per transaksi, token SPL sederhana tanpa extensions.

Metode 2: Export via xpub

  • Export extended public key dari Ledger
  • Import ke hot wallet (watch-only)
  • Lakukan cleanup di hot wallet
  • Kirim SOL yang dipulihkan kembali ke Ledger

Metode 3: Buat wallet perantara

  • Transfer dana ke hot wallet sementara
  • Lakukan cleanup di hot wallet
  • Kembalikan dana ke Ledger

#Bagaimana mengklaim rent dari wallet multisig?

Wallet Multisignature (Squads Protocol, Goki) menggunakan beberapa kunci untuk mengotorisasi transaksi.

Cara Kerja Multisig di Solana

Struktur:

Multisig Vault (PDA) ├── Signer 1: Alice (1/3 suara) ├── Signer 2: Bob (1/3 suara) └── Signer 3: Charlie (1/3 suara) Threshold: 2/3 (perlu signature dari dua dari tiga)

Proses transaksi:

  • Alice membuat Proposal: "Tutup 50 akun kosong"
  • Bob meninjau dan Approve
  • Threshold tercapai (2/3) → transaksi dieksekusi otomatis
  • Charlie dapat Approve nanti (tetapi tidak perlu)

Mengapa Alat Cleanup Reguler Tidak Bekerja dengan Multisig

Masalah: Layanan standar mencoba mengirim transaksi segera setelah koneksi wallet. Tetapi di Multisig:

  • Satu signature tidak cukup
  • Perlu membuat Proposal
  • Tunggu signer lain

Momen teknis: Multisig Vault adalah PDA. Token disimpan bukan di alamat signer tetapi di Vault. Jadi scanning alamat Alice menampilkan 0 akun, meskipun Vault memiliki ratusan.

Workflow Cleanup Multisig

Langkah 1: Scan alamat Vault

Temukan alamat Multisig Vault di interface Squads, paste ke scanner cleanup (Read-Only).

Langkah 2: Export daftar akun

Beberapa alat canggih memungkinkan export daftar akun token untuk ditutup.

Langkah 3: Buat Proposal secara manual

Di interface Squads:

  • New Proposal → Custom Instruction
  • Program: Token Program / Token-2022 Program
  • Instruction: CloseAccount
  • Account list: paste dari export
  • Create Proposal

Langkah 4: Kumpulkan signature

Kirim link Proposal ke signer lain. Setelah mencapai threshold, transaksi dieksekusi.

Otomasi untuk Multisig

Developer dapat membuat script menggunakan Squads SDK untuk mengotomatisasi pembuatan proposal, pengumpulan signature, dan eksekusi. Biaya termasuk gas untuk pembuatan Proposal plus gas eksekusi transaksi.

#Bagaimana menginterpretasi error code Solana umum?

Solana menggunakan kode error numerik yang tidak selalu jelas bagi pengguna.

Kode Error Umum Selama Cleanup

0x0 (Success): Bukan error. Transaksi dieksekusi berhasil.

0x1 (Insufficient funds): SOL tidak cukup untuk gas atau pembayaran rent-exempt minimum. Solusi: Top up balance.

0x3 (Invalid account data): Akun memiliki struktur data tidak benar. Penyebab: Token buggy, metadata rusak. Solusi: Skip akun ini, tutup yang lain.

0x7 (Account already in use): Transaksi lain secara bersamaan memodifikasi akun ini. Solusi: Tunggu 5-10 detik, coba lagi.

0xBB8 (3000 - Account not rent exempt): Percobaan membuat akun tanpa deposit cukup. Dalam konteks cleanup: Bug alat (error langka).

0x1771 (6001 - Custom program error): Error spesifik untuk program tertentu. Perlu memeriksa detail error message.

Cara Mendapatkan Detail Error

Di Phantom/Solflare:

Setelah transaksi gagal muncul:

Transaction failed View in Explorer →

Klik → membuka Solscan dengan log lengkap.

Di Solscan:

  • Temukan section "Program Logs"
  • Cari baris dengan "Error:"
  • Sering ada deskripsi yang dapat dibaca manusia

Contoh:

Program log: Error: Account has non-zero balance Program TokenkegQf... failed: custom program error: 0x10

Interpretasi: 0x10 = "Non-zero balance", tidak dapat menutup akun dengan token.

SolChekers

Our mission is to make the Solana blockchain cleaner, lighter, and more efficient for everyone by reclaiming unused rent deposits.

Built with ❤️ by Solana enthusiasts

Important

SolChekers is a non-custodial tool. We do not have access to your private keys. Use at your own risk.

Official URL verification:
solchekers.com

© 2025 SolChekers.com. Not affiliated with the Solana Foundation.