Thanh toánĐăng ký

Đóng Quyền Đăng Ký

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

Việc đóng tài khoản sẽ hoàn trả rent của tài khoản về cho người tài trợ (người dùng, hoặc bất kỳ người thanh toán nào đã tài trợ cho nó). Hãy đóng tất cả các ủy quyền đang hoạt động trước.

Việc đóng tài khoản không xóa phê duyệt ủy quyền SPL Token delegate. Sau khi PDA biến mất, phê duyệt đó sẽ trở nên vô hiệu, nhưng nó vẫn tồn tại trên token account cho đến khi bị thu hồi — xem Revoke The Delegate Approval.

Đóng Authority

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

Thu Hồi Phê Duyệt Ủy Quyền Delegate

RevokeSubscriptionAuthority xóa phê duyệt delegate còn sót lại khỏi token account của người dùng. Nó gọi Revoke của token program, được ký bởi người dùng, nên hoạt động dù Subscription Authority còn tồn tại hay không. Gửi độc lập hoặc cùng với CloseSubscriptionAuthority.

Truyền vào token program sở hữu mint: TOKEN_PROGRAM_ADDRESS cho các SPL Token mint, hoặc TOKEN_2022_PROGRAM_ADDRESS (từ @solana-program/token-2022) cho các Token-2022 mint.

import { TOKEN_PROGRAM_ADDRESS } from '@solana-program/token';
await client.subscriptions.instructions
.revokeSubscriptionAuthority({
user: userSigner,
tokenMint,
tokenProgram: TOKEN_PROGRAM_ADDRESS,
})
.sendTransaction();

Lưu Ý

  • Người dùng ký giao dịch đóng tài khoản.
  • Nếu một nhà tài trợ đã tài trợ cho Subscription Authority, hãy truyền tài khoản nhà tài trợ đó vào receiver để rent được hoàn trả về cho người thanh toán đã ghi lại.
  • Đóng các PDA ủy quyền cố định, định kỳ và đăng ký trước khi đóng Subscription Authority.
  • Nếu người dùng tạo một ủy quyền mới sau này, hãy khởi tạo một Subscription Authority mới cho cùng một mint.
  • Việc đóng tài khoản không xóa phê duyệt token delegate. Sử dụng RevokeSubscriptionAuthority để xóa nó khỏi token account của người dùng.

Is this page helpful?

Mục lục

Chỉnh sửa trang