구독 위임 프로그램은 개발자가 사용자로 하여금 명확한 한도 내에서 지갑으로부터의 향후 토큰 전송을 승인할 수 있도록 합니다. 반복 결제, 구독, 가맹점 청구 및 사용자가 매번 수동으로 서명할 필요가 없는 기타 흐름을 위해 설계되었습니다.
목적
Solana token account는 다른 권한이 토큰을 이동할 수 있도록 승인할 수 있지만, 각 token account는 한 번에 하나의 승인된 권한만 가질 수 있습니다. 이로 인해 하나의 지갑이 동일한 토큰에 대해 월간 구독, 고정 지출 한도, 가맹점 청구 계약 등 여러 지출 약정을 안전하게 지원하기 어렵습니다.
이 프로그램은 각 (user, token mint) 쌍에 프로그램이 제어하는 구독 권한을
부여함으로써 이 문제를 해결합니다. 사용자의 token account는 해당 권한을 한 번
승인합니다. 그런 다음 프로그램은 각 요청된 전송을 별도의 레코드와 대조하여 누가
자금을 인출할 수 있는지, 얼마나 인출할 수 있는지, 승인이 언제 만료되거나
재설정되는지를 확인합니다.
구독 권한은 그 자체로 자금을 이동할 수 없습니다. 전송은 사용자의 활성 승인 중 하나와 일치할 때만 성공합니다.
프로그램 ID
De1egAFMkMWZSN5rYXRj9CAdheBamobVNubTsi9avR44
프로그램 ID는 program/src/lib.rs에 선언되어 있습니다. 로컬 Surfpool
워크플로우는 이 정식 주소에 프로그램을 설치합니다.
위임 모델
이 프로그램은 세 가지 승인 모델을 지원합니다:
| 모델 | 목적 |
|---|---|
| 고정 위임 | 다른 지갑이나 서비스가 선택적으로 만료 시간까지 고정된 총액까지 지출할 수 있도록 허용합니다. |
| 반복 위임 | 다른 지갑이나 서비스가 매일, 매주 또는 매월과 같이 매 기간마다 재설정되는 한도까지 지출할 수 있도록 허용합니다. |
| 구독 플랜 | 가맹점이 사용자가 수락할 수 있는 청구 조건을 게시하도록 한 다음, 승인된 수금자가 각 청구 기간마다 구독자에게 요금을 청구할 수 있도록 허용합니다. |
지원되는 토큰
이 프로그램은 SPL Token과 Token-2022로 생성된 토큰을 모두 지원합니다. 거부되는
유일한 Token-2022 확장은 구성된 TransferHook(훅 authority 또는
program_id이 설정된 경우)입니다. 비활성 TransferHook(둘 다 설정되지 않아
영구적으로 변경 불가)와 그 외 모든 확장은 허용됩니다.
온체인 이벤트
이 프로그램은 인덱서와 애플리케이션이 중요한 활동을 추적할 수 있도록 온체인 이벤트를 발생시킵니다. 이러한 이벤트는 구독 변경 사항과 고정형, 반복형, 구독 플랜 흐름을 통해 이루어진 전송을 포함합니다.
버전 관리
프로그램 소유 레코드에는 버전 필드가 포함되어 있습니다. 이를 통해 프로그램은 기존 사용자를 중단시키지 않으면서 시간이 지남에 따라 계정 데이터를 업그레이드할 수 있는 경로를 제공합니다. 마이그레이션 전략은 다음을 지원합니다:
- 지연 방식 현장 업데이트
- 명시적 마이그레이션 명령어
- 철회 및 재생성 대체 방식
기여자
이 프로젝트는
solana-program/subscriptions 저장소의
기여자들에 의해 유지 관리됩니다.
감사 상태
이 프로그램은 Cantina의 감사를 받았습니다. 감사 상태, 기준 커밋, 수정 검증 커밋
및 현재 미감사 델타는 저장소의
audits/ 디렉토리에서
추적됩니다.
데모 애플리케이션
프로그램을 직접 사용해 보고 싶다면, 이 섹션에서 다룬 개념의 전체적인 구현 방식을 확인할 수 있는 예제 애플리케이션을 여기에서 살펴볼 수 있습니다.
Is this page helpful?