Skip to content

[CT-01] Implement Subscription Expiry Checker functions in Rust #1018

@devwums

Description

@devwums

Problem

No standalone helper exists to check whether a subscription has expired. Expiry logic is duplicated across multiple call sites in the contract layer, making it prone to inconsistency.

Proposed Solution

Create contracts/cntr/subscription_expiry.rs implementing two pure functions: pub fn is_subscription_expired(expiry_timestamp: u64, current_timestamp: u64) -> bool and pub fn days_until_expiry(expiry_timestamp: u64, current_timestamp: u64) -> i64 (negative value means expired). No Soroban SDK dependency — pure Rust only. All implementation must live inside contracts/cntr/.

Acceptance Criteria

  • File at contracts/cntr/subscription_expiry.rs
  • is_subscription_expired(100, 200) returns true
  • is_subscription_expired(200, 100) returns false
  • is_subscription_expired(100, 100) returns true (expired at boundary)
  • days_until_expiry returns negative integers for expired subscriptions
  • At least 6 unit tests in a #[cfg(test)] block
  • Compiles with cargo test from the contracts/cntr/ directory

Metadata

Metadata

Assignees

Labels

Stellar WaveIssues in the Stellar wave program

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions