Problem
StakeParams::new_tao() accepts negative TAO amounts without validation. When a negative f64 is cast to u64, it overflows and produces a massive value (close to u64::MAX).
Example
Calling StakeParams::new_tao(hotkey, 1, -1.0) would attempt to stake ~18 billion TAO instead of rejecting the negative amount.
Fix
PR #7 contains the fix:
- Validates that TAO amount is non-negative
- Returns Result type for proper error handling
- Adds tests for negative amount rejection
See: #7