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
-
publicKey(string, wajib): Kunci publik akun yang akan dikueri, yang dikodekan dalam base-58. -
config(objek, opsional): Objek konfigurasi dengan bidang-bidang berikut:commitment(string, opsional): Menentukan tingkat komitmen yang akan digunakan untuk kueri. Nilai default-nya adalahfinalized.finalized: Node akan mengkueri blok terbaru yang telah dikomit secara permanen. Utamakan nilai ini untuk kode baru.confirmed: Dalam Alpenglow, setara denganfinalized; 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 adalahbase64.base58(lambat)base64base64+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 enkodebase58,base64, ataubase64+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, bidangresult 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 berupanull. 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 parameterencodingyang 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.
- Untuk
executable(boolean):truejika akun berisi program, danfalsejika tidak.rentEpoch(angka): Epoch berikutnya saat akun ini harus membayar sewa.space(angka, opsional): Panjang data dalam byte. (Catatan: Dokumentasi resmi Solana mencantumkanspace, 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.
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
getMultipleAccountsguna mengelompokkan permintaan dan mengurangi perjalanan bolak-balik. - Deserialisasi Data: Bidang
datasering 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:
getAccountInfoumumnya merupakan kueri berbiaya rendah, tetapi polling yang sering dapat meningkatkan biaya. Optimalkan pola kueri Anda. - Gunakan
jsonParseddengan Bijak: MeskipunjsonParsedpraktis 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, 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