322 lines
8.7 KiB
Markdown
322 lines
8.7 KiB
Markdown
# Environment Variables Reference
|
|
|
|
Complete reference for all environment variables needed for the trustless bridge deployment.
|
|
|
|
## Required Variables (Must Be Set)
|
|
|
|
### Deployment Account
|
|
```bash
|
|
PRIVATE_KEY=0x... # Deployer private key (NEVER commit to git)
|
|
```
|
|
|
|
### RPC Endpoints
|
|
```bash
|
|
ETHEREUM_MAINNET_RPC=https://eth.llamarpc.com # Ethereum Mainnet RPC URL
|
|
RPC_URL_138=http://chain138.example.com:8545 # ChainID 138 RPC URL
|
|
```
|
|
|
|
### Etherscan Verification
|
|
```bash
|
|
ETHERSCAN_API_KEY=your_etherscan_api_key # For contract verification
|
|
```
|
|
|
|
## Contract Addresses (Populated During Deployment)
|
|
|
|
### Core Bridge Contracts (ChainID 138)
|
|
```bash
|
|
LOCKBOX_138=0x... # Lockbox contract address on ChainID 138
|
|
```
|
|
|
|
### Core Bridge Contracts (Ethereum Mainnet)
|
|
```bash
|
|
BOND_MANAGER=0x... # BondManager contract address
|
|
CHALLENGE_MANAGER=0x... # ChallengeManager contract address
|
|
LIQUIDITY_POOL=0x... # LiquidityPoolETH contract address
|
|
INBOX_ETH=0x... # InboxETH contract address
|
|
SWAP_ROUTER=0x... # Basic SwapRouter contract address
|
|
BRIDGE_SWAP_COORDINATOR=0x... # BridgeSwapCoordinator contract address
|
|
```
|
|
|
|
### Enhanced Routing
|
|
```bash
|
|
ENHANCED_SWAP_ROUTER=0x... # EnhancedSwapRouter contract address
|
|
```
|
|
|
|
### Integration Contracts
|
|
```bash
|
|
STABLECOIN_PEG_MANAGER=0x... # StablecoinPegManager contract address
|
|
COMMODITY_PEG_MANAGER=0x... # CommodityPegManager contract address
|
|
ISO_CURRENCY_MANAGER=0x... # ISOCurrencyManager contract address
|
|
BRIDGE_RESERVE_COORDINATOR=0x... # BridgeReserveCoordinator contract address
|
|
```
|
|
|
|
### Reserve System
|
|
```bash
|
|
RESERVE_SYSTEM=0x... # ReserveSystem contract address (ChainID 138)
|
|
XAU_ADDRESS=0x... # XAU token address (if tokenized)
|
|
```
|
|
|
|
## Optional Configuration Variables
|
|
|
|
### Bridge Configuration
|
|
```bash
|
|
BOND_MULTIPLIER_BPS=11000 # 110% (default)
|
|
MIN_BOND=1000000000000000000 # 1 ETH (default)
|
|
CHALLENGE_WINDOW_SECONDS=1800 # 30 minutes (default)
|
|
LP_FEE_BPS=5 # 0.05% (default)
|
|
MIN_LIQUIDITY_RATIO_BPS=11000 # 110% (default)
|
|
```
|
|
|
|
### Peg Configuration
|
|
```bash
|
|
USD_PEG_THRESHOLD_BPS=50 # 0.5% (default)
|
|
ETH_PEG_THRESHOLD_BPS=10 # 0.1% (default)
|
|
COMMODITY_PEG_THRESHOLD_BPS=100 # 1.0% (default)
|
|
MIN_RESERVE_RATIO_BPS=11000 # 110% (default)
|
|
```
|
|
|
|
### Liquidity Configuration
|
|
```bash
|
|
LIQUIDITY_AMOUNT=100 # ETH amount for initial liquidity (default: 100)
|
|
RESERVE_AMOUNT=100000 # USDT amount for reserves (default: 100000)
|
|
```
|
|
|
|
## Token Addresses (Ethereum Mainnet)
|
|
|
|
These are standard addresses and typically don't need to be changed:
|
|
|
|
```bash
|
|
WETH=0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2
|
|
USDT=0xdAC17F958D2ee523a2206206994597C13D831ec7
|
|
USDC=0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48
|
|
DAI=0x6B175474E89094C44Da98b954EedeAC495271d0F
|
|
```
|
|
|
|
## DEX Protocol Addresses (Ethereum Mainnet)
|
|
|
|
These are standard addresses and typically don't need to be changed:
|
|
|
|
```bash
|
|
UNISWAP_V3_ROUTER=0xE592427A0AEce92De3Edee1F18E0157C05861564
|
|
CURVE_3POOL=0xbEbc44782C7dB0a1A60Cb6fe97d0b483032FF1C7
|
|
DODOEX_ROUTER=0xa356867fDCEa8e71AEaF87805808803806231FdC
|
|
BALANCER_VAULT=0xBA12222222228d8Ba445958a75a0704d566BF2C8
|
|
ONEINCH_ROUTER=0x1111111254EEB25477B68fb85Ed929f73A960582
|
|
```
|
|
|
|
`UNISWAP_V3_ROUTER` should point at the legacy SwapRouter on Ethereum mainnet because the trustless router contracts in this repo call `exactInputSingle` directly.
|
|
|
|
## Balancer Pool IDs (Configure After Deployment)
|
|
|
|
```bash
|
|
# BALANCER_WETH_USDT_POOL_ID=0x...
|
|
# BALANCER_WETH_USDC_POOL_ID=0x...
|
|
# Add more pool IDs as needed
|
|
```
|
|
|
|
## Dodoex PMM / Full Swappable (Chains 138, 651940)
|
|
|
|
For PMM coverage of all tokens and swap+bridge+swap flow:
|
|
|
|
```bash
|
|
# Per-chain DODO (set for each chain)
|
|
CHAIN_138_DODO_POOL_MANAGER=0x...
|
|
CHAIN_138_DODO_VENDING_MACHINE=0x...
|
|
CHAIN_651940_DODO_POOL_MANAGER=0x...
|
|
CHAIN_651940_DODO_VENDING_MACHINE=0x...
|
|
|
|
# Token coverage script (create-all-dodo-pools-from-token-api.sh)
|
|
TOKEN_AGGREGATION_API_URL=http://localhost:3000
|
|
CHAIN_ID=138
|
|
QUOTE_TOKEN_ADDRESS=0x... # WETH or canonical stable per chain
|
|
DODO_PMM_INTEGRATION_ADDRESS=0x...
|
|
ENHANCED_SWAP_ROUTER_ADDRESS=0x...
|
|
UNIVERSAL_ASSET_REGISTRY_ADDRESS=0x...
|
|
RPC_URL=...
|
|
PRIVATE_KEY=0x...
|
|
|
|
# Quote service (swap+bridge+swap)
|
|
ENHANCED_SWAP_ROUTER_ADDRESS=0x... # Source chain router
|
|
DESTINATION_RPC_URL=...
|
|
DESTINATION_SWAP_ROUTER_ADDRESS=0x...
|
|
|
|
# SwapBridgeSwapCoordinator (atomic swap then bridge)
|
|
SWAP_BRIDGE_SWAP_COORDINATOR=0x...
|
|
```
|
|
|
|
Run pool creation for all tokens: `scripts/create-all-dodo-pools-from-token-api.sh` (use `DRY_RUN=true` to preview). Ensure CCIP router and chain selectors are set for 138, 651940, and target chains; LINK funded for bridge contracts.
|
|
|
|
## Service Configuration
|
|
|
|
### Market Reporting Service
|
|
```bash
|
|
MARKET_REPORTING_API_KEY=your_api_key_here # API key for market reporting service
|
|
```
|
|
|
|
### Service Ports (Optional - defaults provided)
|
|
```bash
|
|
# Liquidity Engine Service
|
|
LIQUIDITY_ENGINE_PORT=3000
|
|
|
|
# Market Reporting Service
|
|
MARKET_REPORTING_PORT=3001
|
|
|
|
# Bridge Reserve Service
|
|
BRIDGE_RESERVE_PORT=3002
|
|
|
|
# ISO Currency Service
|
|
ISO_CURRENCY_PORT=3003
|
|
```
|
|
|
|
## Phase-by-Phase Requirements
|
|
|
|
### Phase 1: Environment Setup
|
|
**Required:**
|
|
- `PRIVATE_KEY`
|
|
- `ETHEREUM_MAINNET_RPC`
|
|
- `RPC_URL_138`
|
|
- `ETHERSCAN_API_KEY`
|
|
|
|
### Phase 2: Deploy Core Contracts
|
|
**Required:**
|
|
- All Phase 1 variables
|
|
|
|
**Populated After:**
|
|
- `LOCKBOX_138` (ChainID 138)
|
|
- `BOND_MANAGER`
|
|
- `CHALLENGE_MANAGER`
|
|
- `LIQUIDITY_POOL`
|
|
- `INBOX_ETH`
|
|
- `SWAP_ROUTER`
|
|
- `BRIDGE_SWAP_COORDINATOR`
|
|
|
|
### Phase 3: Deploy Enhanced Router
|
|
**Required:**
|
|
- All Phase 1 variables
|
|
- `BRIDGE_SWAP_COORDINATOR` (from Phase 2)
|
|
|
|
**Populated After:**
|
|
- `ENHANCED_SWAP_ROUTER`
|
|
|
|
### Phase 4: Deploy Integration Contracts
|
|
**Required:**
|
|
- All Phase 1 variables
|
|
- `BRIDGE_SWAP_COORDINATOR` (from Phase 2)
|
|
- `RESERVE_SYSTEM` (must be set if deploying)
|
|
|
|
**Populated After:**
|
|
- `STABLECOIN_PEG_MANAGER`
|
|
- `COMMODITY_PEG_MANAGER`
|
|
- `ISO_CURRENCY_MANAGER`
|
|
- `BRIDGE_RESERVE_COORDINATOR`
|
|
|
|
### Phase 5: Initialize System
|
|
**Required:**
|
|
- All Phase 1 variables
|
|
- `ENHANCED_SWAP_ROUTER` (from Phase 3)
|
|
- `BRIDGE_SWAP_COORDINATOR` (from Phase 2)
|
|
|
|
### Phase 6: Provide Liquidity
|
|
**Required:**
|
|
- All Phase 1 variables
|
|
- `LIQUIDITY_POOL` (from Phase 2)
|
|
- `RESERVE_SYSTEM` (must be set)
|
|
|
|
**Optional:**
|
|
- `LIQUIDITY_AMOUNT` (default: 100)
|
|
- `RESERVE_AMOUNT` (default: 100000)
|
|
|
|
### Phase 7: Configure Access Control
|
|
**Required:**
|
|
- All Phase 1 variables
|
|
- `ENHANCED_SWAP_ROUTER` (from Phase 3)
|
|
- `BRIDGE_SWAP_COORDINATOR` (from Phase 2)
|
|
|
|
### Phase 8: Deploy Backend Services
|
|
**Required:**
|
|
- All Phase 1 variables
|
|
- Contract addresses from previous phases
|
|
|
|
**Service-Specific:**
|
|
- `MARKET_REPORTING_API_KEY` (for Market Reporting Service)
|
|
|
|
### Phase 9: Deploy Frontend
|
|
**Required:**
|
|
- Contract addresses from previous phases (for frontend configuration)
|
|
|
|
### Phase 10: Verification
|
|
**Required:**
|
|
- All contract addresses from previous phases
|
|
|
|
## Validation Checklist
|
|
|
|
Before starting deployment, ensure:
|
|
|
|
- [ ] `PRIVATE_KEY` is set and valid
|
|
- [ ] `ETHEREUM_MAINNET_RPC` is accessible
|
|
- [ ] `RPC_URL_138` is accessible (or will be)
|
|
- [ ] `ETHERSCAN_API_KEY` is valid
|
|
- [ ] Deployer has sufficient ETH (5-10 ETH recommended)
|
|
- [ ] `RESERVE_SYSTEM` address is known (if deploying integration contracts)
|
|
|
|
## Security Notes
|
|
|
|
1. **Never commit `.env` file** to version control
|
|
2. **Use `.env.template`** as a reference
|
|
3. **Store private keys securely** - use hardware wallets for production
|
|
4. **Rotate API keys** regularly
|
|
5. **Use environment-specific values** for different networks (testnet vs mainnet)
|
|
|
|
## Example .env File
|
|
|
|
```bash
|
|
# Deployment Account
|
|
PRIVATE_KEY=0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef
|
|
|
|
# RPC Endpoints
|
|
ETHEREUM_MAINNET_RPC=https://eth.llamarpc.com
|
|
RPC_URL_138=http://chain138.example.com:8545
|
|
|
|
# Etherscan Verification
|
|
ETHERSCAN_API_KEY=ABC123XYZ789
|
|
|
|
# Reserve System
|
|
RESERVE_SYSTEM=0x1111111111111111111111111111111111111111
|
|
XAU_ADDRESS=0x2222222222222222222222222222222222222222
|
|
|
|
# Contract Addresses (populated during deployment)
|
|
LOCKBOX_138=
|
|
BOND_MANAGER=
|
|
CHALLENGE_MANAGER=
|
|
LIQUIDITY_POOL=
|
|
INBOX_ETH=
|
|
SWAP_ROUTER=
|
|
BRIDGE_SWAP_COORDINATOR=
|
|
ENHANCED_SWAP_ROUTER=
|
|
STABLECOIN_PEG_MANAGER=
|
|
COMMODITY_PEG_MANAGER=
|
|
ISO_CURRENCY_MANAGER=
|
|
BRIDGE_RESERVE_COORDINATOR=
|
|
|
|
# Service Configuration
|
|
MARKET_REPORTING_API_KEY=your_api_key_here
|
|
```
|
|
|
|
## Troubleshooting
|
|
|
|
### Variable Not Found
|
|
- Check `.env` file exists
|
|
- Verify variable name spelling
|
|
- Ensure no extra spaces around `=`
|
|
- Check for comments (lines starting with `#`)
|
|
|
|
### Variable Not Set
|
|
- Run `phase1-env-setup.sh` to verify
|
|
- Check script output for missing variables
|
|
- Review this reference for required variables
|
|
|
|
### Contract Address Not Found
|
|
- Ensure previous phase completed successfully
|
|
- Check deployment output for addresses
|
|
- Verify addresses are saved to `.env`
|