getTokenAccountsByDelegate mengambil semua akun SPL Token yang telah menyetujui kunci publik tertentu sebagai delegasi. Delegasi memiliki wewenang untuk melakukan tindakan tertentu pada akun token, seperti mentransfer atau membakar token, hingga jumlah yang didelegasikan.
Metode ini berguna untuk layanan yang mengelola wewenang yang didelegasikan atau perlu mengetahui akun token mana yang dapat diwakili oleh kunci tertentu.
Kasus Penggunaan Umum
- Mencantumkan Aset yang Didelegasikan: Menampilkan semua akun token yang telah memberikan wewenang delegasi kepada dompet atau program tertentu.
- Pengelolaan Token Otomatis: Layanan yang melakukan tindakan atas nama pengguna (misalnya, pembuat pasar otomatis dan protokol staking yang mengelola imbalan dalam bentuk token) dapat menggunakan metode ini untuk menemukan akun yang boleh berinteraksi dengannya.
- Mengaudit Delegasi: Meninjau akun yang telah mendelegasikan wewenang kepada alamat tertentu.
- Mencabut Delegasi: Mengidentifikasi akun token yang wewenang delegasinya perlu dicabut (meskipun pencabutan itu sendiri merupakan transaksi terpisah).
Parameter Permintaan
-
delegatePubkey(string, wajib): Kunci publik akun delegasi yang dikodekan dalam base-58 dan akun token terkaitnya ingin Anda temukan. -
filter(object, wajib): Object JSON yang harus menentukanmintatauprogramIduntuk memfilter akun:mint(string): Kunci publik mint token tertentu yang dikodekan dalam base-58. Jika diberikan, kueri hanya akan mengembalikan akun token dari jenis token tersebut yang didelegasikan kepadadelegatePubkey.programId(string): Kunci publik Token Program yang memiliki akun tersebut, yang dikodekan dalam base-58. Biasanya, ini adalah SPL Token Program standar (TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA) atau Token-2022 Program (TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb).
-
options(object, opsional): Object konfigurasi opsional dengan bidang umum berikut:commitment(string, opsional): Menentukan tingkat komitmen.encoding(string, opsional): Pengodean untuk data akun."jsonParsed"sangat disarankan karena mengembalikan informasi akun yang dapat dibaca manusia. Opsi lainnya mencakup"base64"dan"base64+zstd". Nilai default-nya adalah"base64"jika tidak ditentukan.dataSlice(object, opsional): Memungkinkan Anda mengambil hanya bagian tertentu dari data akun. Berisi bidangoffset(usize) danlength(usize). Hanya berlaku untuk pengodeanbase58,base64, ataubase64+zstd.minContextSlot(u64, opsional): Slot minimum tempat permintaan dapat dievaluasi.
Struktur Respons
Bidangresult.value dalam respons JSON-RPC adalah array object. Setiap object mewakili akun token yang memiliki delegatePubkey sebagai delegasinya dan sesuai dengan kriteria filter. Setiap object dalam array memiliki dua bidang:
pubkey(string): Kunci publik akun token itu sendiri yang dikodekan dalam base-58.account(object): Object yang berisi informasi mendetail tentang akun token:lamports(u64): Saldo lamport akun token (untuk pembebasan biaya sewa).owner(string): Kunci publik program yang memiliki akun ini (misalnya, Token Program).data: Data akun. Jika pengodean"jsonParsed"digunakan, nilainya akan berupa object dengan bidangprogram(misalnya,"spl-token") dan bidangparsedyang berisi informasi terstruktur:parsed.info: Object dengan detail seperti:mint(string): Alamat mint token.owner(string): Pemilik akun token (bukan delegasi).tokenAmount(object): Total saldo token dalam akun ini (amount,decimals,uiAmount,uiAmountString).delegate(string): Kunci publik delegasi (harus cocok dengandelegatePubkeydari permintaan).delegatedAmount(object): Jumlah token yang boleh dikelola oleh delegasi (amount,decimals,uiAmount,uiAmountString).isNative(boolean): Menunjukkan apakah akun menyimpan SOL terbungkus.state(string): Status akun token (misalnya,"initialized").
parsed.type(string): Jenis akun (misalnya,"account").
executable(boolean): Apakah akun dapat dieksekusi.rentEpoch(u64): Epoch berikutnya saat akun ini harus membayar biaya sewa.space(u64, jikajsonParsedtidak digunakan): Panjang data mentah akun dalam byte.
jsonParsed):
Contoh Kode
Kiat untuk Pengembang
- Persyaratan Filter: Anda harus memberikan
mintatauprogramIddalam parameter filter. Anda tidak dapat membuat kueri untuk semua akun yang didelegasikan di seluruh jenis token tanpa salah satu filter ini. - Pengodean: Penggunaan
"jsonParsed"untuk opsiencodingsangat disarankan agar data lebih mudah ditangani karena opsi ini mendekode data akun biner menjadi format JSON terstruktur. - Performa: Kueri dengan
programIddapat memerlukan lebih banyak sumber daya daripada kueri denganmint, terutama jika delegasi memiliki wewenang atas berbagai jenis token. Beberapa penyedia RPC mungkin menerapkan batas laju yang lebih ketat untuk metode ini. - Jumlah yang Didelegasikan:
delegatedAmountdalam respons menunjukkan jumlah maksimum token yang saat ini boleh digunakan oleh delegasi. Jumlah ini dapat lebih kecil daripada totaltokenAmountdalam akun. - Mencabut Delegasi: Metode ini hanya mengambil informasi. Untuk mencabut delegasi, pemilik akun token harus mengirimkan instruksi
Revokeke SPL Token Program.
getTokenAccountsByDelegate untuk menemukan akun SPL Token berdasarkan delegasi yang telah disetujuinya.