Subscriptions Protocol
The Subscriptions Protocol enables collections to implement subscription-based token ownership with recurring payments, time-limited access, and a tipping system for automatic renewal. This protocol standardizes how subscription tokens are created, distributed, and renewed.
Protocol Overview
Subscription collections allow users to pay a recurring fee + tip to maintain ownership of tokens for specific time periods. The protocol ensures predictable behavior for subscription management across different applications.
Protocol Requirements
Standards Declaration
Collections must include "Subscriptions" in their standards timeline:
{
"standardsTimeline": [
{
"timelineTimes": [{ "start": "1", "end": "18446744073709551615" }],
"standards": ["Subscriptions"]
}
]
}Token ID Configuration
Single Token ID: Only one token ID range (1-1) is permitted
Valid Token IDs: Must match exactly with subscription approval token IDs
Collection Approvals
Must contain at least one subscription faucet approval with the following characteristics:
From Address
fromListId: Must be "Mint" (minting operation)
Approval Criteria Requirements
Coin Transfers
Required: At least one coin transfer specification
Single Denom: All coin transfers must use the same denomination
No Address Override:
overrideFromWithApproverAddressandoverrideToWithInitiatormust be false
Predetermined Balances
Must use incrementedBalances with specific configuration:
Key Requirements:
Amount: Must be exactly 1
Token IDs: Single token ID (1-1)
Duration: Must be greater than 0 (subscription period length)
Override Timestamp: Must be true for faucet functionality
No Increments: Token ID and ownership time increments must be 0
No Recurring: Recurring ownership times must be all 0
Restrictions
No Merkle Challenges: Cannot include merkle challenges
No Token Requirements: Cannot include mustOwnTokens requirements
No Address Restrictions: Cannot require from/to equals initiated by
No Override Approvals: Cannot override incoming approvals
User Subscription Management
Users manage their subscriptions through incoming approvals that complement the collection's faucet approval:
User Incoming Approval Requirements
Basic Configuration
fromListId: Must be "Mint"
Token IDs: Must match subscription approval token IDs exactly
Single Token: Only one token ID range permitted
Coin Transfer Configuration
Predetermined Balances for Renewals
Transfer Limits
Protocol Validation Logic
Collection Validation
API Documentation: doesCollectionFollowSubscriptionProtocol
Faucet Approval Validation
API Documentation: isSubscriptionFaucetApproval
User Approval Validation
API Documentation: isUserRecurringApproval
Usage Examples
Basic Subscription Collection
User Subscription Setup
Implementation Benefits
Standardization: Predictable subscription behavior across applications
Interoperability: Common interface for subscription management
Automation: Recurring payment and renewal mechanisms
Flexibility: Configurable subscription periods and pricing
Validation: Built-in compliance checking for protocol adherence
The Subscriptions Protocol provides a robust foundation for implementing subscription-based token systems while maintaining the flexibility and security of the BitBadges approval system.
Last updated