Thanh toánĐăng ký

Tổng quan

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ìnhMục đích
Ủy quyền cố địnhCho 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ền transferHookAccounts.

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 mang receiverTokenAccount được ghi có; SubscriptionTransferEvent cũng mang puller.
  • SubscriptionCreatedEvent, SubscriptionCancelledEvent, và SubscriptionResumedEvent — vòng đời đăng ký. SubscriptionCreatedEvent mang payer.
  • 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?

Mục lục

Chỉnh sửa trang