# Required DATABASE_URL=postgres://postgres:postgres@localhost:5432/byos_dev REDIS_URL=redis://localhost:6379 CHAIN_ID=31337 # Listeners PUBLIC_ADDR_PORT=9585 INTERNAL_ADDR_PORT=9586 # Observability # COW_EXPLORER_URL=https://explorer.cow.fi # default; override for non-mainnet envs # Slack notifications (both required together) # SLACK_TOKEN=xoxb-... # SLACK_CHANNEL=#byos-alerts # Optional: bearer token for /solve and /notify # SOLVE_BEARER_TOKEN= # Chain connectivity # TRAMPOLINE_FACTORY and ESCROW_ADDRESS are set once per deployment by the # operator who deployed those contracts. SETTLEMENT_ADDRESS and ORDERBOOK_URL # resolve automatically from CHAIN_ID and only need overrides for barn/staging. TRAMPOLINE_FACTORY=0x00000000000000000000000000000000000fac70 RPC_URL=http://localhost:8545 ESCROW_ADDRESS=0x0000000000000000000000000000000000000000 DEFAULT_GAS_PRICE=1000000000 # ORDERBOOK_URL= # overrides orderbookUrlFor(CHAIN_ID) — for barn/staging # SETTLEMENT_ADDRESS= # overrides settlementAddressFor(CHAIN_ID) # SUBMITTER_ADDRESS= # when set, used as simulation `from` instead of dummy; must hold SUBMITTER_ROLE on Escrow # MIN_COLLATERAL=10000000000000000 # native wei; escrow floor and absolute per-proposal penalty cap # COLLATERAL_RATIO_BPS=4 # integer basis points of native sell value; deployment policy, not exact CIP-87 # Buffer clearing threshold is MIN_COLLATERAL / 5; announce policy changes before migration. # Rate limiting (ADR-0015). Defaults are sized from the reference client's # poll volume, not measured traffic — see COW-1265 before going public. RATE_LIMIT_WINDOW_SECS=60 # Loose in-app backstop; the primary per-IP limit is at the Cloudflare edge. RATE_LIMIT_IP_PER_WINDOW=6000 # Escrow wei buying one unit of throughput. Independent of MIN_COLLATERAL, # which may legitimately be 0. RATE_UNIT_WEI=100000000000000000 RATE_PER_UNIT=300 RATE_MIN_PER_WINDOW=120 RATE_MAX_PER_WINDOW=3000 # Request-path escrow balance cache BALANCE_REFRESH_INTERVAL_SECS=60 BALANCE_EVICTION_SECS=3600 BALANCE_NEGATIVE_TTL_SECS=600 # A tick makes ceil(cap / batch size) multicalls back to back. BALANCE_ACTIVE_SET_MAX=10000 BALANCE_REFRESH_BATCH_SIZE=50 # Timing VALIDATION_INTERVAL_SECS=12 DROPPED_RETENTION=1h RETENTION_SWEEP_INTERVAL_SECS=300 MAX_PROPOSAL_LIFETIME_SECS=300 EXECUTING_TIMEOUT=5m MIN_PROPOSAL_SCORE=0 # SELECTOR_BUFFER_MS=200 # Concurrency. VALIDATION_CONCURRENCY also sets the Postgres connection pool size. # VALIDATION_CONCURRENCY=50 # Operator (Track A penalty loop) OPERATOR_PRIVATE_KEY=0x0000000000000000000000000000000000000000000000000000000000000001 # Logging LOG_LEVEL=info JSON_LOGS=false # Host ports for docker-compose.prod-local.yml (Compose interpolation only). # Set these in the repo-root .env, not the per-service env_file files. # POSTGRES_HOST_PORT=55432 # REDIS_HOST_PORT=56379 # BYOS_PUBLIC_HOST_PORT=59585 # BYOS_INTERNAL_HOST_PORT=59586 # FYND_HOST_PORT=53000 # ADMIN_HOST_PORT=53001 # Forward auctions to sub-solvers (base URLs, without /solve). # SUBSOLVERS_ENDPOINTS=http://fynd-subsolver:3001 # Required when forwarding; use the same secret in each receiving sub-solver. # SUBSOLVER_BEARER=replace-with-a-shared-secret