Skip to main content
Metode RPC getAccountInfo adalah alat penting untuk membuat kueri terhadap 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 disimpannya.

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 dengan base-58.
  2. config (object, opsional): Objek konfigurasi dengan kolom berikut:
    • commitment (string, opsional): Menentukan tingkat komitmen yang akan digunakan untuk kueri. Nilai default-nya adalah finalized.
      • finalized: Node akan membuat kueri terhadap blok terbaru yang dikonfirmasi oleh mayoritas super dari klaster sebagai blok yang telah mencapai penguncian maksimum.
      • confirmed: Node akan membuat kueri terhadap blok terbaru yang telah dipilih oleh mayoritas super dari klaster.
      • processed: Node akan membuat kueri terhadap blok terbarunya. Perhatikan bahwa blok tersebut mungkin belum lengkap.
    • encoding (string, opsional): Pengodean 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 stake), node akan mencoba menguraikannya menjadi struktur JSON. Untuk akun program generik, formatnya biasanya kembali ke biner (base64).
    • dataSlice (object, opsional): Membatasi data akun yang dikembalikan ke potongan tertentu. Hanya tersedia untuk pengodean base58, base64, atau base64+zstd.
      • offset (number): Jumlah byte dari awal data akun untuk memulai potongan.
      • length (number): Jumlah byte yang akan dikembalikan.
    • minContextSlot (number, opsional): Slot minimum tempat permintaan dapat dievaluasi.

Respons

Jika akun ditemukan, kolom result akan berisi objek dengan dua properti utama:
  • context (object): Berisi metadata tentang permintaan.
    • slot (number): Slot tempat informasi diambil.
    • apiVersion (string, opsional): Versi API RPC.
  • value (object | null): Jika akun tidak ada, nilainya akan menjadi null. Jika ada, nilainya berupa objek yang berisi:
    • lamports (number): Jumlah lamport (1 SOL = 1.000.000.000 lamport) yang dimiliki akun.
    • owner (string): Kunci publik program yang memiliki akun ini, yang dikodekan dengan base-58.
    • data (array | object | string): Data yang disimpan dalam akun. Formatnya bergantung pada parameter encoding yang digunakan dalam permintaan.
      • Untuk base64 (default), base58, base64+zstd: Biasanya berupa array [encoded_string, encoding_format], misalnya ["string_data", "base64"].
      • Untuk jsonParsed: Nilainya dapat berupa objek JSON jika data dapat diuraikan oleh node RPC (misalnya untuk akun SPL Token). Jika tidak, nilainya mungkin kembali ke ["", "base64"] atau format serupa jika data tidak dikenali sebagai tata letak standar.
    • executable (boolean): true jika akun berisi program, atau false jika tidak.
    • rentEpoch (number): Epoch berikutnya saat akun ini harus membayar sewa.
    • space (number, opsional): Panjang data dalam byte. (Catatan: Dokumentasi resmi Solana mencantumkan space, sedangkan 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, kolom value dalam hasil akan bernilai 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 perlu sering memeriksa beberapa akun, pertimbangkan penggunaan getMultipleAccounts untuk mengelompokkan permintaan dan mengurangi perjalanan bolak-balik.
  • Deserialisasi Data: Kolom data sering kali perlu dideserialisasi berdasarkan struktur data program pemilik. Alat dan pustaka khusus program (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 membuat kueri terhadap banyak akun atau mengirim permintaan secara rutin.
  • 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, opsi 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