Description
Accepting split ratios that do not sum to exactly 100 % (or 10 000 basis points) silently causes either under-distribution or over-distribution of funds. The contract must enforce ratio integrity at invoice creation time.
Technical Context
In contracts/split/src/lib.rs, add a validate_ratios(ratios: &Vec<u32>) -> Result<(), SplitError> private function that sums the slice and compares to the constant BASIS_POINTS_TOTAL = 10_000u32 defined in types.rs. Call it from create_invoice before writing any storage. Return InvalidRatioSum error on mismatch.
Acceptance Criteria
Description
Accepting split ratios that do not sum to exactly 100 % (or 10 000 basis points) silently causes either under-distribution or over-distribution of funds. The contract must enforce ratio integrity at invoice creation time.
Technical Context
In
contracts/split/src/lib.rs, add avalidate_ratios(ratios: &Vec<u32>) -> Result<(), SplitError>private function that sums the slice and compares to the constantBASIS_POINTS_TOTAL = 10_000u32defined intypes.rs. Call it fromcreate_invoicebefore writing any storage. ReturnInvalidRatioSumerror on mismatch.Acceptance Criteria
InvalidRatioSumInvalidRatioSumEmptyRecipientListerror