Chương trình Ủy quyền Đăng ký cho phép các nhà phát triển để người dùng ủy quyền cho các giao dịch chuyển token trong tương lai từ ví của họ với các giới hạn rõ ràng. Nó được thiết kế cho thanh toán định kỳ, đăng ký, thanh toán của người bán, và các luồng khác mà người dùng không cần phải ký cho mỗi giao dịch chuyển một cách thủ công.
Mục đích
Các token account của Solana có thể phê duyệt một quyền khác để di chuyển token, nhưng mỗi token account chỉ có thể có một quyền được phê duyệt tại một thời điểm. Điều đó khiến việc một ví hỗ trợ an toàn nhiều thỏa thuận chi tiêu cho cùng một token trở nên khó khăn, chẳng hạn như đăng ký hàng tháng, hạn mức chi tiêu cố định và thỏa thuận thanh toán của người bán.
Chương trình này giải quyết vấn đề đó bằng cách cung cấp cho mỗi cặp
(user, token mint) một Quyền Đăng ký được kiểm soát bởi chương trình.
Token account của người dùng phê duyệt quyền đó một lần. Sau đó, chương trình
kiểm tra mỗi yêu cầu chuyển tiền so với một bản ghi riêng biệt xác định ai có
thể rút tiền, họ có thể rút bao nhiêu và khi nào ủy quyền hết hạn hoặc đặt lại.
Quyền Đăng ký không thể tự di chuyển tiền. Một giao dịch chuyển chỉ thành công khi nó khớp với một trong các ủy quyền đang hoạt động của người dùng.
ID Chương trình
De1egAFMkMWZSN5rYXRj9CAdheBamobVNubTsi9avR44
ID chương trình được khai báo trong program/src/lib.rs. Quy trình làm việc
Surfpool cục bộ cài đặt chương trình tại địa chỉ chuẩn này.
Mô hình Ủy quyền
Chương trình hỗ trợ ba mô hình ủy quyền:
| Mô hình | Mục đích |
|---|---|
| Ủy quyền cố định | Cho phép ví hoặc dịch vụ khác chi tiêu tối đa một số tiền cố định, tùy chọn đến thời điểm hết hạn. |
| Ủy quyền định kỳ | Cho phép ví hoặc dịch vụ khác chi tiêu tối đa một giới hạn được đặt lại mỗi kỳ, chẳng hạn như hàng ngày, hàng tuần hoặc hàng tháng. |
| Gói đăng ký | Cho phép người bán công bố các điều khoản thanh toán mà người dùng có thể chấp nhận, sau đó cho phép các bên thu được phê duyệt tính phí người đăng ký mỗi kỳ thanh toán. |
Token Được Hỗ Trợ
Hỗ trợ tất cả các mint từ cả SPL Token và Token-2022.
Đối với các mint Token-2022 được cấu hình TransferHook, chương trình sẽ chuyển
tiếp các tài khoản hook của mint (chương trình hook, ExtraAccountMetaList PDA,
phần bổ sung) vào TransferChecked CPI trên mỗi lần chuyển nhượng được ủy
quyền, do đó chính sách hook được thực thi. SDK sẽ tự động xử lý việc này cho
bạn:
- Plugin client (
transferFixed,transferRecurring,transferSubscription) — được thêm vào tự động. - Xây dựng thủ công — gọi
resolveTransferHookAccounts, truyềntransferHookAccounts.
Sự Kiện On-Chain
Chương trình phát ra các sự kiện on-chain thông qua self-CPI để các indexer và ứng dụng có thể theo dõi hoạt động. Tất cả các sự kiện đều được đăng ký trong IDL đã xuất bản, nên các client được tạo tự động có thể giải mã chúng. Các sự kiện được phát ra bao gồm:
FixedTransferEvent,RecurringTransferEvent, vàSubscriptionTransferEvent— một sự kiện cho mỗi lần chuyển nhượng được ủy quyền. Mỗi sự kiện mangreceiverTokenAccountđược ghi có;SubscriptionTransferEventcũng mangpuller.SubscriptionCreatedEvent,SubscriptionCancelledEvent, vàSubscriptionResumedEvent— vòng đời đăng ký.SubscriptionCreatedEventmangpayer.PlanUpdatedEvent— được phát ra khi một gói được cập nhật.
Phiên Bản
Các bản ghi do chương trình quản lý bao gồm một trường phiên bản. Điều này cung cấp cho chương trình một con đường nâng cấp dữ liệu tài khoản theo thời gian mà không làm ảnh hưởng đến người dùng hiện tại. Chiến lược di chuyển hỗ trợ:
- Cập nhật tại chỗ theo kiểu lazy
- Lệnh migrate tường minh
- Dự phòng thu hồi và tạo lại
Người Đóng Góp
Dự án được duy trì bởi các cộng tác viên của
kho lưu trữ solana-program/subscriptions.
Trạng Thái Kiểm Toán
Chương trình đã được kiểm toán bởi Cantina. Trạng thái kiểm toán, commit cơ sở,
commit đã xác minh sửa lỗi, và delta chưa được kiểm toán hiện tại được theo dõi
trong
thư mục audits/
của kho lưu trữ.
Ứng Dụng Demo
Nếu bạn muốn tự mình thử nghiệm chương trình, bạn có thể xem ứng dụng ví dụ tại đây để thấy một triển khai đầu cuối của các khái niệm được đề cập trong phần này.
Is this page helpful?