zeekayandHanzo Dev 63530dd9d7 fix(address): 0n is falsy, so every zero balance rendered "Pending" forever
Every never-transacted address showed `Balance Pending` instead of
`0 LUX`, permanently, on the live v1.1.23 build.

The RPC fallback was working the entire time. Captured on the wire:
eth_getBalance -> {"jsonrpc":"2.0","id":0,"result":"0x0"}. One line
disagreed. `if (!balance)` treats 0n as falsy, so a genuine zero balance
was reported as an RPC failure.

The consequence was not a broken path but a WRONG one, and the cascade
is why it looked like nothing: select() returned null -> isRpcQuery went
false and the fallback was discarded -> `query` reverted to the 404'd
apiQuery -> AddressDetails substituted error404Data (coin_balance: null)
-> AddressBalance's pruned-node guard fired. That guard's intent is
right ("coin_balance may be null while the address is known to exist,
show Pending instead of a misleading 0 LUX"); it just cannot tell a
genuine zero from a genuine failure when the caller has already
collapsed them. setRefetchEnabled(false) then made it permanent rather
than eventually-correct.

Nothing looked broken from outside: no hang, no skeleton, no error
alert, zero JS exceptions, and the counters path degraded correctly
under the very same 404 (Tokens/Transactions/Transfers all rendered 0).
Only the balance field was wrong.

`balance === null` is exact -- the type is already `bigint | null`.

Extracted the mapper as selectRpcAddress so the case is testable at all;
it shipped broken and was invisible from source. 5 tests, and they were
run against the OLD code first: reverting to `!balance` fails 3 of them.
A regression test that has never failed has not been tested.

Suite 322 -> 327.

Co-Authored-By: Hanzo Dev <[email protected]>
2026-08-07 03:45:55 -07:00
2026-08-06 20:27:19 -07:00
2026-08-03 21:01:56 -07:00
2026-08-03 21:01:56 -07:00
2022-10-11 11:47:11 +03:00
2025-12-10 19:21:07 +01:00
2025-10-17 14:58:12 +02:00
2023-04-11 19:25:22 -03:00
2026-08-03 21:01:56 -07:00
2025-02-01 14:27:11 -06:00
2026-06-28 20:35:55 -07:00
2025-11-18 10:03:49 +01:00
2023-02-24 12:37:08 -05:00

explore

DEPRECATED — see ~/work/lux/explorer/

The standalone Next.js frontend in this repo is no longer deployed. Its build output is embedded directly into the Lux Explorer Go binary (ghcr.io/luxfi/explorer:1.2.1) via go:embed. Run that single binary in production.

This repo is preserved as the source of the embedded SPA assets. Updates to the UI ship via a rebuild of the explorer image, not by deploying this Next.js app separately.

Canonical deploy: ~/work/lux/explorer/ (Go binary, single process, indexer + GraphQL + SPA, port 8090).

Lux Explore frontend (legacy)

Frontend application for Lux Network blockchain explorer

Running and configuring the app

App is distributed as a docker image. Here you can find information about the package and its recent releases.

You can configure your app by passing necessary environment variables when starting the container. See full list of ENVs and their description here.

docker run -p 3000:3000 --env-file <path-to-your-env-file> ghcr.io/blockscout/frontend:latest

Alternatively, you can build your own docker image and run your app from that. Please follow this guide.

For more information on migrating from the previous frontend, please see the frontend migration docs.

Contributing

See our Contribution guide for pull request protocol. We expect contributors to follow our code of conduct when submitting code or comments.

Resources

License

License: GPL v3.0

This project is licensed under the GNU General Public License v3.0. See the LICENSE file for details.

S
Description
Lux Network Blockchain Explorer.
Readme GPL-3.0
598 MiB
Languages
TypeScript 96%
JavaScript 2.6%
Shell 0.6%
CSS 0.4%
Python 0.2%
Other 0.2%