Các ủy quyền và đăng ký giữ rent thường được hoàn trả cho người thanh toán đã
ghi lại khi thu hồi. Nếu một nhà tài trợ đã cấp vốn cho tài khoản và người dùng
sau đó đóng hoặc thay thế Subscription Authority của họ, tài khoản sẽ bị mắc kẹt
và rent của nó cũng vậy. RevokeAbandonedDelegation và
RevokeAbandonedSubscription cho phép người thanh toán đã ghi lại lấy lại rent
đó.
Khi Nào Áp Dụng
Chỉ được phép khi Subscription Authority của tài khoản có thể chứng minh là đã
chấm dứt — đã đóng, hoặc đã đóng và tạo lại (nên init_id không còn khớp nữa).
Một ủy quyền hoặc đăng ký đang hoạt động không bao giờ có thể bị đóng theo cách
này.
RevokeAbandonedDelegation | RevokeAbandonedSubscription | |
|---|---|---|
| Đóng | PDA ủy quyền cố định hoặc định kỳ | PDA đăng ký |
| Người ký | Người thanh toán đã ghi lại | Người thanh toán đã ghi lại |
| Tài khoản | Ủy quyền + authority đã ghi lại | Đăng ký + authority đã ghi lại + plan |
| Đủ điều kiện khi | Authority đã đóng, hoặc đã tạo lại (init_id không khớp) | Tương tự, đối với mint của plan — mint được đọc từ plan đã liên kết, vì vậy không thể thay thế một authority không liên quan để ép buộc đóng |
| Thay vào đó hãy dùng thu hồi thông thường khi | Ủy quyền đã hết hạn hoặc đã chi tiêu hết | Đăng ký đã bị hủy và hết hạn |
RevokeAbandonedDelegation cũng là con đường khôi phục duy nhất của người thanh
toán đã ghi lại đối với một ủy quyền không bao giờ hết hạn (expiry_ts == 0)
chưa được chi tiêu hết: lệnh thu hồi thông thường chỉ kích hoạt cho người thanh
toán khi hết hạn hoặc, đối với ủy quyền cố định, khi chi tiêu hết.
Thu Hồi Một Ủy Quyền Bị Bỏ Rơi
Người thanh toán đã ghi lại ký. Truyền vào PDA ủy quyền đã chết và Subscription Authority đã ghi lại của nó (có thể đã bị đóng). Rent được hoàn trả cho người thanh toán.
import { getRevokeAbandonedDelegationInstruction } from '@solana/subscriptions';// Build the instruction and send it in a transaction like any other.const revokeAbandonedIx = getRevokeAbandonedDelegationInstruction({payer: payerSigner,delegationAccount: delegationPda,subscriptionAuthority: subscriptionAuthorityPda,});
Thu Hồi Gói Đăng Ký Đã Bị Bỏ Rơi
Người thanh toán đã được ghi lại ký. Truyền vào PDA của gói đăng ký bị bỏ rơi, Subscription Authority đã được ghi lại của nó (có thể đã bị đóng), và gói mà gói đăng ký thuộc về. rent sẽ được hoàn trả cho người thanh toán.
import { getRevokeAbandonedSubscriptionInstruction } from '@solana/subscriptions';// Build the instruction and send it in a transaction like any other.const revokeAbandonedIx = getRevokeAbandonedSubscriptionInstruction({payer: payerSigner,subscriptionAccount: subscriptionPda,subscriptionAuthority: subscriptionAuthorityPda,planPda,});
Lưu Ý
- Người thanh toán đã được ghi lại ký, không phải người ủy quyền, người được ủy quyền, hay người đăng ký.
- Cả hai lệnh đều thất bại nếu Subscription Authority vẫn còn hoạt động cho tài khoản — hãy sử dụng revoke thông thường thay thế.
RevokeAbandonedDelegationhoạt động cho cả ủy quyền cố định lẫn định kỳ.
Is this page helpful?