CRITICAL FIX: Eliminated blocking RPC call in reader.go that was fetching
transaction data we already had from the sequencer feed.
Changes for consistency and reusability:
1. Added RawBytes field to DecodedTransaction to store RLP-encoded transaction
2. Created reusable ToEthereumTransaction() method for type conversion
3. Changed channel from 'chan string' (txHashes) to 'chan *SwapEvent' (swapEvents)
4. Updated processSwapEvent to use transaction from swap event instead of RPC
Impact:
- REMOVES blocking RPC call from hot path (pkg/sequencer/reader.go:357)
- Eliminates network latency from transaction processing pipeline
- Uses data already available from Arbitrum sequencer feed
- Improves throughput and reduces RPC dependency
This fixes the #1 CRITICAL blocker for production deployment identified in
PRODUCTION_READINESS.md.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add GetPoolsByToken method to cache interface and implementation
- Fix interface pointer types (use interface not *interface)
- Fix SwapEvent.TokenIn/TokenOut usage to use GetInputToken/GetOutputToken methods
- Fix ethereum.CallMsg import and usage
- Fix parser factory and validator initialization in main.go
- Remove unused variables and imports
WIP: Still fixing main.go config struct field mismatches
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>