Files
mev-beta/bindings/uniswap_v2/IUniswapV2Pair.json
Administrator 3505921207 feat: comprehensive audit infrastructure and Phase 1 refactoring
This commit includes:

## Audit & Testing Infrastructure
- scripts/audit.sh: 12-section comprehensive codebase audit
- scripts/test.sh: 7 test types (unit, integration, race, bench, coverage, contracts, pkg)
- scripts/check-compliance.sh: SPEC.md compliance validation
- scripts/check-docs.sh: Documentation coverage checker
- scripts/dev.sh: Unified development script with all commands

## Documentation
- SPEC.md: Authoritative technical specification
- docs/AUDIT_AND_TESTING.md: Complete testing guide (600+ lines)
- docs/SCRIPTS_REFERENCE.md: All scripts documented (700+ lines)
- docs/README.md: Documentation index and navigation
- docs/DEVELOPMENT_SETUP.md: Environment setup guide
- docs/REFACTORING_PLAN.md: Systematic refactoring plan

## Phase 1 Refactoring (Critical Fixes)
- pkg/validation/helpers.go: Validation functions for addresses/amounts
- pkg/sequencer/selector_registry.go: Thread-safe selector registry
- pkg/sequencer/reader.go: Fixed race conditions with atomic metrics
- pkg/sequencer/swap_filter.go: Fixed race conditions, added error logging
- pkg/sequencer/decoder.go: Added address validation

## Changes Summary
- Fixed race conditions on 13 metric counters (atomic operations)
- Added validation at all ingress points
- Eliminated silent error handling
- Created selector registry for future ABI migration
- Reduced SPEC.md violations from 7 to 5

Build Status:  All packages compile
Compliance:  No race conditions, no silent failures
Documentation:  1,700+ lines across 5 comprehensive guides

🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-11 07:17:13 +01:00

53 lines
1.7 KiB
JSON

[
{
"inputs": [
{"internalType": "uint256", "name": "amount0Out", "type": "uint256"},
{"internalType": "uint256", "name": "amount1Out", "type": "uint256"},
{"internalType": "address", "name": "to", "type": "address"},
{"internalType": "bytes", "name": "data", "type": "bytes"}
],
"name": "swap",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"anonymous": false,
"inputs": [
{"indexed": true, "internalType": "address", "name": "sender", "type": "address"},
{"indexed": false, "internalType": "uint256", "name": "amount0In", "type": "uint256"},
{"indexed": false, "internalType": "uint256", "name": "amount1In", "type": "uint256"},
{"indexed": false, "internalType": "uint256", "name": "amount0Out", "type": "uint256"},
{"indexed": false, "internalType": "uint256", "name": "amount1Out", "type": "uint256"},
{"indexed": true, "internalType": "address", "name": "to", "type": "address"}
],
"name": "Swap",
"type": "event"
},
{
"inputs": [],
"name": "token0",
"outputs": [{"internalType": "address", "name": "", "type": "address"}],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "token1",
"outputs": [{"internalType": "address", "name": "", "type": "address"}],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getReserves",
"outputs": [
{"internalType": "uint112", "name": "reserve0", "type": "uint112"},
{"internalType": "uint112", "name": "reserve1", "type": "uint112"},
{"internalType": "uint32", "name": "blockTimestampLast", "type": "uint32"}
],
"stateMutability": "view",
"type": "function"
}
]