mirror of
https://github.com/luxfi/explorer.git
synced 2026-09-24 00:25:12 +00:00
The zip front router mounted service reverse-proxies under /api/<prefix>; renamed to /v1/<prefix> per convention (we never use a /api/ path prefix). Upstream service-internal /api/v1/... paths (behind the proxy) are unchanged.
292 lines
7.7 KiB
YAML
292 lines
7.7 KiB
YAML
# chains.example.yaml — full per-network customization for the unified Lux
|
|
# explorer. Mount as /etc/explorer/chains.yaml or pass --config=chains.yaml.
|
|
#
|
|
# Every chain gets its own SQLite file under {data_dir}/{slug}/ and its own
|
|
# /v1/indexer/{slug}/* + /v1/graph/{slug}/{subgraph}/* routes. Branding is
|
|
# per-chain; the SPA reads it at runtime via /envs.js so a deploy can
|
|
# rebrand by remounting this file + assets — no image rebuild.
|
|
|
|
data_dir: /data
|
|
http_addr: :8090
|
|
|
|
# Default branding the SPA uses when the request hostname does not match a
|
|
# chain-specific brand below. Per-chain `brand:` overrides win.
|
|
brand_default:
|
|
name: Lux Explorer
|
|
coin: LUX
|
|
accent_color: "#5cf"
|
|
icon_url: /icon.svg
|
|
logo_url: /logo.svg
|
|
|
|
# Cross-explorer link list rendered in the SPA's network switcher.
|
|
networks:
|
|
- label: Mainnet
|
|
domain: explorer.lux.network
|
|
chain_id: 96369
|
|
- label: Testnet
|
|
domain: testnet.explorer.lux.network
|
|
chain_id: 96368
|
|
- label: Devnet
|
|
domain: devnet.explorer.lux.network
|
|
chain_id: 96370
|
|
|
|
chains:
|
|
# ── Lux native chains ─────────────────────────────────────────
|
|
|
|
- slug: cchain
|
|
name: Lux C-Chain
|
|
chain_id: 96369
|
|
type: evm
|
|
rpc: ${LUX_CCHAIN_RPC:-https://api.lux.network/ext/bc/C/rpc}
|
|
coin: LUX
|
|
enabled: true
|
|
default: true
|
|
# DEX settlement precompile. Logs from this address are indexed into the
|
|
# `dex` (CLOB) subgraph as Fill/Market; defaults to 0x9999 if unset.
|
|
pool_manager: "0x0000000000000000000000000000000000009999"
|
|
indexer: { poll_interval: 30s }
|
|
graph:
|
|
enabled: true
|
|
subgraphs:
|
|
- { name: amm, schema: amm, enabled: true }
|
|
# Native DEX (CLOB) — Order/Market/Fill from 0x9999 settlement events.
|
|
- { name: dex, schema: dex, enabled: true }
|
|
- { name: securities, schema: securities, enabled: false }
|
|
brand:
|
|
name: Lux C-Chain
|
|
coin: LUX
|
|
accent_color: "#5cf"
|
|
|
|
- slug: pchain
|
|
name: P-Chain
|
|
type: linear
|
|
rpc: ${LUX_RPC:-https://api.lux.network}/ext/bc/P
|
|
coin: LUX
|
|
enabled: true
|
|
|
|
- slug: xchain
|
|
name: X-Chain
|
|
type: dag
|
|
rpc: ${LUX_RPC:-https://api.lux.network}/ext/bc/X
|
|
coin: LUX
|
|
enabled: true
|
|
|
|
- slug: achain
|
|
name: A-Chain
|
|
type: dag
|
|
rpc: ${LUX_RPC:-https://api.lux.network}/ext/bc/A
|
|
coin: LUX
|
|
enabled: true
|
|
|
|
- slug: bchain
|
|
name: B-Chain
|
|
type: dag
|
|
rpc: ${LUX_RPC:-https://api.lux.network}/ext/bc/B
|
|
coin: LUX
|
|
enabled: true
|
|
|
|
- slug: qchain
|
|
name: Q-Chain
|
|
type: dag
|
|
rpc: ${LUX_RPC:-https://api.lux.network}/ext/bc/Q
|
|
coin: LUX
|
|
enabled: true
|
|
|
|
- slug: tchain
|
|
name: T-Chain
|
|
type: dag
|
|
rpc: ${LUX_RPC:-https://api.lux.network}/ext/bc/T
|
|
coin: LUX
|
|
enabled: true
|
|
|
|
- slug: zchain
|
|
name: Z-Chain
|
|
type: dag
|
|
rpc: ${LUX_RPC:-https://api.lux.network}/ext/bc/Z
|
|
coin: LUX
|
|
enabled: true
|
|
|
|
- slug: kchain
|
|
name: K-Chain
|
|
type: dag
|
|
rpc: ${LUX_RPC:-https://api.lux.network}/ext/bc/K
|
|
coin: LUX
|
|
enabled: true
|
|
|
|
# ── Lux subnet chains (EVM) ───────────────────────────────────
|
|
|
|
- slug: zoo
|
|
name: Zoo
|
|
chain_id: 200200
|
|
type: evm
|
|
rpc: ${ZOO_RPC:-https://api.lux.network/ext/bc/Zoo/rpc}
|
|
coin: ZOO
|
|
enabled: true
|
|
indexer: { poll_interval: 30s }
|
|
graph:
|
|
enabled: true
|
|
subgraphs:
|
|
- { name: amm, schema: amm, enabled: true }
|
|
brand:
|
|
name: Zoo
|
|
coin: ZOO
|
|
accent_color: "#7c3aed"
|
|
|
|
- slug: hanzo
|
|
name: Hanzo
|
|
chain_id: 36963
|
|
type: evm
|
|
rpc: ${HANZO_RPC:-https://api.lux.network/ext/bc/Hanzo/rpc}
|
|
coin: HANZO
|
|
enabled: true
|
|
indexer: { poll_interval: 30s }
|
|
graph:
|
|
enabled: true
|
|
subgraphs:
|
|
- { name: amm, schema: amm, enabled: true }
|
|
brand:
|
|
name: Hanzo
|
|
coin: HANZO
|
|
accent_color: "#0b1220"
|
|
|
|
- slug: spc
|
|
name: SPC
|
|
chain_id: 36911
|
|
type: evm
|
|
rpc: ${SPC_RPC:-https://api.lux.network/ext/bc/SPC/rpc}
|
|
coin: SPC
|
|
enabled: true
|
|
indexer: { poll_interval: 30s }
|
|
|
|
- slug: pars
|
|
name: Pars
|
|
chain_id: 494949
|
|
type: evm
|
|
rpc: ${PARS_RPC:-https://api.lux.network/ext/bc/Pars/rpc}
|
|
coin: PARS
|
|
enabled: true
|
|
indexer: { poll_interval: 30s }
|
|
|
|
- slug: dex
|
|
name: Lux DEX
|
|
type: evm
|
|
rpc: ${LUX_RPC:-https://api.lux.network}/ext/bc/D/rpc
|
|
coin: LUX
|
|
enabled: true
|
|
indexer: { poll_interval: 15s }
|
|
graph:
|
|
enabled: true
|
|
subgraphs:
|
|
- { name: amm, schema: amm, enabled: true }
|
|
- { name: clob, schema: all, enabled: true }
|
|
|
|
# ── External chains (bridge / MPC counterparties) ─────────────
|
|
|
|
- slug: ethereum
|
|
name: Ethereum
|
|
chain_id: 1
|
|
type: evm
|
|
rpc: ${ETH_RPC:-https://eth.llamarpc.com}
|
|
coin: ETH
|
|
enabled: false
|
|
graph:
|
|
enabled: false
|
|
subgraphs:
|
|
- { name: uniswap-v3, schema: uniswap-v3, enabled: true }
|
|
|
|
- slug: arbitrum
|
|
name: Arbitrum One
|
|
chain_id: 42161
|
|
type: evm
|
|
rpc: ${ARB_RPC:-https://arb1.arbitrum.io/rpc}
|
|
coin: ETH
|
|
enabled: false
|
|
|
|
- slug: optimism
|
|
name: Optimism
|
|
chain_id: 10
|
|
type: evm
|
|
rpc: ${OP_RPC:-https://mainnet.optimism.io}
|
|
coin: ETH
|
|
enabled: false
|
|
|
|
- slug: base
|
|
name: Base
|
|
chain_id: 8453
|
|
type: evm
|
|
rpc: ${BASE_RPC:-https://mainnet.base.org}
|
|
coin: ETH
|
|
enabled: false
|
|
|
|
- slug: polygon
|
|
name: Polygon
|
|
chain_id: 137
|
|
type: evm
|
|
rpc: ${POLYGON_RPC:-https://polygon-rpc.com}
|
|
coin: MATIC
|
|
enabled: false
|
|
|
|
- slug: bsc
|
|
name: BNB Chain
|
|
chain_id: 56
|
|
type: evm
|
|
rpc: ${BSC_RPC:-https://bsc-dataseed.binance.org}
|
|
coin: BNB
|
|
enabled: false
|
|
|
|
- slug: avalanche
|
|
name: Avalanche C-Chain
|
|
chain_id: 43114
|
|
type: evm
|
|
rpc: ${AVAX_RPC:-https://api.avax.network/ext/bc/C/rpc}
|
|
coin: AVAX
|
|
enabled: false
|
|
|
|
- slug: solana
|
|
name: Solana
|
|
type: solana
|
|
rpc: ${SOL_RPC:-https://api.mainnet-beta.solana.com}
|
|
coin: SOL
|
|
enabled: false
|
|
|
|
- slug: bitcoin
|
|
name: Bitcoin
|
|
type: bitcoin
|
|
rpc: ${BTC_RPC:-}
|
|
coin: BTC
|
|
enabled: false
|
|
|
|
- slug: cosmos
|
|
name: Cosmos Hub
|
|
type: cosmos
|
|
rpc: ${ATOM_RPC:-https://cosmos-rpc.publicnode.com}
|
|
coin: ATOM
|
|
enabled: false
|
|
|
|
# In-process Blockscout-rs services (single-binary `-tags ffi` build only).
|
|
# Each runs as a Tokio thread inside the explorer process; the zip front router
|
|
# reverse-proxies /v1/<prefix>/* -> http://127.0.0.1:<http_port>. In the
|
|
# default (non-FFI) build this whole block is inert. See ffi/README.md.
|
|
services:
|
|
enabled: false # master switch; true only in the `make single` binary
|
|
list:
|
|
# sig-provider — stateless 4byte/ABI signature lookup. WIRED + PROVEN.
|
|
- name: sig-provider
|
|
prefix: sig # -> /v1/sig/* (e.g. /v1/sig/health, /v1/sig/api/v1/abi/function)
|
|
http_port: 8050 # loopback; gRPC auto = http_port+1
|
|
# --- ready to wire (stateless, no DB) — add the dep+feature+service! in ffi/ ---
|
|
# - name: visualizer # -> /v1/visualizer/*
|
|
# http_port: 8052
|
|
# - name: smart-contract-verifier # -> /v1/verifier/*
|
|
# http_port: 8054
|
|
# --- Postgres-only (NOT sqlite-able via blockscout-service-launcher) ---
|
|
# stats + multichain-aggregator need a real Postgres (stats also needs a
|
|
# populated Blockscout indexer Postgres to read). Set database_url to a
|
|
# postgresql:// DSN to enable; migrations run automatically.
|
|
# - name: stats
|
|
# http_port: 8056
|
|
# database_url: ${STATS_DB:-postgresql://localhost/stats}
|
|
# - name: multichain-aggregator
|
|
# http_port: 8058
|
|
# database_url: ${MULTICHAIN_DB:-postgresql://localhost/multichain}
|