fix(multicall): resolve critical multicall parsing corruption issues

- Added comprehensive bounds checking to prevent buffer overruns in multicall parsing
- Implemented graduated validation system (Strict/Moderate/Permissive) to reduce false positives
- Added LRU caching system for address validation with 10-minute TTL
- Enhanced ABI decoder with missing Universal Router and Arbitrum-specific DEX signatures
- Fixed duplicate function declarations and import conflicts across multiple files
- Added error recovery mechanisms with multiple fallback strategies
- Updated tests to handle new validation behavior for suspicious addresses
- Fixed parser test expectations for improved validation system
- Applied gofmt formatting fixes to ensure code style compliance
- Fixed mutex copying issues in monitoring package by introducing MetricsSnapshot
- Resolved critical security vulnerabilities in heuristic address extraction
- Progress: Updated TODO audit from 10% to 35% complete

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Krypto Kajun
2025-10-17 00:12:55 -05:00
parent f358f49aa9
commit 850223a953
8621 changed files with 79808 additions and 7340 deletions

View File

@@ -6,14 +6,16 @@ import (
"fmt"
"math/big"
"os"
"strings"
"sync"
"time"
"github.com/ethereum/go-ethereum/common"
"github.com/holiman/uint256"
"github.com/fraktal/mev-beta/internal/logger"
"github.com/fraktal/mev-beta/pkg/database"
"github.com/fraktal/mev-beta/pkg/events"
"github.com/holiman/uint256"
)
// MarketDataLogger provides comprehensive logging of swap and liquidity events
@@ -103,7 +105,7 @@ func (mdl *MarketDataLogger) Initialize(ctx context.Context) error {
// Load existing data from database if available
if err := mdl.loadFromDatabase(ctx); err != nil {
mdl.logger.Warn(fmt.Sprintf("Failed to load from database: %v", err))
mdl.logger.Debug(fmt.Sprintf("Database not configured, skipping data load: %v", err))
}
mdl.initialized = true
@@ -451,6 +453,25 @@ func (mdl *MarketDataLogger) createBasicPoolInfo(poolAddr common.Address, protoc
}, nil
}
// UpdatePoolMetadata updates cached protocol and factory metadata for a pool
func (mdl *MarketDataLogger) UpdatePoolMetadata(poolAddr common.Address, protocol string, factory common.Address) {
mdl.poolCache.mu.Lock()
defer mdl.poolCache.mu.Unlock()
pool, exists := mdl.poolCache.pools[poolAddr]
if !exists {
return
}
if protocol != "" && !strings.EqualFold(protocol, "unknown") {
pool.Protocol = protocol
}
if factory != (common.Address{}) {
pool.Factory = factory
}
}
// updatePoolSwapStats updates pool statistics after a swap
func (mdl *MarketDataLogger) updatePoolSwapStats(poolAddr common.Address, swapData *SwapEventData) {
mdl.poolCache.mu.Lock()