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 gespeichertDATABASE_URL: Enthält Passwort → Nur in .env
Konfigurationsänderungen
.env-Variablen: Erfordern Prozess-Neustartbo_config-Einträge: Sofort wirksam (bei nächster Abfrage)