|
@@ -12,8 +12,8 @@ class Config:
|
|
|
"""Configuration class for the Hyperliquid trading bot."""
|
|
|
|
|
|
# Hyperliquid API Configuration
|
|
|
- HYPERLIQUID_PRIVATE_KEY: Optional[str] = os.getenv('HYPERLIQUID_PRIVATE_KEY') # Wallet address
|
|
|
HYPERLIQUID_SECRET_KEY: Optional[str] = os.getenv('HYPERLIQUID_SECRET_KEY') # API generator key
|
|
|
+ HYPERLIQUID_WALLET_ADDRESS: Optional[str] = os.getenv('HYPERLIQUID_WALLET_ADDRESS') # Wallet address
|
|
|
HYPERLIQUID_TESTNET: bool = os.getenv('HYPERLIQUID_TESTNET', 'true').lower() == 'true'
|
|
|
|
|
|
# Trading Bot Configuration
|
|
@@ -46,22 +46,14 @@ class Config:
|
|
|
is_valid = True
|
|
|
|
|
|
# Validate Hyperliquid settings
|
|
|
- if not cls.HYPERLIQUID_PRIVATE_KEY:
|
|
|
- logger.error("❌ HYPERLIQUID_PRIVATE_KEY (wallet address) is required")
|
|
|
+ if not cls.HYPERLIQUID_WALLET_ADDRESS:
|
|
|
+ logger.error("❌ HYPERLIQUID_WALLET_ADDRESS is required")
|
|
|
is_valid = False
|
|
|
|
|
|
if not cls.HYPERLIQUID_SECRET_KEY:
|
|
|
logger.error("❌ HYPERLIQUID_SECRET_KEY (API generator key) is required")
|
|
|
is_valid = False
|
|
|
|
|
|
- # Validate wallet address or private key format
|
|
|
- if not cls.HYPERLIQUID_PRIVATE_KEY and cls.HYPERLIQUID_SECRET_KEY:
|
|
|
- # Check if private key looks like an address
|
|
|
- if not cls.HYPERLIQUID_PRIVATE_KEY.startswith('0x') and len(cls.HYPERLIQUID_PRIVATE_KEY) < 40:
|
|
|
- logger.warning("⚠️ HYPERLIQUID_WALLET_ADDRESS not set - will attempt to use private key as address")
|
|
|
- elif len(cls.HYPERLIQUID_PRIVATE_KEY) < 64:
|
|
|
- logger.warning("⚠️ HYPERLIQUID_WALLET_ADDRESS not set and private key appears short - consider setting explicit wallet address")
|
|
|
-
|
|
|
# Validate Telegram settings (if enabled)
|
|
|
if cls.TELEGRAM_ENABLED:
|
|
|
if not cls.TELEGRAM_BOT_TOKEN:
|
|
@@ -110,12 +102,14 @@ class Config:
|
|
|
# Add authentication if available
|
|
|
# Hyperliquid CCXT implementation expects:
|
|
|
# - apiKey: API generator key (SECRET_KEY)
|
|
|
- # - secret: wallet address (PRIVATE_KEY)
|
|
|
+ # - walletAddress: wallet address (WALLET_ADDRESS)
|
|
|
+ # - secret: (optional, set to wallet address for compatibility)
|
|
|
if cls.HYPERLIQUID_SECRET_KEY:
|
|
|
config['apiKey'] = cls.HYPERLIQUID_SECRET_KEY # API generator key
|
|
|
|
|
|
- if cls.HYPERLIQUID_PRIVATE_KEY:
|
|
|
- config['secret'] = cls.HYPERLIQUID_PRIVATE_KEY # Wallet address
|
|
|
+ if cls.HYPERLIQUID_WALLET_ADDRESS:
|
|
|
+ config['walletAddress'] = cls.HYPERLIQUID_WALLET_ADDRESS # Wallet address
|
|
|
+ config['secret'] = cls.HYPERLIQUID_WALLET_ADDRESS # Also set as secret for backward compatibility
|
|
|
|
|
|
return config
|
|
|
|
|
@@ -124,8 +118,8 @@ class Config:
|
|
|
"""Print current configuration (hiding sensitive data)."""
|
|
|
logger.info("🔧 Configuration:")
|
|
|
logger.info(f" 📡 Hyperliquid Testnet: {cls.HYPERLIQUID_TESTNET}")
|
|
|
- logger.info(f" 🔑 Private Key: {'✅ Set' if cls.HYPERLIQUID_PRIVATE_KEY else '❌ Missing'}")
|
|
|
- logger.info(f" 🔐 Secret Key: {'✅ Set' if cls.HYPERLIQUID_SECRET_KEY else '⚠️ Missing (may be optional)'}")
|
|
|
+ logger.info(f" 🏠 Wallet Address: {'✅ Set' if cls.HYPERLIQUID_WALLET_ADDRESS else '❌ Missing'}")
|
|
|
+ logger.info(f" 🔑 API Generator Key: {'✅ Set' if cls.HYPERLIQUID_SECRET_KEY else '❌ Missing'}")
|
|
|
logger.info(f" 📱 Telegram: {'✅ Enabled' if cls.TELEGRAM_ENABLED else '❌ Disabled'}")
|
|
|
logger.info(f" 🔍 Log Level: {cls.LOG_LEVEL}")
|
|
|
logger.info(f" 💾 Log to File: {cls.LOG_TO_FILE}")
|