Tier: 🔴 Hard
Description:
Add comprehensive validation for all shipment creation inputs including:
- Milestone percentage validation (sum must equal 100%)
- Deadline validation (must be in future)
- Payment milestone structure validation
- Symbol length and format validation for checkpoint names
- Prevent duplicate payment milestone names
- Validate sender != receiver and carrier addresses
Tasks:
- Create validation function for ShipmentInput struct
- Add error variants for each validation failure
- Test all validation paths with reject/accept cases
- Document validation rules in function comments
File locations:
- New validation module →
contracts/shipment/src/validate.rs
- Integration in
lib.rs → create_shipment() and create_shipments_batch()
Acceptance Criteria:
- All invalid inputs rejected with appropriate errors
- Tests cover boundary cases (100% milestones, future deadlines)
- Error messages are descriptive and actionable
- Zero panic paths in validation code
PR Checklist:
Reference: Read CONTRIBUTING.md before starting.
Tier: 🔴 Hard
Description:
Add comprehensive validation for all shipment creation inputs including:
Tasks:
File locations:
contracts/shipment/src/validate.rslib.rs→create_shipment()andcreate_shipments_batch()Acceptance Criteria:
PR Checklist:
cargo testshows 100% pass ratecargo clippyshows no warningsReference: Read CONTRIBUTING.md before starting.