Thanh toánĐăng ký

Tạo Quyền Đăng Ký

Quyền Đăng Ký là một PDA mà chương trình sử dụng làm đại diện SPL Token cho token account của một người dùng và một token mint. Hãy tạo nó trước khi tạo các ủy quyền cố định, ủy quyền định kỳ hoặc đăng ký gói đăng ký cho token mint đó.

Token account của người dùng phải tồn tại trước. Quá trình khởi tạo sẽ tạo PDA Quyền Đăng Ký và phê duyệt nó làm đại diện token trên token account của người dùng.

Tạo Quyền

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

Lưu Ý

  • Người dùng ký giao dịch khởi tạo.
  • Tạo một Quyền Đăng Ký cho mỗi cặp người dùng và token mint.
  • Tái sử dụng Quyền Đăng Ký hiện có cho các ủy quyền sau này trên cùng một mint.
  • Chỉ đóng Quyền Đăng Ký sau khi mọi ủy quyền phụ thuộc vào nó đã được thu hồi hoặc đóng.

Is this page helpful?

Mục lục

Chỉnh sửa trang