Zum Inhalt

Konfiguration

Environment-Variablen

Pflicht-Variablen

Variable Beschreibung Beispiel
DATABASE_URL PostgreSQL Connection String postgresql://chainbets:pw@localhost:5432/chainbets
RPC_URL Primary Arbitrum RPC https://arb-mainnet.g.alchemy.com/v2/...
OPERATOR_KEY Private Key für Operator-Wallet 0x... (64 Hex-Zeichen)
SETTLEMENTV4 SettlementV4/V5 Contract-Adresse 0x...
GAME_TREASURY GameTreasury Contract-Adresse 0x...
GAME_MANAGER GameManager Contract-Adresse 0x...
VRF_RECEIVER VRFReceiver Contract-Adresse 0x...
RELAYER_ADDRESS Gas-Relayer Wallet-Adresse 0x...

Optionale Variablen

Variable Beschreibung Default
FALLBACK_RPC_URL Backup-RPC für Recovery-Worker RPC_URL
CHARITY_VAULT CharityVault-Adresse (für Balance-Tracking) -
USDT USDT Token-Adresse -
BONUS_MANAGER BonusManager Contract-Adresse -
APP_URL Frontend-URL (für E-Mails) https://gameapp.itsolution.co.at
ENV_PATH Custom .env-Dateipfad ../.env

Push-Notification-Variablen

Variable Beschreibung
VAPID_PUBLIC_KEY VAPID Public Key für Web-Push
VAPID_PRIVATE_KEY VAPID Private Key
VAPID_SUBJECT mailto: oder URL

Watchdog-Variablen

Variable Beschreibung Default
WATCHDOG_TELEGRAM_BOT_TOKEN Telegram Bot Token -
WATCHDOG_TELEGRAM_CHAT_ID Telegram Chat/Gruppe -
WATCHDOG_APP_URL App Health-Check URL http://localhost:3001
WATCHDOG_RELAYER_ETH_CRITICAL ETH-Balance Critical-Schwelle 0.01
WATCHDOG_RELAYER_ETH_WARN ETH-Balance Warning-Schwelle 0.05
WATCHDOG_INTENT_STUCK_MINUTES Stuck-Intent-Schwelle 30
WATCHDOG_STATS_STALE_MINUTES Stats-Frische-Schwelle 60

Environment-Loader

Datei: env.ts (14 Zeilen)

import path from "node:path";
import dotenv from "dotenv";

export function mustEnv(key: string): string {
  const v = process.env[key];
  if (!v) throw new Error(`Missing env ${key}`);
  return v;
}

dotenv.config({
  path: process.env.ENV_PATH ?? path.resolve(__dirname, "../.env")
});

Die .env-Datei liegt standardmäßig im Parent-Verzeichnis (lotto-platform/.env).


bo_config-Tabelle

Laufzeitkonfiguration, die ohne Neustart geändert werden kann:

Settlement-Konfiguration

Key Beschreibung Beispiel
charity_rate_bp Charity-Anteil an Operator-Fee (Basis Points) 200 (= 2%)
jackpot_miss_trigger_days Tage ohne Jackpot bis Redistribution 5

Re-Engagement-Konfiguration

Key Beschreibung Default
reengagement_enabled Feature On/Off -
reengagement_inactive_days Inaktivitäts-Schwelle 7
reengagement_bonus_amount Bonus-Tipps pro E-Mail 5
reengagement_max_active_bonuses Max ungenutzte Marketing-Boni 3
reengagement_cooldown_days Min. Tage zwischen E-Mails 14
reengagement_email_subject_en E-Mail-Betreff (EN) -
reengagement_email_subject_de E-Mail-Betreff (DE) -

E-Mail-Konfiguration

Key Beschreibung
resend_api_key Resend API Key
resend_from_email Absender-Adresse

TypeScript-Konfiguration

Datei: tsconfig.json

{
  "compilerOptions": {
    "target": "ES2022",
    "lib": ["ES2022"],
    "module": "Node16",
    "strict": true,
    "esModuleInterop": true,
    "resolveJsonModule": true,
    "skipLibCheck": true,
    "moduleResolution": "node16"
  },
  "include": ["**/*.ts"]
}

Highlights: - Strict Mode: Maximale Type-Safety - ES2022: Unterstützt BigInt, Top-Level Await - Node16: Korrekte ESM/CJS-Interoperabilität


Sicherheitshinweise

Sensible Variablen

  • OPERATOR_KEY: Private Key → Nie committen!
  • VAPID_PRIVATE_KEY: Push-Schlüssel → Nie committen!
  • resend_api_key: E-Mail-API-Key → In bo_config gespeichert
  • DATABASE_URL: Enthält Passwort → Nur in .env

Konfigurationsänderungen

  • .env-Variablen: Erfordern Prozess-Neustart
  • bo_config-Einträge: Sofort wirksam (bei nächster Abfrage)