PłatnościSubskrypcje

Zamknij Uprawnienie Subskrypcji

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?

Spis treści

Edytuj stronę