-
Notifications
You must be signed in to change notification settings - Fork 11
Open
Labels
ODHack 14ODODcontractissue is related to contractissue is related to contracthelp wantedExtra attention is neededExtra attention is needed
Description
Title: Implement Fantasy Team Composition Rules
Description
Create a Cairo 2.0 contract to enforce fantasy team rules (player positions, salary cap, captain selection).
Acceptance Criteria:
- Validates team has exactly 11 players
- Ensures 1 goalkeeper, 3-5 defenders, 3-5 midfielders, 1-3 forwards
- Verifies total player salaries ≤ 100M "SportSparX Bucks"
- Requires exactly 1 captain (2x points multiplier)
- Returns validation errors with error codes
Technical Details:
#[starknet::contract]
mod TeamValidation {
#[derive(Drop, Serde)]
struct Player {
position: u8, // 0=GK, 1=DEF, 2=MID, 3=FWD
salary: u64,
is_captain: bool
}
#[external(v0)]
fn validate_team(ref self: ContractState, players: Array<Player>) -> Result<(), u8> {
let mut total_salary = 0;
let mut captain_count = 0;
let mut position_counts = [0; 4];
for player in players.iter() {
// Position validation
if player.position > 3 { return Result::Err(1) }
position_counts[player.position] += 1;
// Salary cap
total_salary += player.salary;
if total_salary > 100_000_000 { return Result::Err(2) }
// Captain check
if player.is_captain {
captain_count += 1;
if captain_count > 1 { return Result::Err(3) }
}
}
// Team composition rules
if players.len() != 11 { return Result::Err(4) }
if position_counts[0] != 1 { return Result::Err(5) } // GK
if position_counts[1] < 3 || position_counts[1] > 5 { return Result::Err(6) } // DEF
if position_counts[2] < 3 || position_counts[2] > 5 { return Result::Err(7) } // MID
if position_counts[3] < 1 || position_counts[3] > 3 { return Result::Err(8) } // FWD
Result::Ok(())
}
}Notes:
- Use custom error codes for client-side translation
- Add unit tests for all validation scenarios
- Implement gas optimization with early returns
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
ODHack 14ODODcontractissue is related to contractissue is related to contracthelp wantedExtra attention is neededExtra attention is needed