Files
mev-beta/orig/internal/tokens/arbitrum.go
Administrator 803de231ba feat: create v2-prep branch with comprehensive planning
Restructured project for V2 refactor:

**Structure Changes:**
- Moved all V1 code to orig/ folder (preserved with git mv)
- Created docs/planning/ directory
- Added orig/README_V1.md explaining V1 preservation

**Planning Documents:**
- 00_V2_MASTER_PLAN.md: Complete architecture overview
  - Executive summary of critical V1 issues
  - High-level component architecture diagrams
  - 5-phase implementation roadmap
  - Success metrics and risk mitigation

- 07_TASK_BREAKDOWN.md: Atomic task breakdown
  - 99+ hours of detailed tasks
  - Every task < 2 hours (atomic)
  - Clear dependencies and success criteria
  - Organized by implementation phase

**V2 Key Improvements:**
- Per-exchange parsers (factory pattern)
- Multi-layer strict validation
- Multi-index pool cache
- Background validation pipeline
- Comprehensive observability

**Critical Issues Addressed:**
- Zero address tokens (strict validation + cache enrichment)
- Parsing accuracy (protocol-specific parsers)
- No audit trail (background validation channel)
- Inefficient lookups (multi-index cache)
- Stats disconnection (event-driven metrics)

Next Steps:
1. Review planning documents
2. Begin Phase 1: Foundation (P1-001 through P1-010)
3. Implement parsers in Phase 2
4. Build cache system in Phase 3
5. Add validation pipeline in Phase 4
6. Migrate and test in Phase 5

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-10 10:14:26 +01:00

117 lines
3.9 KiB
Go

package tokens
import (
"github.com/ethereum/go-ethereum/common"
)
// ArbitrumTokens contains the addresses of popular tokens on Arbitrum
type ArbitrumTokens struct {
// Tier 1 - Major Assets
WETH common.Address
USDC common.Address
USDT common.Address
ARB common.Address
WBTC common.Address
DAI common.Address
LINK common.Address
UNI common.Address
GMX common.Address
GRT common.Address
// Tier 2 - DeFi Blue Chips
USDCe common.Address // Bridged USDC
PENDLE common.Address
RDNT common.Address
MAGIC common.Address
GRAIL common.Address
// Tier 3 - Additional High Volume
AAVE common.Address
CRV common.Address
BAL common.Address
COMP common.Address
MKR common.Address
}
// GetArbitrumTokens returns the addresses of popular tokens on Arbitrum
func GetArbitrumTokens() *ArbitrumTokens {
return &ArbitrumTokens{
// Tier 1 - Major Assets
WETH: common.HexToAddress("0x82aF49447D8a07e3bd95BD0d56f35241523fBab1"), // Wrapped Ether
USDC: common.HexToAddress("0xaf88d065e77c8cC2239327C5EDb3A432268e5831"), // USD Coin (Native)
USDT: common.HexToAddress("0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9"), // Tether USD
ARB: common.HexToAddress("0x912CE59144191C1204E64559FE8253a0e49E6548"), // Arbitrum Token
WBTC: common.HexToAddress("0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f"), // Wrapped Bitcoin
DAI: common.HexToAddress("0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1"), // Dai Stablecoin
LINK: common.HexToAddress("0xf97f4df75117a78c1A5a0DBb814Af92458539FB4"), // ChainLink Token
UNI: common.HexToAddress("0xFa7F8980b0f1E64A2062791cc3b0871572f1F7f0"), // Uniswap
GMX: common.HexToAddress("0xfc5A1A6EB076a2C7aD06eD22C90d7E710E35ad0a"), // GMX
GRT: common.HexToAddress("0x9623063377AD1B27544C965cCd7342f7EA7e88C7"), // The Graph
// Tier 2 - DeFi Blue Chips
USDCe: common.HexToAddress("0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8"), // USD Coin (Bridged)
PENDLE: common.HexToAddress("0x0c880f6761F1af8d9Aa9C466984b80DAb9a8c9e8"), // Pendle
RDNT: common.HexToAddress("0x3082CC23568eA640225c2467653dB90e9250AaA0"), // Radiant Capital
MAGIC: common.HexToAddress("0x539bdE0d7Dbd336b79148AA742883198BBF60342"), // Magic
GRAIL: common.HexToAddress("0x3d9907F9a368ad0a51Be60f7Da3b97cf940982D8"), // Camelot (GRAIL)
// Tier 3 - Additional High Volume
AAVE: common.HexToAddress("0xba5DdD1f9d7F570dc94a51479a000E3BCE967196"), // Aave
CRV: common.HexToAddress("0x11cDb42B0EB46D95f990BeDD4695A6e3fA034978"), // Curve
BAL: common.HexToAddress("0x040d1EdC9569d4Bab2D15287Dc5A4F10F56a56B8"), // Balancer
COMP: common.HexToAddress("0x354A6dA3fcde098F8389cad84b0182725c6C91dE"), // Compound
MKR: common.HexToAddress("0x2e9a6Df78E42a30712c10a9Dc4b1C8656f8F2879"), // Maker
}
}
// GetTriangularPaths returns common triangular arbitrage paths on Arbitrum
func GetTriangularPaths() []TriangularPath {
tokens := GetArbitrumTokens()
return []TriangularPath{
{
Name: "USDC-WETH-WBTC-USDC",
Tokens: []common.Address{tokens.USDC, tokens.WETH, tokens.WBTC},
},
{
Name: "USDC-WETH-ARB-USDC",
Tokens: []common.Address{tokens.USDC, tokens.WETH, tokens.ARB},
},
{
Name: "WETH-USDC-USDT-WETH",
Tokens: []common.Address{tokens.WETH, tokens.USDC, tokens.USDT},
},
{
Name: "USDC-DAI-USDT-USDC",
Tokens: []common.Address{tokens.USDC, tokens.DAI, tokens.USDT},
},
{
Name: "WETH-ARB-GMX-WETH",
Tokens: []common.Address{tokens.WETH, tokens.ARB, tokens.GMX},
},
{
Name: "USDC-LINK-WETH-USDC",
Tokens: []common.Address{tokens.USDC, tokens.LINK, tokens.WETH},
},
}
}
// TriangularPath represents a triangular arbitrage path
type TriangularPath struct {
Name string
Tokens []common.Address
}
// GetMostLiquidTokens returns the most liquid tokens for market scanning
func GetMostLiquidTokens() []common.Address {
tokens := GetArbitrumTokens()
return []common.Address{
tokens.WETH,
tokens.USDC,
tokens.USDT,
tokens.ARB,
tokens.WBTC,
tokens.DAI,
}
}