Skip to content

Feature/424 425 426 427 payout status query validation#456

Merged
Xoulomon merged 3 commits intoXoulomon:mainfrom
Hexstar-labs:feature/424-425-426-427-payout-status-query-validation
Mar 30, 2026
Merged

Feature/424 425 426 427 payout status query validation#456
Xoulomon merged 3 commits intoXoulomon:mainfrom
Hexstar-labs:feature/424-425-426-427-payout-status-query-validation

Conversation

@Hexstar-labs
Copy link
Copy Markdown
Contributor

Smart Contract: Payout Execution, Status Management, Query Functions & Input Validation

Changes

#424 - Payout Execution

  • execute_payout(): Automated fund distribution with cycle validation, recipient identification, and payout recording

#425 - Group Status Management

  • pause_group(): Pause group operations
  • resume_group(): Resume paused group
  • cancel_group(): Cancel group with state validation

#426 - Query Functions

  • get_group_info(): Retrieve group data
  • get_group_members(): List all members
  • get_contribution_status(): Check cycle contributions
  • get_payout_history_all(): Get all payouts
  • is_member_of_group(): Verify membership

#427 - Input Validation

  • validate_address(): Address validation
  • validate_amount(): Amount validation (positive)
  • validate_duration(): Duration validation (positive)
  • validate_member_bounds(): Member count bounds (min >= 2, max >= min)
  • validate_string(): String validation (non-empty, length limits)

GroupStatus Enhancements

  • as_u32(): Convert status to u32
  • from_u32(): Convert u32 to status

Testing

  • 40+ comprehensive test cases
  • Success and error path coverage
  • Authorization and state transition validation

Files Changed

  • contracts/stellar-save/src/lib.rs (+429 lines)
  • contracts/stellar-save/src/group.rs (+26 lines)

Closes #424
Closes #425
Closes #426
Closes #427

…atus management, query functions, and input validation

- Xoulomon#424: Implement execute_payout() function that orchestrates payout distribution
  - Validates all members have contributed
  - Calculates total pool amount
  - Identifies recipient based on payout position
  - Transfers funds to recipient
  - Records payout and advances cycle
  - Emits PayoutExecuted event

- Xoulomon#425: Implement group status management functions
  - pause_group(): Pause group, preventing contributions/payouts
  - resume_group(): Resume paused group
  - cancel_group(): Cancel group with fund returns
  - Validate state transitions
  - Emit GroupStatusChanged events

- Xoulomon#426: Implement query functions
  - get_group_info(): Get complete group information
  - get_group_members(): Get all members
  - get_contribution_status(): Get cycle contribution status
  - get_payout_history_all(): Get all payout records
  - is_member_of_group(): Check membership

- Xoulomon#427: Implement input validation functions
  - validate_address(): Validate address inputs
  - validate_amount(): Validate numeric amounts
  - validate_duration(): Validate cycle durations
  - validate_member_bounds(): Validate member count bounds
  - validate_string(): Validate string inputs

- Updated GroupStatus enum with u32 conversion methods (as_u32, from_u32)
…xecution, status management, queries, and validation

- Xoulomon#424 Tests: execute_payout success and error cases
- Xoulomon#425 Tests: pause_group, resume_group, cancel_group with authorization and state validation
- Xoulomon#426 Tests: get_group_info, get_group_members, get_contribution_status, get_payout_history_all, is_member_of_group
- Xoulomon#427 Tests: validate_address, validate_amount, validate_duration, validate_member_bounds, validate_string
- Additional tests for GroupStatus u32 conversion methods
@drips-wave
Copy link
Copy Markdown

drips-wave bot commented Mar 30, 2026

@Hexstar-labs Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits.

You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀

Learn more about application limits

@Xoulomon Xoulomon merged commit 60e7208 into Xoulomon:main Mar 30, 2026
4 of 7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

2 participants