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
-
publicKey(string, wajib): Kunci publik akun yang akan dikueri, yang dikodekan dengan base-58. -
config(object, opsional): Objek konfigurasi dengan kolom berikut:commitment(string, opsional): Menentukan tingkat komitmen yang akan digunakan untuk kueri. Nilai default-nya adalahfinalized.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 adalahbase64.base58(lambat)base64base64+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 pengodeanbase58,base64, ataubase64+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, kolomresult 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 menjadinull. 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 parameterencodingyang 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.
- Untuk
executable(boolean):truejika akun berisi program, ataufalsejika tidak.rentEpoch(number): Epoch berikutnya saat akun ini harus membayar sewa.space(number, opsional): Panjang data dalam byte. (Catatan: Dokumentasi resmi Solana mencantumkanspace, 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.
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
getMultipleAccountsuntuk mengelompokkan permintaan dan mengurangi perjalanan bolak-balik. - Deserialisasi Data: Kolom
datasering 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:
getAccountInfoumumnya merupakan kueri berbiaya rendah, tetapi polling yang sering dapat meningkatkan biaya. Optimalkan pola kueri Anda. - Gunakan
jsonParseddengan Bijak: MeskipunjsonParsedpraktis 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, gunakandataSliceuntuk 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