サブスクリプション委任プログラムは、開発者がユーザーに対して、明確な制限付きでウォレットからの将来のトークン転送を承認させることを可能にします。これは、定期的な支払い、サブスクリプション、加盟店による請求、およびユーザーが各転送に手動で署名する必要がないその他のフローのために設計されています。
目的
Solanaのtoken accountは、別の権限がトークンを移動することを承認できますが、各token accountは一度に1つの承認された権限のみを持つことができます。そのため、1つのウォレットが同じトークンに対して複数の支出取り決め(月額サブスクリプション、固定支出許容額、加盟店請求契約など)を安全にサポートすることが困難になります。
このプログラムは、各(user, token mint)ペアにプログラム制御されたサブスクリプション権限を付与することで、この問題を解決します。ユーザーのtoken
accountは、この権限を一度承認します。その後、プログラムは、要求された各転送を、誰が資金を引き出せるか、どれだけ引き出せるか、承認がいつ期限切れまたはリセットされるかを定義する個別の記録と照合します。
サブスクリプション権限は単独では資金を移動できません。転送は、ユーザーのアクティブな承認の1つと一致する場合にのみ成功します。
プログラムID
De1egAFMkMWZSN5rYXRj9CAdheBamobVNubTsi9avR44
プログラムIDはprogram/src/lib.rsで宣言されています。ローカルのSurfpoolワークフローは、この正規アドレスにプログラムをインストールします。
委任モデル
このプログラムは3つの承認モデルをサポートしています:
| モデル | 目的 |
|---|---|
| 固定委任 | 別のウォレットまたはサービスに、オプションで有効期限まで、固定された総額まで支出させます。 |
| 定期委任 | 別のウォレットまたはサービスに、毎日、毎週、または毎月など、期間ごとにリセットされる上限まで支出させます。 |
| サブスクリプションプラン | 加盟店が請求条件を公開し、ユーザーがそれを承認できるようにし、承認された徴収者が各請求期間にサブスクライバーに課金できるようにします。 |
サポートされているトークン
このプログラムは、SPL
TokenおよびToken-2022で作成されたトークンをサポートしています。拒否されるToken-2022拡張機能は、設定済みのTransferHook(フックauthorityまたはprogram_idが設定されている場合)のみです。不活性なTransferHook(両方とも未設定で、永続的に不変)およびその他すべての拡張機能は許可されています。
オンチェーンイベント
プログラムはオンチェーンイベントを発行するため、インデクサーやアプリケーションが重要なアクティビティを追跡できます。これらのイベントは、サブスクリプションの変更や、固定、定期、サブスクリプションプランフローを通じて行われる転送をカバーしています。
バージョン管理
プログラムが所有するレコードにはバージョンフィールドが含まれています。これにより、プログラムは既存のユーザーに影響を与えることなく、時間の経過とともにアカウントデータをアップグレードするための道筋を得ることができます。移行戦略は以下をサポートしています:
- 遅延インプレース更新
- 明示的な移行インストラクション
- 取り消しと再作成のフォールバック
コントリビューター
このプロジェクトは、solana-program/subscriptionsリポジトリのコントリビューターによって維持されています。
監査ステータス
このプログラムはCantinaによって監査されています。監査ステータス、ベースラインコミット、修正検証済みコミット、および現在の未監査差分は、リポジトリのaudits/ディレクトリで追跡されています。
デモアプリケーション
プログラムを実際に試してみたい場合は、こちらのサンプルアプリケーションをご覧ください。このセクションで扱った概念のエンドツーエンドの実装を確認できます。
Is this page helpful?