Files
mev-beta/pkg/arbitrage/flash_swap_utils.go
Krypto Kajun 850223a953 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>
2025-10-17 00:12:55 -05:00

39 lines
938 B
Go

package arbitrage
import (
"math/big"
"github.com/ethereum/go-ethereum/accounts/abi"
"github.com/ethereum/go-ethereum/common"
)
type flashSwapCallback struct {
TokenPath []common.Address
PoolPath []common.Address
Fees []*big.Int
MinAmountOut *big.Int
}
func encodeFlashSwapCallback(tokenPath []common.Address, poolPath []common.Address, fees []*big.Int, minAmountOut *big.Int) ([]byte, error) {
tupleType, err := abi.NewType("tuple", "flashSwapCallback", []abi.ArgumentMarshaling{
{Name: "tokenPath", Type: "address[]"},
{Name: "poolPath", Type: "address[]"},
{Name: "fees", Type: "uint256[]"},
{Name: "minAmountOut", Type: "uint256"},
})
if err != nil {
return nil, err
}
arguments := abi.Arguments{{Type: tupleType}}
callback := flashSwapCallback{
TokenPath: tokenPath,
PoolPath: poolPath,
Fees: fees,
MinAmountOut: minAmountOut,
}
return arguments.Pack(callback)
}