Files
mev-beta/docs/MATH_AUDIT_QUICK_REFERENCE.md

203 lines
4.9 KiB
Markdown

# Mathematical Audit - Quick Reference Guide
**Audit Date**: November 1, 2025
**Status**: CRITICAL ISSUES IDENTIFIED
**Documents**:
- Full Report: `MATHEMATICAL_AUDIT_DETAILED_20251101.md`
- Fix Examples: `MATH_FIX_EXAMPLES_20251101.md`
- Summary: `../MATHEMATICAL_AUDIT_SUMMARY.txt`
---
## Critical Issues at a Glance
### 🔴 Issue #1: Slippage Formula Completely Wrong
```
File: pkg/profitcalc/slippage_protection.go:59-67
Formula: slippage = tradeSize / 2.0
Correct: Use Uniswap V2 constant product invariant
Impact: Slippage estimates are 2-5x off actual
Severity: CRITICAL - Causes loss approvals
```
### 🔴 Issue #2: Float-to-Int Truncation Rejects Valid Profits
```
File: pkg/profitcalc/profit_calc.go:214-216
Problem: netProfit.Int(nil) removes all decimals
Impact: 0.00005 ETH profit (valid) becomes 0 (rejected)
Severity: CRITICAL - Rejects legitimate opportunities
```
### 🔴 Issue #3: Arbitrary 100% Profit Margin Cap
```
File: pkg/profitcalc/profit_calc.go:199-210
Problem: Rejects opportunities with >100% profit
Impact: Rejects all high-margin valid arbitrage
Severity: CRITICAL - Mathematically invalid
```
### 🟠 Issue #4: Price Impact Misses Fee Deduction
```
File: pkg/math/exchange_math.go:128-146
Problem: Uses raw amountIn, not fee-adjusted amount
Impact: Underestimates price impact by 0.3-2%
Severity: HIGH - Leads to wrong risk assessment
```
### 🟠 Issue #5: Arbitrary 20% Gas Buffer
```
File: pkg/profitcalc/profit_calc.go:271-273
Problem: No dynamic adjustment based on network state
Impact: Profit underestimation of ~1-5%
Severity: MEDIUM - Systematic bias
```
---
## What This Means
| Current State | After Fixes |
|---|---|
| Rejects >100% profit margins | Accepts all valid margins |
| Slippage off by 2-5x | Accurate slippage estimation |
| Rejects tiny profits (<1 wei) | Accepts all valid profits |
| Gas costs overestimated 20% | Dynamic, accurate gas cost |
| Risk assessment unreliable | Trustworthy risk assessment |
---
## Files Needing Fixes
### Must Fix (Immediate)
- `pkg/profitcalc/profit_calc.go` - Lines 199-210, 214-216, 271-273
- `pkg/profitcalc/slippage_protection.go` - Lines 56, 59-67
- `pkg/math/exchange_math.go` - Lines 128-146
### Should Fix (Soon)
- `pkg/math/decimal_handler.go` - Lines 54-58, 308-312
- `pkg/uniswap/pricing.go` - Lines 22-45
---
## Quick Fix Checklist
- [ ] Remove 100% profit margin cap
- [ ] Fix float-to-int profit threshold comparison
- [ ] Implement proper slippage formula
- [ ] Add fee adjustment to price impact
- [ ] Add division-by-zero checks
- [ ] Test against known Arbitrum DEX prices
- [ ] Create test cases for edge cases
- [ ] Document all changes
- [ ] Code review by team
- [ ] Deploy with monitoring
---
## Testing Requirements
Create tests for:
```go
High profit margins (>100%)
Small profits (<0.001 ETH)
Very large trades (>50% pool)
Zero/near-zero liquidity
Fee-adjusted calculations
Different fee tiers (0.01%, 0.3%, 1%)
Slippage vs known values
```
---
## Code Snippets
### WRONG - Profit Margin Cap
```go
if profitMarginFloat > 1.0 {
opportunity.IsExecutable = false // ❌ Wrong!
}
```
### RIGHT - No Arbitrary Cap
```go
if !math.IsNaN(profitMarginFloat) && profitMarginFloat >= 0 {
opportunity.ProfitMargin = profitMarginFloat // ✓ Correct
}
```
### WRONG - Slippage Formula
```go
estimatedSlippage := tradeSizeFloat / 2.0 // ❌ Wrong!
```
### RIGHT - Proper Formula
```go
// Use: slippage = tradeSize / (2*liquidity + tradeSize)
// Or implement actual AMM calculation
```
### WRONG - Type Conversion
```go
netProfitWei, _ := netProfit.Int(nil) // ❌ Truncates decimals!
```
### RIGHT - Keep as Float
```go
if netProfit.Cmp(minThresholdAsFloat) >= 0 { // ✓ Preserves precision
// Execute
}
```
---
## Impact on Operations
### Before Fixes
- ❌ Many profitable opportunities are rejected
- ❌ Slippage estimates are unreliable
- ❌ Gas cost assumptions are wrong
- ❌ High-margin trades deemed "unrealistic"
### After Fixes
- ✅ All valid opportunities are considered
- ✅ Accurate risk assessment
- ✅ Dynamic gas estimation
- ✅ Correct profit calculations
---
## Next Actions
1. **Immediate** (Today)
- Review this audit
- Understand the implications
- Plan fix implementation
2. **Short-term** (This week)
- Create fix branches
- Implement critical fixes
- Add test cases
- Code review
3. **Medium-term** (This month)
- Validate against real data
- Monitor in staging
- Deploy to production
- Monitor metrics
---
## Resources
- **Detailed Analysis**: MATHEMATICAL_AUDIT_DETAILED_20251101.md
- **Code Examples**: MATH_FIX_EXAMPLES_20251101.md
- **Full Summary**: ../MATHEMATICAL_AUDIT_SUMMARY.txt
- **Uniswap Docs**: https://docs.uniswap.org/
- **AMM Formulas**: https://github.com/Uniswap/v3-periphery
---
**Generated**: November 1, 2025
**Status**: Ready for implementation
**Questions**: See detailed audit document