getMultipleAccounts adalah cara yang sangat efisien untuk mengambil informasi beberapa akun Solana secara bersamaan. Alih-alih membuat permintaan getAccountInfo terpisah untuk setiap akun, getMultipleAccounts memungkinkan Anda mengelompokkan permintaan tersebut, sehingga mengurangi overhead jaringan dan meningkatkan kecepatan respons aplikasi Anda.
Kasus Penggunaan Umum
- Memuat Data Akun secara Massal: Saat aplikasi Anda perlu menampilkan atau memproses data dari beberapa akun yang diketahui (misalnya, akun token pengguna atau daftar konfigurasi program on-chain).
- Pelacak Portofolio: Mengambil saldo dan status berbagai akun token milik pengguna.
- Antarmuka Marketplace: Menampilkan detail beberapa NFT atau item yang terdaftar dengan mengambil data akunnya sekaligus.
- Meningkatkan Performa dApp: Mengurangi jumlah panggilan RPC secara signifikan, sehingga waktu pemuatan lebih cepat dan pengalaman pengguna lebih baik, terutama saat menangani banyak akun.
Parameter Permintaan
-
pubkeys(arraydaristring, wajib):- Larik string kunci publik yang dikodekan dengan base-58 untuk akun yang ingin Anda kueri.
- Maksimal 100 kunci publik per permintaan.
- Contoh:
["So11111111111111111111111111111111111111112", "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"]
-
options(object, opsional): Objek konfigurasi yang memuat satu atau beberapa bidang berikut:commitment(string): Menentukan tingkat komitmen untuk kueri (misalnya,"finalized","confirmed","processed").encoding(string): Pengodean untuk data akun. Opsi yang tersedia meliputi:"base64"(default): Pengodean base64 standar."base58": Lebih lambat, tetapi mungkin berguna dalam konteks tertentu."base64+zstd": Data terkompresi zstd yang dikodekan dengan base64."jsonParsed": Jika akun dimiliki oleh program yang parser-nya tersedia di node RPC (misalnya, SPL Token Program atau Stake Program), bidangdataakan berupa objek JSON. Opsi ini sangat berguna untuk data terstruktur.
dataSlice(object): Memungkinkan Anda hanya mengambil bagian tertentu dari data akun. Opsi ini berguna untuk akun berukuran besar ketika Anda hanya memerlukan sebagian kecil informasi.offset(usize): Offset dalam byte dari awal data akun.length(usize): Jumlah byte yang akan dikembalikan mulai dari offset.- Catatan:
dataSlicehanya tersedia untuk pengodeanbase58,base64, ataubase64+zstd.
minContextSlot(u64): Slot minimum tempat permintaan dapat dievaluasi.
Struktur Respons
Objek respons JSON-RPC akan memiliki bidangresult yang memuat:
context(object):slot(u64): Slot tempat informasi diambil.apiVersion(string, opsional): Versi API node.
value(array):- Larik dengan setiap elemen yang sesuai dengan kunci publik pada indeks yang sama dalam larik
pubkeysmilik permintaan. - Setiap elemen akan berupa salah satu dari berikut:
null: Jika akun dengan kunci publik yang ditentukan tidak ada atau terjadi kesalahan pada akun tersebut.- Objek Akun dengan bidang berikut:
lamports(u64): Jumlah lamport yang dimiliki akun.owner(string): Kunci publik yang dikodekan dengan base-58 dari program yang memiliki akun tersebut.data(arrayatauobject): Data akun. JikaencodingadalahjsonParseddan tersedia parser, bidang ini akan berupa objek JSON. Jika tidak, bidang ini biasanya berupa larik["encoded_string", "encoding_format"](misalnya,["SGVsbG8=", "base64"]).executable(boolean): Menunjukkan apakah akun berisi program (dapat dieksekusi).rentEpoch(u64): Epoch berikutnya ketika akun ini harus membayar biaya sewa.space(u64): Panjang data akun dalam byte.
- Larik dengan setiap elemen yang sesuai dengan kunci publik pada indeks yang sama dalam larik
Contoh
1. Mengambil Informasi Dasar untuk Dua Akun
Contoh ini mengambil data untuk dua akun: SOL Llama (sebuah NFT) dan Serum Dex Program v3.2. Mengambil Data Akun Token yang Telah Diuraikan
Contoh ini mengambil data untuk dua akun SPL Token dan meminta pengodeanjsonParsed untuk memperoleh data terstruktur.
Tips untuk Developer
- Maksimal 100 Akun: Anda dapat meminta maksimal 100 akun per panggilan.
- Atomisitas: Permintaan ini tidak bersifat atomik, dalam artian jika pencarian satu akun gagal, pencarian lainnya mungkin tetap berhasil. Periksa setiap elemen dalam larik
valueuntuk menemukannull. - Kemudahan
jsonParsed: Penggunaan pengodeanjsonParsedsangat disarankan saat menangani jenis akun umum seperti akun SPL Token karena Anda tidak perlu melakukan deserialisasi secara manual. dataSliceuntuk Akun Besar: Untuk akun yang sangat besar (misalnya, beberapa akun status program), gunakandataSliceagar hanya mengambil byte yang diperlukan dan menghindari transfer data berlebihan.- Penanganan Kesalahan: Bersiaplah menangani entri
nulldalam larikvaluepada respons, yang menunjukkan bahwa akun tidak ditemukan atau tidak dapat diambil.
getMultipleAccounts, Anda dapat membangun aplikasi Solana yang memiliki performa lebih tinggi dan lebih mudah diskalakan.
Metode Terkait
getAccountInfo
Ambil informasi terperinci untuk satu akun
getProgramAccounts
Dapatkan semua akun yang dimiliki oleh program tertentu