# OMNL Bank — production environment (copy to .env.production, never commit secrets) # === Public URLs (nginx / Cloudflare) === OMNL_BANK_PUBLIC_URL=https://bank.omnl.hybxfinance.io VITE_TOKEN_AGGREGATION_URL=https://bank.omnl.hybxfinance.io/api/v1 VITE_SETTLEMENT_MIDDLEWARE_URL=https://bank.omnl.hybxfinance.io/settlement VITE_DBIS_EXCHANGE_URL=https://bank.omnl.hybxfinance.io/exchange # === Production configs === SETTLEMENT_MIDDLEWARE_CONFIG=config/settlement-middleware.production.v1.json DBIS_EXCHANGE_CONFIG=config/dbis-exchange.production.v1.json OMNL_SUPPORTED_CHAINS_CONFIG=config/omnl-supported-chains.v1.json OMNL_M2_TOKEN_REGISTRY=config/omnl-m2-token-registry.v1.json OMNL_CROSS_CHAIN_CONFIG=config/hybx-omnl-cross-chain-lines.json # === Production gates (enable after audit) === SETTLEMENT_ALLOW_HYBX_PRODUCTION=1 SETTLEMENT_ALLOW_CHAIN_MINT_EXECUTE=1 OMNL_ALLOW_CHAIN_MINT_EXECUTE=1 # === Auth === OMNL_API_KEY= # Do NOT set VITE_OMNL_API_KEY in production (nginx injects server-side) # === Four super-admin portal keys (one per LXC 5825–5828) === OMNL_SUPER_ADMIN_OFFICE24_KEY= OMNL_SUPER_ADMIN_EXCHANGE_KEY= OMNL_SUPER_ADMIN_SECURE_KEY= OMNL_SUPER_ADMIN_FOREX_KEY= OMNL_PORTAL_INTERNAL_SECRET= # === Customer API keys (read + trade scopes only; comma-separated key:scope) === OMNL_CUSTOMER_API_KEYS= OMNL_CUSTOMER_API_KEY_1= OMNL_CUSTOMER_SECURITY_PRODUCTION=1 JWT_SECRET= # === On-chain M2 mint / transfer (Chain 138 operator) === OMNL_MINT_OPERATOR_PRIVATE_KEY= # Spot prices + BTC/USD for settlement (Python oracle — port 3500) CHAIN138_ORACLE_URL=http://127.0.0.1:3500 CHAIN138_ORACLE_PORT=3500 # OMNL mint/transfer/ISO20022 routes (token-aggregation — port 3000) TOKEN_AGGREGATION_URL=http://127.0.0.1:3000 # === HYBX / bank rails (SWIFT + IBAN) === # Public Fineract/HYBX — required on VPS (secure.omdnl.org). Do NOT use LAN sidecar from a public host. HYBX_ENVIRONMENT=production HYBX_BASE_URL=https://fineract.hybxfinance.com HYBX_API=https://omnl.hybxfinance.io/fineract-provider/api/v1 # Optional explicit payment URL (defaults to ${HYBX_API}/rtgs/payments) # HYBX_PAYMENTS_URL=https://omnl.hybxfinance.io/fineract-provider/api/v1/rtgs/payments # Leave empty on VPS — 192.168.11.89 is LAN-only; set HYBX_ALLOW_LAN_SIDECAR=1 only on-prem HYBX_MIFOS_FINERACT_SIDECAR_URL= HYBX_ALLOW_LAN_SIDECAR= HYBX_API_KEY= HYBX_CLIENT_ID= HYBX_CLIENT_SECRET= HYBX_WEBHOOK_SECRET= # Fineract login when HYBX_API is set (do not commit real password) HYBX_TENANT=default HYBX_USER= HYBX_PASS= SWIFT_LISTENER_URL= # === Primary chain 138 === RPC_URL_138=http://192.168.11.221:8545 CHAIN_138_RPC_URL=http://192.168.11.221:8545 # === Mirror chain 651940 === CHAIN_651940_RPC_URL=https://mainnet-rpc.alltra.global # === Z Chain — deploy via scripts/deployment/deploy-z-ecosystem-production.sh === # Portal: https://zblockchainsystem.com — see config/z-ecosystem.local.env.example # === Major L1/L2 RPC (set per chain — CHAIN__RPC_URL) === CHAIN_1_RPC_URL=https://eth.llamarpc.com CHAIN_56_RPC_URL=https://bsc-dataseed.binance.org CHAIN_137_RPC_URL=https://polygon-bor-rpc.publicnode.com CHAIN_42161_RPC_URL=https://arb1.arbitrum.io/rpc CHAIN_8453_RPC_URL=https://mainnet.base.org CHAIN_10_RPC_URL=https://mainnet.optimism.io # === Fineract / Office 24 === OMNL_FINERACT_BASE_URL= OMNL_FINERACT_TENANT=omnl OMNL_FINERACT_USERNAME=ali_hospitallers_tenant OMNL_FINERACT_PASSWORD= OMNL_PUBLIC_MONEY_SUPPLY=1 OFFICE24_OPENING_M1_USD= # === Frontend === VITE_WALLETCONNECT_PROJECT_ID= VITE_THIRDWEB_CLIENT_ID= VITE_RPC_URL_138=http://192.168.11.221:8545 VITE_ENHANCED_SWAP_ROUTER_V2=0xa421706768aeb7fafa2d912c5e10824ef3437ad4 # === Chain 138 oracle (Python) — keeper + on-chain ETH/USD push === KEEPER_PRIVATE_KEY= PRICE_FEED_KEEPER_ADDRESS=0xD3AD6831aacB5386B8A25BB8D8176a6C8a026f04 AGGREGATOR_ADDRESS=0x99b3511a2d315a497c8112c1fdd8d508d4b1e506 ORACLE_AGGREGATOR_ADDRESS=0x99b3511a2d315a497c8112c1fdd8d508d4b1e506 PMM_MESH_INTERVAL_SEC=6 COINGECKO_API_KEY= OMNL_REQUIRE_LIVE_BTC_PRICE=1 ISO4217_FX_REFRESH_INTERVAL_MS=60000 # Optional override if oracle down (only set deliberately): # CHAIN138_CANONICAL_PRICE_USD_BTC= BITCOIND_RPC_URL= BITCOIND_RPC_USER= BITCOIND_RPC_PASS= BTC_NETWORK=mainnet BTC_RESERVE_ADDRESSES= BTC_CONFIRMATIONS_REQUIRED=6 BTC_INTAKE_PORT=3013 BTC_INTAKE_SYNC_INTERVAL_MS=30000 BTC_MAX_OUTSTANDING_SATS= SETTLEMENT_MIDDLEWARE_URL=http://127.0.0.1:3011 # cBTC PMM pools (Chain 138 DODO) — real deployed pools for 1,000 BTC ledger OMNL_BTC_LEDGER_CONFIG=config/btc-l1-ledger-1000.chain138.v1.json CBTC_ADDRESS_138=0xe94260c555aC1d9D3CC9E1632883452ebDf0082E BTC_L1_RECIPIENT_ADDRESS=0xeb389B0FeB3186e88002e51b404685081C8dB8Ff BTC_EXISTING_MINT_HOLDER=0xa55A4B57A91561e9df5a883D4883Bd4b1a7C4882 DODO_PMM_INTEGRATION=0x86ADA6Ef91A3B450F89f2b751e93B1b7A3218895 CHAIN_138_DODO_PMM_INTEGRATION=0x86ADA6Ef91A3B450F89f2b751e93B1b7A3218895 RESERVE_SYSTEM=0x607e97cD626f209facfE48c1464815DDE15B5093 ORACLE_PROXY_ADDRESS=0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6 CHAIN138_POOL_CBTC_CUSDT=0x481CcE1046e1F1ab13BC37f0f374bb5ff75F3a8d CHAIN138_POOL_CBTC_CUSDC=0xD8e6131Fe469F0450b19ef71c9878bf9CFd4a5BD CHAIN138_POOL_CBTC_CXAUC=0xBb7653746EC39809C8DE27C52fD858d7E32e6A77 OMNL_MINT_OPERATOR_PRIVATE_KEY= SETTLEMENT_ALLOW_CHAIN_MINT_EXECUTE=0 # After rebuilding settlement-middleware, redeploy so secure.omdnl.org/settlement/btc/* is live. # Smoke: SETTLEMENT_URL=https://secure.omdnl.org/settlement OMNL_API_KEY=... node scripts/deployment/smoke-btc-settlement.mjs # Hot LP: HOT_CBTC_EXECUTE=1 node scripts/deployment/hot-cbtc-liquidity-1000.mjs # Trade: node scripts/deployment/verify-cbtc-trade.mjs