MaksutTilaukset

Tilausvaltuutuksen luominen

Subscription Authority on PDA, jota ohjelma käyttää SPL Token -delegaattina yhdelle käyttäjän token accountille ja yhdelle token mintille. Luo se ennen kiinteiden delegointien, toistuvien delegointien tai tilaussuunnitelmien tilausten luomista kyseiselle mintille.

Käyttäjän token account on oltava jo olemassa. Alustus luo Subscription Authority PDA:n ja hyväksyy sen token-delegaatiksi käyttäjän token accountilla.

Valtuutuksen luominen

import { address, createClient } from '@solana/kit';
import { solanaLocalRpc } from '@solana/kit-plugin-rpc';
import { signer } from '@solana/kit-plugin-signer';
import { findAssociatedTokenPda, TOKEN_PROGRAM_ADDRESS } from '@solana-program/token';
import {
fetchMaybeSubscriptionAuthority,
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 [userAta] = await findAssociatedTokenPda({
mint: tokenMint,
owner: userSigner.address,
tokenProgram: TOKEN_PROGRAM_ADDRESS,
});
const [subscriptionAuthorityPda] = await findSubscriptionAuthorityPda({
user: userSigner.address,
tokenMint,
});
const subscriptionAuthority = await fetchMaybeSubscriptionAuthority(
client.rpc,
subscriptionAuthorityPda,
);
if (!subscriptionAuthority.exists) {
await client.subscriptions.instructions
.initSubscriptionAuthority({
tokenMint,
tokenProgram: TOKEN_PROGRAM_ADDRESS,
userAta,
})
.sendTransaction();
}

Huomautukset

  • Käyttäjä allekirjoittaa alustustransaktion.
  • Luo yksi tilausvaltuutus (Subscription Authority) käyttäjää ja token mint -paria kohden.
  • Käytä olemassa olevaa tilausvaltuutusta myöhemmissä delegoinneissa samalle mintille.
  • Sponsori voi rahoittaa tilin: välitä valinnainen payer initSubscriptionAuthority -funktiolle (tuetaan myös createFixedDelegation-, createRecurringDelegation- ja subscribe-funktioissa), tai määritä se .use(payer(sponsorSigner))-funktiolla. rent palautuu kyseiselle sponsorille, kun suljet tilin vastaavalla receiver-funktiolla. Jätä pois itse rahoitetun oletuksen käyttämiseksi.
  • Sulje tilausvaltuutus vasta, kun kaikki siitä riippuvat delegoinnit on peruutettu tai suljettu.

Is this page helpful?

Sisällysluettelo

Muokkaa sivua
© 2026 Solana Foundation. Kaikki oikeudet pidätetään.