Uprawnienie Subskrypcji to PDA, którego program używa jako delegata SPL Token dla konta tokenowego użytkownika. Zamknij je, gdy użytkownik nie ma już aktywnych stałych delegacji, cyklicznych delegacji lub delegacji subskrypcji dla tego minta.
Zamknięcie zwraca rent konta jego fundatorowi (użytkownikowi lub innemu płatnikowi, który je sfinansował). Najpierw zamknij wszelkie aktywne delegacje.
Zamknięcie nie usuwa zatwierdzenia delegata SPL Token. Gdy PDA przestanie istnieć, zatwierdzenie staje się nieaktywne, ale pozostaje na token account do momentu jego odwołania — zobacz Odwołaj Zatwierdzenie Delegata.
Zamknij Autoritet
import { address, createClient } from '@solana/kit';import { solanaLocalRpc } from '@solana/kit-plugin-rpc';import { signer } from '@solana/kit-plugin-signer';import {findSubscriptionAuthorityPda,subscriptionsProgram,} from '@solana/subscriptions';const client = createClient().use(signer(userSigner)).use(solanaLocalRpc({ rpcUrl: 'http://127.0.0.1:8899' })).use(subscriptionsProgram());const tokenMint = address('TOKEN_MINT_ADDRESS_HERE');const [subscriptionAuthorityPda] = await findSubscriptionAuthorityPda({user: userSigner.address,tokenMint,});await client.subscriptions.instructions.closeSubscriptionAuthority({user: userSigner,tokenMint,// Include this only when a sponsor funded the Subscription Authority.receiver: sponsorSigner.address,}).sendTransaction();
Odwołaj Zatwierdzenie Delegata
RevokeSubscriptionAuthority usuwa pozostałe zatwierdzenie delegata z token
account użytkownika. Wywołuje Revoke Token Program, podpisane przez
użytkownika, dzięki czemu działa niezależnie od tego, czy Subscription Authority
nadal istnieje. Wyślij je samodzielnie lub razem z CloseSubscriptionAuthority.
Przekaż Token Program będący właścicielem minta: TOKEN_PROGRAM_ADDRESS dla
mintów SPL Token, lub TOKEN_2022_PROGRAM_ADDRESS (z
@solana-program/token-2022) dla mintów Token-2022.
import { TOKEN_PROGRAM_ADDRESS } from '@solana-program/token';await client.subscriptions.instructions.revokeSubscriptionAuthority({user: userSigner,tokenMint,tokenProgram: TOKEN_PROGRAM_ADDRESS,}).sendTransaction();
Uwagi
- Użytkownik podpisuje transakcję zamknięcia.
- Jeśli Subscription Authority został sfinansowany przez sponsora, przekaż konto
tego sponsora jako
receiver, aby rent wrócił do zarejestrowanego płatnika. - Zamknij stałe, cykliczne oraz delegacyjne PDA subskrypcji przed zamknięciem Subscription Authority.
- Jeśli użytkownik utworzy nową delegację później, zainicjuj nowy Subscription Authority dla tego samego minta.
- Zamknięcie nie usuwa zatwierdzenia delegata tokena. Użyj
RevokeSubscriptionAuthority, aby usunąć je z token account użytkownika.
Is this page helpful?