Langsung ke konten utama
Metode RPC getAccountInfo adalah alat mendasar untuk mengkueri blockchain Solana. Metode ini memungkinkan Anda mengambil semua informasi tersimpan yang terkait dengan kunci publik akun tertentu. Informasi ini mencakup saldo lamport akun, program yang memilikinya, status apakah akun dapat dieksekusi, dan data yang tersimpan.

Kasus Penggunaan Umum

  • Memeriksa Saldo SOL: Tentukan saldo SOL native dari akun mana pun.
  • Memverifikasi Keberadaan Akun: Periksa apakah akun dengan kunci publik tertentu telah diinisialisasi (yaitu memiliki lamport atau data).
  • Memeriksa Akun Program: Ambil data yang disimpan dalam akun milik suatu program. Hal ini penting untuk memahami status program.
  • Mengidentifikasi Pemilik Akun: Cari tahu program mana yang memiliki suatu akun. Ini membantu menentukan cara menafsirkan data akun atau mengetahui apakah akun tersebut dimiliki oleh sistem.
  • Memeriksa Apakah Akun Dapat Dieksekusi: Identifikasi apakah akun berisi program yang telah di-deploy.

Parameter

  1. publicKey (string, wajib): Kunci publik akun yang akan dikueri, yang dikodekan dalam base-58.
  2. config (objek, opsional): Objek konfigurasi dengan bidang-bidang berikut:
    • commitment (string, opsional): Menentukan tingkat komitmen yang akan digunakan untuk kueri. Nilai default-nya adalah finalized.
      • finalized: Node akan mengkueri blok terbaru yang telah dikomit secara permanen. Utamakan nilai ini untuk kode baru.
      • confirmed: Dalam Alpenglow, setara dengan finalized; dipertahankan untuk kompatibilitas.
      • processed: Node akan mengkueri blok terbarunya. Perhatikan bahwa blok tersebut mungkin belum lengkap.
    • encoding (string, opsional): Enkode untuk data akun. Nilai default-nya adalah base64.
      • base58 (lambat)
      • base64
      • base64+zstd (jika data dikompresi)
      • jsonParsed: Jika data akun merupakan status program yang dikenal (misalnya, akun token atau akun staking), node akan mencoba mengurainya menjadi struktur JSON. Untuk akun program generik, format ini biasanya kembali menggunakan data biner (base64).
    • dataSlice (objek, opsional): Membatasi data akun yang dikembalikan ke potongan tertentu. Hanya tersedia untuk enkode base58, base64, atau base64+zstd.
      • offset (angka): Jumlah byte dari awal data akun untuk memulai potongan.
      • length (angka): Jumlah byte yang akan dikembalikan.
    • minContextSlot (angka, opsional): Slot minimum tempat permintaan dapat dievaluasi.

Respons

Jika akun ditemukan, bidang result akan berisi objek dengan dua properti utama:
  • context (objek): Berisi metadata tentang permintaan.
    • slot (angka): Slot tempat informasi diambil.
    • apiVersion (string, opsional): Versi API RPC.
  • value (objek | null): Jika akun tidak ada, nilainya akan berupa null. Jika tidak, nilainya adalah objek yang berisi:
    • lamports (angka): Jumlah lamport (1 SOL = 1.000.000.000 lamport) yang dimiliki akun.
    • owner (string): Kunci publik program yang memiliki akun ini, yang dikodekan dalam base-58.
    • data (array | objek | string): Data yang disimpan dalam akun. Formatnya bergantung pada parameter encoding yang digunakan dalam permintaan.
      • Untuk base64 (default), base58, base64+zstd: Nilai ini biasanya berupa array [encoded_string, encoding_format], misalnya ["string_data", "base64"].
      • Untuk jsonParsed: Nilai ini dapat berupa objek JSON jika data dapat diurai oleh node RPC (misalnya, untuk akun SPL Token). Jika tidak, nilainya dapat kembali menggunakan ["", "base64"] atau format serupa jika data tidak dikenali sebagai tata letak standar.
    • executable (boolean): true jika akun berisi program, dan false jika tidak.
    • rentEpoch (angka): Epoch berikutnya saat akun ini harus membayar sewa.
    • space (angka, opsional): Panjang data dalam byte. (Catatan: Dokumentasi resmi Solana mencantumkan space, dan beberapa penyedia RPC mungkin menyertakannya. Nilai ini menunjukkan total ruang yang dialokasikan untuk data akun). Untuk detail selengkapnya tentang data akun dan deserialisasi, lihat panduan terperinci kami.
Jika akun tidak ditemukan, bidang value dalam hasil akan berupa null.

Contoh: Mengambil Informasi Akun

Mari ambil informasi untuk ID Serum Program V3 (9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin) di mainnet. Catatan: Ganti YOUR_API_KEY dengan kunci API Helius Anda yang sebenarnya dalam contoh di bawah ini.

Tips untuk Developer

  • Performa: Untuk aplikasi yang memerlukan pemeriksaan beberapa akun secara rutin, pertimbangkan untuk menggunakan getMultipleAccounts guna mengelompokkan permintaan dan mengurangi perjalanan bolak-balik.
  • Deserialisasi Data: Bidang data sering kali memerlukan deserialisasi berdasarkan struktur data program pemilik. Alat dan pustaka khusus untuk program tersebut (misalnya, pustaka SPL Token untuk akun token) biasanya diperlukan. Artikel blog kami tentang deserialisasi data akun menyediakan teknik dan contoh yang bermanfaat.
  • Batas Laju: Perhatikan batas laju node RPC, terutama saat mengkueri banyak akun atau sering membuat permintaan.
  • Pengelolaan Biaya: getAccountInfo umumnya merupakan kueri berbiaya rendah, tetapi polling yang sering dapat meningkatkan biaya. Optimalkan pola kueri Anda.
  • Gunakan jsonParsed dengan Bijak: Meskipun jsonParsed praktis digunakan, format ini mungkin tidak mendukung semua jenis akun, dan output-nya dapat berubah jika program memperbarui struktur datanya. Untuk aplikasi penting, penguraian data biner dengan tata letak yang diketahui menawarkan stabilitas lebih baik.
  • Pertimbangkan dataSlice: Jika Anda hanya memerlukan sebagian kecil data akun, gunakan dataSlice untuk mengurangi jumlah data yang ditransfer dan berpotensi menurunkan biaya kueri.

Metode Terkait

getMultipleAccounts

Ambil beberapa akun secara berkelompok dalam satu permintaan untuk meningkatkan performa

getBalance

Dapatkan hanya saldo SOL tanpa detail akun lengkap