Skip to main content
Metode RPC 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

  1. pubkeys (array dari string, 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"]
  2. 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), bidang data akan 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: dataSlice hanya tersedia untuk pengodean base58, base64, atau base64+zstd.
    • minContextSlot (u64): Slot minimum tempat permintaan dapat dievaluasi.

Struktur Respons

Objek respons JSON-RPC akan memiliki bidang result 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 pubkeys milik 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 (array atau object): Data akun. Jika encoding adalah jsonParsed dan 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.

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 pengodean jsonParsed 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 value untuk menemukan null.
  • Kemudahan jsonParsed: Penggunaan pengodean jsonParsed sangat disarankan saat menangani jenis akun umum seperti akun SPL Token karena Anda tidak perlu melakukan deserialisasi secara manual.
  • dataSlice untuk Akun Besar: Untuk akun yang sangat besar (misalnya, beberapa akun status program), gunakan dataSlice agar hanya mengambil byte yang diperlukan dan menghindari transfer data berlebihan.
  • Penanganan Kesalahan: Bersiaplah menangani entri null dalam larik value pada respons, yang menunjukkan bahwa akun tidak ditemukan atau tidak dapat diambil.
Dengan memanfaatkan 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