ΠληρωμέςΣυνδρομές
Η Αρχή Συνδρομής είναι ένα 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?