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
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:
Technical Details:
Notes: