Skip to content

Implement Streaming Rate Calculator #1477

Description

@Shredder401k

Difficulty: Medium
Type: Utility Function

Summary

Implement utility functions to calculate streaming rates (tokens per second/day) for streams.

Current Behaviour

No rate calculation utilities.

Expected Behaviour

Users can query streaming rate for any stream in various time units.

Suggested Implementation

pub fn get_stream_rate_per_second(env: Env, stream_id: u64) -> Result<i128, Error>

pub fn get_stream_rate_per_day(env: Env, stream_id: u64) -> Result<i128, Error>

pub fn get_stream_rate_per_month(env: Env, stream_id: u64) -> Result<i128, Error>

Files or Areas Likely Affected

  • contracts/Contract-V1/src/lib.rs (rate calculator functions)
  • contracts/Contract-V1/src/math.rs (rate calculations)
  • contracts/Contract-V1/src/test.rs

Acceptance Criteria

  • get_stream_rate_per_second function implemented
  • get_stream_rate_per_day function implemented
  • get_stream_rate_per_month function implemented
  • Functions calculate rate = total_amount / (end_time - start_time)
  • Functions return accurate rates for all time units
  • Functions handle paused_duration in calculation
  • Day = 86400 seconds, Month = 2592000 seconds (30 days)
  • Returns Error::StreamNotFound for invalid ID
  • At least 8 tests: rate calculations for various durations, different time units, with paused duration, precision verification, very long streams, very short streams, rate consistency across units, stream not found
  • Rustdoc explains rate calculations
  • Code compiles without warnings

Additional Notes

Rates help users understand cash flow. Use consistent time unit definitions. Account for paused_duration in rate calculations.


Metadata

Metadata

Assignees

Labels

GrantFox OSSIssue tracked in GrantFox OSSMaybe RewardedIssue may be eligible for a GrantFox rewardThird CampaignCampaign: Third Campaign

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions