getTokenAccountsByDelegate RPC-Methode ruft alle SPL-Token-Konten ab, die einen bestimmten öffentlichen Schlüssel als Delegierten genehmigt haben. Ein Delegierter hat die Befugnis, bestimmte Aktionen auf dem Token-Konto durchzuführen, wie z. B. das Übertragen oder Verbrennen von Token, bis zur delegierten Menge.
Diese Methode ist nützlich für Dienste, die die delegierte Autorität verwalten oder herausfinden müssen, auf welche Token-Konten ein bestimmter Schlüssel im Namen von handeln kann.
Häufige Anwendungsfälle
- Auflistung delegierter Vermögenswerte: Anzeige aller Token-Konten, für die eine bestimmte Brieftasche oder ein Programm Delegiertenrechte hat.
- Automatisiertes Token-Management: Dienste, die im Namen von Benutzern Aktionen ausführen (z. B. automatisierte Marktmacher, Staking-Protokolle, die tokenisierte Belohnungen verwalten), können dies verwenden, um Konten zu finden, mit denen sie interagieren dürfen.
- Überprüfung von Delegationen: Überprüfung, welche Konten einer bestimmten Adresse delegierte Autorität gegeben haben.
- Widerruf von Delegationen: Identifizierung von Token-Konten, von denen die Delegiertenrechte widerrufen werden müssen (der Widerruf selbst ist jedoch eine separate Transaktion).
Anforderungsparameter
-
delegatePubkey(string, erforderlich): Der base-58-kodierte öffentliche Schlüssel des Delegiertenkontos, dessen zugehörige Token-Konten Sie finden möchten. -
filter(object, erforderlich): Ein JSON-Objekt, das entwedermintoderprogramIdangeben muss, um die Konten zu filtern:mint(string): Der base-58-kodierte öffentliche Schlüssel eines spezifischen Token-Mints. Wenn angegeben, wird die Abfrage nur die Token-Konten dieses bestimmten Token-Typs zurückgeben, die andelegatePubkeydelegiert sind.programId(string): Der base-58-kodierte öffentliche Schlüssel des Token-Programms, das die Konten besitzt. Dies ist typischerweise das Standard-SPL-Token-Programm (TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA) oder das Token-2022-Programm (TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb).
-
options(object, optional): Ein optionales Konfigurationsobjekt mit den folgenden allgemeinen Feldern:commitment(string, optional): Gibt das Commitment-Level an.encoding(string, optional): Die Kodierung für Kontodaten."jsonParsed"wird dringend empfohlen, da es menschenlesbare Kontoinformationen zurückgibt. Weitere Optionen sind"base64","base64+zstd". Standardmäßig"base64", wenn nicht angegeben.dataSlice(object, optional): Ermöglicht das Abrufen nur eines bestimmten Abschnitts der Kontodaten. Enthält die Felderoffset(usize) undlength(usize). Nur anwendbar fürbase58,base64oderbase64+zstdKodierungen.minContextSlot(u64, optional): Der minimale Slot, bei dem die Anfrage ausgewertet werden kann.
Antwortstruktur
Dasresult.value Feld in der JSON-RPC-Antwort ist ein Array von Objekten. Jedes Objekt repräsentiert ein Token-Konto, das delegatePubkey als Delegierten hat und den Kriterien von filter entspricht. Jedes Objekt im Array hat zwei Felder:
pubkey(string): Der base-58-kodierte öffentliche Schlüssel des Token-Kontos selbst.account(object): Ein Objekt mit detaillierten Informationen über das Token-Konto:lamports(u64): Der Lamport-Saldo des Token-Kontos (für Mietbefreiung).owner(string): Der öffentliche Schlüssel des Programms, das dieses Konto besitzt (z. B. das Token-Programm).data: Die Kontodaten. Wenn die"jsonParsed"-Kodierung verwendet wird, wird dies ein Objekt mit einemprogram-Feld sein (z. B."spl-token") und einparsed-Feld mit strukturierten Informationen enthalten:parsed.info: Ein Objekt mit Details wie:mint(string): Die Mint-Adresse des Tokens.owner(string): Der Besitzer des Token-Kontos (nicht der Delegierte).tokenAmount(object): Der Gesamtbestand an Token in diesem Konto (amount,decimals,uiAmount,uiAmountString).delegate(string): Der öffentliche Schlüssel des Delegierten (sollte demdelegatePubkeyaus der Anfrage entsprechen).delegatedAmount(object): Die Anzahl der Token, die der Delegierte verwalten darf (amount,decimals,uiAmount,uiAmountString).isNative(boolean): Gibt an, ob das Konto SOL umschlossen hält.state(string): Der Zustand des Token-Kontos (z. B."initialized").
parsed.type(string): Der Typ des Kontos (z. B."account").
executable(boolean): Ob das Konto ausführbar ist.rentEpoch(u64): Die Epoche, in der dieses Konto das nächste Mal Miete schulden wird.space(u64, wennjsonParsednicht verwendet wird): Die Länge der rohen Kontodaten in Bytes.
jsonParsed-Kodierung):
Codebeispiele
Entwicklertipps
- Filteranforderung: Sie müssen entweder
mintoderprogramIdim Filterparameter angeben. Sie können nicht nach allen delegierten Konten für alle Token-Typen ohne einen dieser Filter abfragen. - Kodierung: Die Verwendung von
"jsonParsed"für dieencoding-Option wird dringend empfohlen, um die Datenverarbeitung zu erleichtern, da es die binären Kontodaten in ein strukturiertes JSON-Format dekodiert. - Leistung: Abfragen mit
programIdkönnen ressourcenintensiver sein als Abfragen mitmint, insbesondere wenn der Delegierte die Autorität über viele verschiedene Token-Typen hat. Einige RPC-Anbieter können strengere Ratenlimits für diese Methode haben. - Delegierte Menge: Der
delegatedAmountin der Antwort gibt die maximale Anzahl von Token an, die der Delegierte derzeit verwenden darf. Dies kann weniger sein als der GesamtetokenAmountim Konto. - Delegation widerrufen: Diese Methode liefert nur Informationen. Um eine Delegation zu widerrufen, muss der Besitzer des Token-Kontos eine
Revoke-Anweisung an das SPL-Token-Programm senden.
getTokenAccountsByDelegate, um SPL-Token-Konten basierend auf ihrem genehmigten Delegierten zu finden.