구독 위임 프로그램은 개발자가 사용자로 하여금 명확한 한도 내에서 지갑으로부터의 향후 토큰 전송을 승인할 수 있도록 합니다. 반복 결제, 구독, 가맹점 청구 및 사용자가 매번 수동으로 서명할 필요가 없는 기타 흐름을 위해 설계되었습니다.
목적
Solana token account는 다른 권한이 토큰을 이동할 수 있도록 승인할 수 있지만, 각 token account는 한 번에 하나의 승인된 권한만 가질 수 있습니다. 이로 인해 하나의 지갑이 동일한 토큰에 대해 월간 구독, 고정 지출 한도, 가맹점 청구 계약 등 여러 지출 약정을 안전하게 지원하기 어렵습니다.
이 프로그램은 각 (user, token mint) 쌍에 프로그램이 제어하는 구독 권한을
부여함으로써 이 문제를 해결합니다. 사용자의 token account는 해당 권한을 한 번
승인합니다. 그런 다음 프로그램은 각 요청된 전송을 별도의 레코드와 대조하여 누가
자금을 인출할 수 있는지, 얼마나 인출할 수 있는지, 승인이 언제 만료되거나
재설정되는지를 확인합니다.
구독 권한은 그 자체로 자금을 이동할 수 없습니다. 전송은 사용자의 활성 승인 중 하나와 일치할 때만 성공합니다.
프로그램 ID
De1egAFMkMWZSN5rYXRj9CAdheBamobVNubTsi9avR44
프로그램 ID는 program/src/lib.rs에 선언되어 있습니다. 로컬 Surfpool
워크플로우는 이 정식 주소에 프로그램을 설치합니다.
위임 모델
이 프로그램은 세 가지 승인 모델을 지원합니다:
| 모델 | 목적 |
|---|---|
| 고정 위임 | 다른 지갑이나 서비스가 선택적으로 만료 시간까지 고정된 총액까지 지출할 수 있도록 허용합니다. |
| 반복 위임 | 다른 지갑이나 서비스가 매일, 매주 또는 매월과 같이 매 기간마다 재설정되는 한도까지 지출할 수 있도록 허용합니다. |
| 구독 플랜 | 가맹점이 사용자가 수락할 수 있는 청구 조건을 게시하도록 한 다음, 승인된 수금자가 각 청구 기간마다 구독자에게 요금을 청구할 수 있도록 허용합니다. |
지원되는 토큰
SPL Token 및 Token-2022의 모든 민트를 지원합니다.
TransferHook가 구성된 Token-2022 민트의 경우, 프로그램은 위임된 각 전송 시
TransferChecked CPI에 민트의 훅 계정(훅 프로그램, ExtraAccountMetaList PDA,
추가 항목)을 전달하므로 훅 정책이 적용됩니다. SDK가 이를 자동으로 처리합니다:
- 플러그인 클라이언트(
transferFixed,transferRecurring,transferSubscription) — 자동으로 추가됩니다. - 수동으로 빌드하는 경우 —
resolveTransferHookAccounts를 호출하고transferHookAccounts를 전달하세요.
온체인 이벤트
프로그램은 인덱서와 애플리케이션이 활동을 추적할 수 있도록 self-CPI를 통해 온체인 이벤트를 발행합니다. 모든 이벤트는 공개된 IDL에 등록되어 있으므로 생성된 클라이언트가 이를 디코딩할 수 있습니다. 발행되는 이벤트는 다음과 같습니다:
FixedTransferEvent,RecurringTransferEvent,SubscriptionTransferEvent— 위임된 전송마다 하나씩 발행됩니다. 각각 크레딧된receiverTokenAccount를 포함하며,SubscriptionTransferEvent는puller도 포함합니다.SubscriptionCreatedEvent,SubscriptionCancelledEvent,SubscriptionResumedEvent— 구독 라이프사이클 관련 이벤트입니다.SubscriptionCreatedEvent는payer를 포함합니다.PlanUpdatedEvent— 플랜이 업데이트될 때 발행됩니다.
버전 관리
프로그램 소유 레코드에는 버전 필드가 포함됩니다. 이를 통해 프로그램은 기존 사용자에게 영향을 주지 않으면서 시간이 지남에 따라 계정 데이터를 업그레이드할 수 있습니다. 지원되는 마이그레이션 전략은 다음과 같습니다:
- 지연 인플레이스 업데이트
- 명시적 마이그레이션 명령어
- 취소 후 재생성 폴백
기여자
이 프로젝트는
solana-program/subscriptions 저장소의
기여자들에 의해 유지 관리됩니다.
감사 현황
이 프로그램은 Cantina의 감사를 받았습니다. 감사 현황, 기준 커밋, 수정 검증 커밋,
현재 미감사 델타는 저장소의
audits/ 디렉토리에서
추적됩니다.
데모 애플리케이션
프로그램을 직접 체험해 보고 싶다면, 예제 애플리케이션을 통해 이 섹션에서 다루는 개념의 엔드-투-엔드 구현을 확인하실 수 있습니다.
Is this page helpful?