# =================================================================== # NETWORK CONFIGURATION # =================================================================== # Network identifier (e.g., BASE_SEPOLIA, MAINNET, etc.) DEPLOYMENT_NETWORK= # Private key for deployment account ACCOUNT_PRIVATE_KEY= # Etherscan API key for contract verification (basescan sepolia) ETHERSCAN_API_KEY= # RPC URL for the target network RPC_URL= # =================================================================== # DEPLOYER & MULTISIG ADDRESSES # =================================================================== # Initial deployer address (will deploy contracts) DEPLOYER_BASE_SEPOLIA= # Alphix Manager (initial owner, will transfer to multisig later) ALPHIX_MANAGER_BASE_SEPOLIA= # Future manager address (multisig for production) FUTURE_MANAGER_BASE_SEPOLIA= # Satoshui address (optional secondary admin) SATOSHUI_BASE_SEPOLIA= # =================================================================== # UNISWAP V4 CORE ADDRESSES # =================================================================== # Uniswap V4 PoolManager contract POOL_MANAGER_BASE_SEPOLIA= # Uniswap V4 PositionManager contract POSITION_MANAGER_BASE_SEPOLIA= # Pool swap test router (for testing) POOL_SWAP_TEST_ROUTER_BASE_SEPOLIA= # CREATE2 factory deployer (for deterministic hook address) CREATE2_DEPLOYER_BASE_SEPOLIA= # =================================================================== # ALPHIX SYSTEM ADDRESSES (filled during deployment) # =================================================================== # Deployment order: 02 → 03 → 04 → 05 → 06 # # IMPORTANT: After deploying script 04 (Alphix Hook), add the address # to ALPHIX_HOOK below BEFORE running script 05 (AlphixLogic)! # Script 02: AccessManager contract address ACCESS_MANAGER_BASE_SEPOLIA= # Script 03: Registry contract address REGISTRY_BASE_SEPOLIA= # Script 04: Alphix Hook contract address (REQUIRED for script 05) # This is the main hook contract that users interact with ALPHIX_HOOK_BASE_SEPOLIA= # Script 05: AlphixLogic implementation contract address ALPHIX_LOGIC_IMPL_BASE_SEPOLIA= # Script 05: AlphixLogic proxy contract address (hook uses this) ALPHIX_LOGIC_PROXY_BASE_SEPOLIA= # =================================================================== # TOKEN ADDRESSES # =================================================================== # Token addresses for pool creation # IMPORTANT: TOKEN0 MUST BE NUMERICALLY LESS THAN TOKEN1!!! DEPLOYMENT_TOKEN0_BASE_SEPOLIA= DEPLOYMENT_TOKEN1_BASE_SEPOLIA= # Custom Alphix tokens # aUSDC TOKEN0_BASE_SEPOLIA= # aUSDT TOKEN1_BASE_SEPOLIA= # aETH TOKEN2_BASE_SEPOLIA= # aBTC TOKEN3_BASE_SEPOLIA= # aDAI TOKEN4_BASE_SEPOLIA= # ETH address (native token) ETH_ADDRESS_BASE_SEPOLIA= # =================================================================== # TOKEN METADATA # =================================================================== TOKEN0_DECIMALS_BASE_SEPOLIA= TOKEN1_DECIMALS_BASE_SEPOLIA= TOKEN2_DECIMALS_BASE_SEPOLIA= TOKEN3_DECIMALS_BASE_SEPOLIA= TOKEN4_DECIMALS_BASE_SEPOLIA= # =================================================================== # POOL CONFIGURATION # =================================================================== # Initial pool configuration POOL_INITIAL_FEE_BASE_SEPOLIA= POOL_INITIAL_TARGET_RATIO_BASE_SEPOLIA= # Pool type: 0=STABLE, 1=STANDARD, 2=VOLATILE POOL_TYPE_BASE_SEPOLIA= POOL_TICK_SPACING_BASE_SEPOLIA= # =================================================================== # ROLE-BASED ACCESS CONTROL # =================================================================== # Fee Poker role - address allowed to call poke() to update dynamic fees FEE_POKER_BASE_SEPOLIA= # Registrar role - address allowed to register pools and contracts REGISTRAR_BASE_SEPOLIA= # =================================================================== # POOL CREATION PARAMETERS # =================================================================== # Starting price for the pool (sqrtPriceX96) # floor(sqrt(token1/token0) * 2**96) (take decimals into account) # Example: 79228162514264337593543950336 = sqrt(1) * 2^96 (1:1 price) POOL_START_PRICE_BASE_SEPOLIA= # Liquidity amounts in BASE UNITS (wei) # Examples: # - For 0.1 USDC (6 decimals): POOL_TOKEN0_AMOUNT_BASE_SEPOLIA=100000 # - For 0.5 ETH (18 decimals): POOL_TOKEN0_AMOUNT_BASE_SEPOLIA=500000000000000000 # - For 100 USDC (6 decimals): POOL_TOKEN0_AMOUNT_BASE_SEPOLIA=100000000 # - For 1.5 WBTC (8 decimals): POOL_TOKEN0_AMOUNT_BASE_SEPOLIA=150000000 # Tip: Use `cast --to-wei 0.5 ether` to convert human-readable to wei for 18-decimal tokens POOL_TOKEN0_AMOUNT_BASE_SEPOLIA= POOL_TOKEN1_AMOUNT_BASE_SEPOLIA= # Liquidity range (in tick spacings around current price) # Example: 100 means liquidity from (currentTick - 100*tickSpacing) to (currentTick + 100*tickSpacing) # Automatically rounded to valid tick multiples using TickBitmap.compress # Note: 1 tick ≈ 0.01% change in price POOL_LIQUIDITY_RANGE_BASE_SEPOLIA= # Pool ID (filled after pool creation, copy from script output) POOL_ID_BASE_SEPOLIA= # =================================================================== # SWAP PARAMETERS # =================================================================== # Swap amount in BASE UNITS (wei), NOT human-readable # IMPORTANT: Decimals depend on swap type! # - For exact INPUT (SWAP_EXACT_INPUT=1): Use INPUT token decimals # - For exact OUTPUT (SWAP_EXACT_INPUT=0): Use OUTPUT token decimals # Examples: # - Sell 0.1 ETH → USDC (exact input): SWAP_AMOUNT=100000000000000000 (ETH decimals: 18) # - Buy 50 USDC with ETH (exact output): SWAP_AMOUNT=50000000 (USDC decimals: 6) # - Use `cast --to-wei 0.1 ether` for 18-decimal tokens SWAP_AMOUNT_BASE_SEPOLIA= # Swap type: 1 = exact input (you specify how much to sell) # 0 = exact output (you specify how much to buy) SWAP_EXACT_INPUT_BASE_SEPOLIA= # Swap direction: 1 = token0->token1, 0 = token1->token0 SWAP_ZERO_FOR_ONE_BASE_SEPOLIA= # Max input amount for exact OUTPUT swaps (required ONLY when SWAP_EXACT_INPUT=0) # This should be in INPUT token decimals (the token being sold) # Examples: # - Buying 50 USDC with max 0.1 ETH: SWAP_MAX_INPUT=100000000000000000 (ETH decimals: 18) # - Buying 0.1 ETH with max 100 USDC: SWAP_MAX_INPUT=100000000 (USDC decimals: 6) SWAP_MAX_INPUT_BASE_SEPOLIA= # =================================================================== # FEE POKE PARAMETERS # =================================================================== # Current pool volume/tvl ratio for fee calculation CURRENT_RATIO_BASE_SEPOLIA= # =================================================================== # REHYPOTHECATED LIQUIDITY PARAMETERS # =================================================================== # --- Adding Liquidity (05b_AddRHLiquidity.s.sol) --- # Number of shares to mint (in wei, 18 decimals) RH_SHARES_BASE_SEPOLIA= # Maximum amount of token0 willing to spend (safety limit) RH_AMOUNT0_MAX_BASE_SEPOLIA= # Maximum amount of token1 willing to spend (safety limit) RH_AMOUNT1_MAX_BASE_SEPOLIA= # Optional: Slippage protection for adding liquidity # Expected sqrtPriceX96 (set to 0 or omit to use current pool price) RH_EXPECTED_PRICE_BASE_SEPOLIA= # Max price slippage tolerance (same scale as LP fee: 1000000 = 100%, 10000 = 1%) # Default: 10000 (1%). Set to 0 to disable slippage check. RH_MAX_SLIPPAGE_BASE_SEPOLIA=10000 # --- Removing Liquidity (05c_RemoveRHLiquidity.s.sol) --- # Number of shares to burn (in wei, 18 decimals) RH_REMOVE_SHARES_BASE_SEPOLIA= # Minimum amount of token0 expected (off-chain preflight check) RH_REMOVE_AMOUNT0_MIN_BASE_SEPOLIA= # Minimum amount of token1 expected (off-chain preflight check) RH_REMOVE_AMOUNT1_MIN_BASE_SEPOLIA= # Optional: Slippage protection for removing liquidity # Expected sqrtPriceX96 (set to 0 or omit to use current pool price) RH_REMOVE_EXPECTED_PRICE_BASE_SEPOLIA= # Max price slippage tolerance (same scale as LP fee: 1000000 = 100%, 10000 = 1%) # Default: 10000 (1%). Set to 0 to disable slippage check. RH_REMOVE_MAX_SLIPPAGE_BASE_SEPOLIA=10000 # =================================================================== # GLOBAL SYSTEM PARAMETERS # =================================================================== # Global max adjustment rate (shared across all pools) GLOBAL_MAX_ADJ_RATE_BASE_SEPOLIA=