Commit Graph
20 Commits
Author SHA1 Message Date
zeekayandHanzo Dev 6837310ff0 build: bump luxfi/graph v1.2.9 -> v1.2.10 (AMM valuation pass)
v1.2.10 adds the valuation pass that derives the AMM graph's USD aggregates
from on-chain balances. Without it the explorer's /v1/graph/<chain>/amm/graphql
served pools and tokens whose totalValueLockedUSD, volumeUSD and token0Price
were empty strings — which is what left every TVL / 24h-volume / active-pool
figure on the exchange blank.

Co-authored-by: Hanzo Dev <[email protected]>
2026-07-26 18:21:43 -07:00
zeekay 0b4ebbd9be build: bump luxfi/graph v1.2.6 -> v1.2.9 (bound BASE/QUOTE pair symbol + assetsBound on 0x9999 markets)
graph v1.2.9 enriches the 0x9999 DEX Market with a human pair symbol + assetsBound
so the exchange-api real-asset gate admits native markets (was stripping all of
them on the poolId-hex symbol). Pulls luxfi/database v1.19.3 transitively. go.sum
regenerated for luxfi modules (upstream re-tag staleness on age/pq).
2026-06-28 22:12:53 -07:00
zeekayandGitHub 2e96949096 chore: bump luxfi/database v1.19.3 (#13)
Co-authored-by: zeekay <[email protected]>
2026-06-25 15:24:22 -07:00
zooqueen 345290e6df build: bump luxfi/indexer v1.4.5 → v1.4.6 (real tx fee + block burnt_fees/rewards, decimal value) 2026-06-23 14:59:00 -07:00
zooqueen 3611483f2b build: replace luxfi/indexer => sibling clone so the Docker build uses indexer source (real tx fee + block burnt_fees/rewards, decimal value) 2026-06-23 14:45:44 -07:00
zeekay feaa1442b5 feat: enrich AMM token metadata — bump graph v1.2.3→v1.2.6 + opt-in backfill
graph v1.2.6 reads ERC20 symbol/name/decimals for AMM Token entities
(was address-placeholder). supervisor.go runs graph's BackfillTokens at
startup when BACKFILL_TOKENS=1 to enrich existing placeholder rows in
place (≤3 eth_calls/token, no re-sync), before the live indexer loop.
2026-06-21 23:55:00 -07:00
zeekay c93423f735 deps: bump graph v1.2.2->v1.2.3 (native 0x9999 V4/DEXFill indexing, dex+amm subgraphs) + pin indexer to real v1.4.5 tag
graph v1.2.3 lands the native 0x9999 DEX indexing fix: dex/amm builtin
subgraphs, 0x9999-scoped Fill source (DEXFill log), keccak topic-hash
fixes, and re-genesis self-heal. The supervisor already wires
PoolManager(0x9999)+StartBlock into graphidx.NewWithConfig and mounts the
dex+amm subgraphs at /v1/graph/{slug}/{subgraph}/graphql; this bump makes
the engine those routes resolve against carry the fix.

Also replaces the unpushable phantom pin
indexer v1.4.5-0.20260526184203-3b72d71cc8fd (revision 3b72d71cc8fd never
existed on origin) with the real published indexer v1.4.5 tag (main HEAD
ac537780: server-side per-(token,holder) balances + log/transfer column
aliases). This unblocks the unified explorer Docker build, which resolves
graph+indexer from go.mod under -mod=mod.

Verified: go mod tidy clean; CGO build of the unified binary green;
go test ./... ok; graph dex_route_test confirms markets/fills resolve on
the dex schema from 0x9999 entities.
2026-06-21 14:52:43 -07:00
zeekay c3afae17ba go: 1.26.3 → 1.26.4 (security: crypto/x509, mime, net/textproto) 2026-06-06 22:05:21 -07:00
zeekay ebfcc0dc16 chore(deps): go get -u ./...
Updated dependencies to latest minor versions via go get -u + go mod tidy.
2026-06-02 11:11:38 -07:00
Darkhorse7stars 422c63af88 deps: bump indexer for is_contract column-read fix (#11) 2026-05-24 06:41:41 -07:00
Darkhorse7stars c6c9fb2308 deps: bump indexer for address counter increment + getCode resolve
Pulls luxfi/indexer#10 on top of #9. Address pages on the explorer SPA
now show real tx counts and correctly flag contracts.
2026-05-24 06:06:33 -07:00
Darkhorse7stars c549d96f91 deps: bump indexer to 0.20260524105612-65220f1104cd
Pulls luxfi/indexer#9 — formatAddress + addrCounters now read
both the legacy `transactions_count` / `contract_code` and the
SQLite-backed `tx_count` / `code` column names, and coerce nil
counters to int64(0) so the Blockscout-derived SPA can call
.toLocaleString() without crashing.

Repros against rpc.dev..com:
  GET /v1/indexer/evm/addresses/0x58a86aafb6cdd0989c799353c891e420fb530e0a
returned transactions_count: null + is_contract: false for a real
deployed AMM pool → now returns the actual tx count + is_contract: true.
2026-05-24 03:57:23 -07:00
Darkhorse7starsandGitHub 296eee1f72 indexer: wire chains[].indexer.start_block + default devnet chainId (#10)
Two related fixes for running the explorer against a mainnet-fork
devnet:

1. Honor the per-chain `indexer.start_block` field from chains.yaml
   when the indexer DB is fresh. Without this the indexer always
   backfills from block 0, which on a mainnet fork is 25M+ blocks of
   irrelevant pre-fork history. Now an operator can set:

       chains:
         - slug: evm
           rpc: http://anvil:8545
           indexer:
             start_block: 25162000

   and the indexer skips to that block on first run. Once any rows
   exist in evm_blocks, start_block is ignored and indexing resumes
   from MAX(number)+1 as before — backward-compatible for
   fresh-genesis chains.

2. Default the bundled SPA's NETWORK_ID to 8675312 (the Liquid
   devnet chain ID). The Dockerfile previously inherited
   luxfi/explore's default of 8675311 — a stale leftover from before
   the devnet chainId migration. Adds NETWORK_ID / NETWORK_NAME /
   CURRENCY_SYMBOL as build-args so the same Dockerfile produces
   correct images for devnet/testnet/mainnet.

Requires luxfi/indexer #8 (StartBlock field on evm.Config) — bumped
via `go mod edit` to the post-merge commit d5e65d4b50c1.
2026-05-24 00:44:12 -07:00
Darkhorse7starsandGitHub 41e84df01a feat(realtime): bridge per-chain block events into the realtime hub (#6)
When ChainSupervisor.AttachRealtime is called (from main), each chain's
indexer.Subscriber.OnBroadcast is wired to push block events into the
RealtimeHub on the chain's slug. The hub then fans out to WebSocket
clients (existing path) and SSE subscribers (new in #5).

Requires luxfi/indexer v1.4.4 — pulls in the exported Subscriber()
accessor.

End-to-end chain:
  evm.Indexer.indexBlock → Subscriber.BroadcastBlock → OnBroadcast →
  RealtimeHub.Broadcast → ws.send + SSE fanout → SPA EventSource

Now /blocks, /transactions, /token-transfers, etc. on the explorer
host actually stream live events as blocks land instead of just
returning HEAD 200 with no payload.
2026-05-21 19:09:38 -07:00
zeekay 7e968642af ci: rip orphan replace block (graph + indexer sibling-dir shims) 2026-05-19 08:40:20 -07:00
zeekay bb4ce66752 ci: rip ../graph + ../indexer replace shims; bump to graph v1.2.0 + indexer v1.4.1 2026-05-19 08:33:35 -07:00
zeekay a18fcba81b deps: luxfi/crypto v1.19.0 2026-05-13 11:59:40 -07:00
zeekay fb37b21f0c go.mod: bump go directive to 1.26.3 (security advisory) 2026-05-12 21:29:18 -07:00
zeekay 0a97dedfe9 unified explorer: single Go binary with embedded SPA + per-chain graph
Module renamed to github.com/luxfi/explorer (was -unified). Imports
luxfi/indexer/{daemon,evm,storage,explorer} and luxfi/graph/{engine,
indexer,storage} as libraries; embeds the luxfi/explore SPA via go:embed
all:static.

A new ChainSupervisor wraps the existing ChainRegistry: adding a chain
(via config / mDNS / admin API) spawns a per-chain indexer goroutine plus
one graph engine + indexer per enabled subgraph; removing cancels them
and frees the routes from a sync.Map dispatcher mounted on /v1/indexer/,
/v1/explorer/ (legacy alias), and /v1/graph/.

Config schema is fully per-chain: indexer poll interval, list of graph
subgraphs (each can pick a built-in schema like amm, securities, fhe…),
brand (name/coin/accent + on-disk icon/logo paths), token features, and
top-level networks list. /envs.js exposes the chain list and active
brand to the SPA at runtime, so a deploy can rebrand by remounting
chains.yaml + assets — no image rebuild.

Dockerfile clones luxfi/explore + luxfi/indexer + luxfi/graph as
siblings inside the build, populates ./static from the SPA build, and
produces one binary. CI checks out the three repos as siblings so the
local replace in go.mod works without tagged releases.
2026-05-05 21:03:52 -07:00
zeekay bf584f6b48 feat: runtime chain registry, mDNS discovery, /v1/explorer/realtime
Runtime-mutable chain registry with admin CRUD API, mDNS auto-discovery
of local luxd nodes, and multi-chain WebSocket realtime subscriptions.

Config sources (priority order):
  1. Admin API (POST/PUT/DELETE /v1/explorer/admin/chains)
  2. --config chains.yaml
  3. CHAINS env var
  4. mDNS _luxd._tcp discovery (lowest, never overrides manual)

21 tests, all passing.
2026-04-13 01:36:31 -07:00