Delegierungen und Abonnements halten rent, die bei einem Widerruf normalerweise
an den eingetragenen Zahler zurückfließt. Wenn ein Sponsor das Konten finanziert
hat und der Benutzer später seine Subscription Authority schließt oder ersetzt,
ist das Konten verwaist und sein rent steckt fest. RevokeAbandonedDelegation
und RevokeAbandonedSubscription ermöglichen es dem eingetragenen Zahler,
diesen zurückzufordern.
Wann es gilt
Nur zulässig, wenn die Subscription Authority des Kontos nachweislich terminal
ist – geschlossen oder geschlossen und neu erstellt (sodass init_id nicht mehr
übereinstimmt). Eine aktive Delegierung oder ein aktives Abonnement kann auf
diese Weise niemals geschlossen werden.
RevokeAbandonedDelegation | RevokeAbandonedSubscription | |
|---|---|---|
| Schließt | Feste oder wiederkehrende Delegierungs-PDA | Abonnement-PDA |
| Signer | Eingetragener Zahler | Eingetragener Zahler |
| Konten | Delegierung + eingetragene Authority | Abonnement + eingetragene Authority + Plan |
| Berechtigt wenn | Authority geschlossen oder neu erstellt (init_id stimmt nicht überein) | Dasselbe gilt für den Mint des Plans – der Mint wird aus dem gebundenen Plan ausgelesen, sodass eine unabhängige Authority nicht eingesetzt werden kann, um ein Schließen zu erzwingen |
| Stattdessen normalen Widerruf verwenden, wenn | Delegierung ist abgelaufen oder vollständig aufgebraucht | Abonnement ist storniert und abgelaufen |
RevokeAbandonedDelegation ist außerdem der einzige Wiederherstellungsweg des
eingetragenen Zahlers für eine niemals ablaufende Delegierung
(expiry_ts == 0), die nicht vollständig aufgebraucht ist: Der normale Widerruf
greift für den Zahler nur bei Ablauf oder – bei einer festen Delegierung – bei
vollständigem Verbrauch.
Eine verlassene Delegierung widerrufen
Der eingetragene Zahler unterschreibt. Übergeben Sie die inaktive Delegierungs-PDA und ihre eingetragene Subscription Authority (die möglicherweise bereits geschlossen ist). Der rent wird an den Zahler zurückgegeben.
import { getRevokeAbandonedDelegationInstruction } from '@solana/subscriptions';// Build the instruction and send it in a transaction like any other.const revokeAbandonedIx = getRevokeAbandonedDelegationInstruction({payer: payerSigner,delegationAccount: delegationPda,subscriptionAuthority: subscriptionAuthorityPda,});
Ein aufgegebenes Abonnement widerrufen
Der eingetragene Zahler unterzeichnet. Übergeben Sie die PDA des aufgegebenen Abonnements, die eingetragene Abonnement-Autorität (die möglicherweise bereits geschlossen ist) und den Plan, zu dem das Abonnement gehört. rent wird an den Zahler zurückgegeben.
import { getRevokeAbandonedSubscriptionInstruction } from '@solana/subscriptions';// Build the instruction and send it in a transaction like any other.const revokeAbandonedIx = getRevokeAbandonedSubscriptionInstruction({payer: payerSigner,subscriptionAccount: subscriptionPda,subscriptionAuthority: subscriptionAuthorityPda,planPda,});
Hinweise
- Der eingetragene Zahler unterzeichnet, nicht der Delegierende, der Delegierte oder der Abonnent.
- Beide Anweisungen schlagen fehl, wenn die Abonnement-Autorität für das Konten noch aktiv ist – verwenden Sie stattdessen den normalen Widerruf.
RevokeAbandonedDelegationfunktioniert sowohl für feste als auch für wiederkehrende Delegierungen.
Is this page helpful?