Skip to main content

Subscriptions Contract

The Subscriptions contract manages monthly subscriptions for VibesFlow Vibe Market access. Users pay 10 tMETIS for 30-day access to the Vibe Market platform.

Contract Overview

Address: 0xC5178c585784B93bc408eAd828701155a41e4f76
Standard: Custom subscription management
Default Price: 10 tMETIS (configurable)
Default Duration: 30 days (configurable)
Features: Time-based subscriptions, automatic expiration, renewal system

Subscription Model

Subscription Structure

Each user’s subscription is tracked with the following data:

Default Configuration

Core Functions

Initial Subscription

Creates a new subscription or extends an existing one. Requirements:
  • Must send exactly subscriptionPrice tMETIS
  • Contract must not be paused
Process:
  1. Validates payment amount
  2. Calculates subscription period
  3. If existing subscription is active, extends from current end time
  4. If no subscription or expired, starts new 30-day period
  5. Updates active subscriber tracking
  6. Transfers payment to treasury
  7. Emits subscription event

Subscription Renewal

Renews an existing subscription. Requirements:
  • Must have previously subscribed
  • Must send exactly subscriptionPrice tMETIS
Process:
  1. Validates existing subscription
  2. If still active, extends from current end time
  3. If expired, starts new period from current time
  4. Increments renewal counter
  5. Updates payment tracking
  6. Transfers to treasury

Subscription Validation

Active Subscription Check

Checks if a user currently has an active subscription:

Time Remaining

Returns seconds remaining on subscription (0 if expired or no subscription).

Expiration Check

Checks if user has a subscription that has expired.

Administrative Functions

Price Management

Updates the subscription price. Emits SubscriptionPriceUpdated event.

Duration Management

Updates the subscription duration. Emits SubscriptionDurationUpdated event.

Treasury Configuration

Updates the treasury receiver address.

Emergency Controls

Pausable Operations

Allows owner to halt all subscription operations in emergencies.

Emergency Withdrawal

Transfers any stuck contract balance to treasury (normal operations send payments immediately).

Maintenance Functions

Cleanup Expired Subscriptions

Maintenance function to update active subscriber count by marking expired subscriptions as inactive:

Analytics Functions

Subscriber Metrics

Provides real-time metrics on subscriber count and revenue.

Configuration Queries

Events

Subscription Events

Configuration Events

Security Features

Payment Validation

Strict payment validation ensures exact amounts:

Reentrancy Protection

All payable functions use nonReentrant modifier:

Access Control

  • Only owner can modify configuration
  • Only owner can pause/unpause operations
  • Users can only manage their own subscriptions

Fallback Protection

Contract rejects direct payments:

Usage Examples

Initial Subscription

Renewal

Checking Subscription Status

Administrative Operations

Integration Points

Vibe Market Access Control

The subscription contract serves as an access control mechanism for the Vibe Market. Frontend applications can check subscription status before granting access:

Revenue Tracking

All subscription payments flow directly to the treasury, providing transparent revenue tracking:

Subscription Lifecycle

1

Initial Subscription

User calls subscribe() with 10 tMETIS, receives 30-day access
2

Active Period

User has full Vibe Market access, tracked via isSubscribed()
3

Renewal

User can renew before or after expiration via renewSubscription()
4

Expiration

Subscription expires automatically, access is revoked
5

Cleanup

Periodic cleanup maintains accurate active subscriber count

Next Steps

Delegation System

Learn about delegation mechanics

Deployed Contracts

View contract addresses