ΠληρωμέςΣυνδρομές

Δημιουργία Αρχής Συνδρομής

Η Αρχή Συνδρομής είναι ένα PDA που το πρόγραμμα χρησιμοποιεί ως εξουσιοδοτημένο πρόσωπο SPL Token για τον λογαριασμό token ενός χρήστη και ένα token mint. Δημιουργήστε την πριν από τη δημιουργία σταθερών εξουσιοδοτήσεων, επαναλαμβανόμενων εξουσιοδοτήσεων ή συνδρομών σχεδίων συνδρομής για αυτό το mint.

Ο λογαριασμός token του χρήστη πρέπει να υπάρχει ήδη. Η αρχικοποίηση δημιουργεί το PDA της Αρχής Συνδρομής και το εγκρίνει ως εξουσιοδοτημένο πρόσωπο token στον λογαριασμό token του χρήστη.

Δημιουργία της Αρχής

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();
}

Σημειώσεις

  • Ο χρήστης υπογράφει τη συναλλαγή αρχικοποίησης.
  • Δημιουργήστε μία Subscription Authority ανά ζεύγος χρήστη και token mint.
  • Επαναχρησιμοποιήστε την υπάρχουσα Subscription Authority για μεταγενέστερες αναθέσεις στο ίδιο mint.
  • Ένας χορηγός μπορεί να χρηματοδοτήσει τον λογαριασμό: περάστε ένα προαιρετικό payer στο initSubscriptionAuthority (υποστηρίζεται επίσης στα createFixedDelegation, createRecurringDelegation και subscribe), ή ρυθμίστε έναν με .use(payer(sponsorSigner)). Το rent επιστρέφει τότε σε αυτόν τον χορηγό όταν κλείσετε με ένα αντίστοιχο receiver. Παραλείψτε το για την προεπιλογή αυτοχρηματοδότησης.
  • Κλείστε την Subscription Authority μόνο αφού κάθε ανάθεση που εξαρτάται από αυτήν έχει ανακληθεί ή κλείσει.

Is this page helpful?

Πίνακας Περιεχομένων

Επεξεργασία Σελίδας
© 2026 Ίδρυμα Solana. Με επιφύλαξη παντός δικαιώματος.