224 Commits
Author SHA1 Message Date
zeekayandHanzo Dev 56c0e129b2 fix(explore): a block's fee label must follow the policy at THAT block
The fee-destination gate landed head-anchored: useFeeDestination() read
reading.status, which deriveStatus() computes against the HEAD block's
timestamp, and every per-block surface then rendered that one verdict.

Head status answers "is the split active NOW". A block page asks "was THIS
block's fee burned". They agree only while the split has never been active —
which is why this is invisible today: mainnet 96369 has no feeSplitTimestamp
at all (eth_getChainConfig answers, chainId 96369 present, and feeSplit
appears nowhere in it including upgrades/precompileUpgrades/stateUpgrades),
so every block correctly reads "Fees to coinbase".

The day feeSplitTimestamp is set and passes, all ~1.1M pre-activation blocks
would be relabelled "Burnt fees" with a burn ratio — the same false deflation
claim this module exists to remove, moved into history, and this time about
blocks whose fees demonstrably went to the coinbase 0x0100..0000 (3868.48 LUX
and climbing, measured at head 1098308).

So the destination is derived per block:

  feeDestinationAt(reading, blockTime)  pure; re-derives the gate against the
                                        block's own time via deriveStatus
  useFeeDestination(blockTime?)         one-line wrapper over it
  blockTimeSeconds(apiTimestamp)        ISO -> seconds, undefined when absent

Passed at the four surfaces that name one block (block details, blocks table
row, blocks list row, tx details). BlocksTable keeps the head reading with a
comment saying why: a column header spans many blocks, so it cannot be a
per-block claim, and the per-row label and ratio are each gated individually.
A missing timestamp falls back to the head reading, so a loading row keeps
today's behaviour rather than flashing "destination unknown".

Decomplected on purpose: the decision is a pure function of (reading,
blockTime), so it is tested without a React tree. Reverting the body to
deriveFeeDestination(reading.status) fails "does NOT report a pre-activation
block as burned" — the regression is pinned, not asserted.

32/32 vitest green (5 new cases); tsc reports 0 errors in all 7 touched files
and eslint is clean on them (control: 232 pre-existing tsc errors, none in
these files).

Co-authored-by: Hanzo Dev <[email protected]>
2026-07-28 01:09:44 -07:00
zeekayandHanzo Dev d556673dff fix(explore): nothing has been burned — stop labelling the fee a burn
explore.lux.network/block/1098234 renders "Burnt fees 0.000525 LUX" on the
same page that names the recipient: Miner
0x0100000000000000000000000000000000000000. Both cannot be true. The block
list repeats it per row, with a "Burnt fees / Txn fees * 100%" ratio that
reads 100%, and the tx details page says it again. To an investor that is a
deflation claim, and it is false.

Measured on mainnet 96369 via https://api.lux.network/v1/bc/C/rpc at block
1098244 (eth_getChainConfig ANSWERS — chainId 96369 is in the result — so the
absence below is a real absence, not a failed call):

  feeSplitTimestamp     unset  -> IsFeeSplit(t) is false for every t
  vault  0x0100..0002   0 LUX  -> rewardShare has never been credited
  coinbase 0x0100..0000 3867.79 LUX and climbing (3867.55 an hour earlier)

luxfi/evm core/fee_split.go only destroys wei while the split is active;
before activation creditTxFee credits the WHOLE fee to the coinbase, which is
an account, so total supply does not move. Every wei of every fee this chain
has ever charged is sitting at 0x0100..0000. Zero has been burned.

The label is now derived, in the ONE place fee-split policy already lives
(lib/api/cchain/useFeeSplit.ts, alongside deriveStatus and burnedWei), from
the same cached reading the fee panel uses — so a page of 50 block rows still
issues one batch:

  active            -> "Burnt fees",                    burn ratio shown
  inactive/scheduled-> "Fees to coinbase",              ratio suppressed
  unknown           -> "Fees (destination unknown)",    ratio suppressed

'unknown' is a real third state: a node that will not answer
eth_getChainConfig has not told us the fee was burned, and it has not told us
it wasn't. Rendering either claim would be inventing one.

Surfaces: block details (label, hint, ratio, and the reward-breakdown
tooltip), blocks table header + rows, mobile blocks list, tx details.
5 new cases in useFeeSplit.spec.ts, 22/22 green; tsc clean on all seven
touched files.

Co-authored-by: Hanzo Dev <[email protected]>
2026-07-28 00:44:36 -07:00
zeekay 3813d03918 feat: explorer FE — stateless SSR, chain selector, localnet, registry cleanup 2026-03-01 18:00:00 -08:00
tom goriunovandGitHub 537f572f7d Add address highlight provider to transaction page and lists (#3266)
* add address highlight provider to the transaction page

* add address highlight provider to lists

* fix tests
2026-02-20 08:02:52 +01:00
tom 42475a12a0 migrate to new response format from MegaETH flash blocks websocket 2026-02-12 18:20:49 +01:00
tom goriunovandGitHub 1c025b26fb Add possibility to change timestamp format (#3201)
* add global setting to change between local and utc time

* add control to change time format on detailed views

* tweaks

* adapt uptime graphs to work with utc time from settings

* fix tests

* add maxDiffPixels for SearchResults test

* fix test
2026-01-05 13:19:47 +01:00
tom goriunovandGitHub a77568ce0a Refactor navigation icon (#3191)
* move nav icons to separate directory

* remove unnecessary "slim" suffix from some icon names

* fix screenshots
2025-12-19 10:29:29 +01:00
tom goriunovandGitHub 932add9d96 Change zero to <0.001 value within different pages (#3150)
* basic components and address page refactoring

* second part of refactoring

* third part of refactoring

* NativeCoinValue component

* more refactoring

* rename TruncatedValue into TruncatedText

* minor fixes

* refactor block details

* fix layout of value and fee in tx table

* update screenshots

* different units for tooltip and stats widget small value fix

* update screenshots

* update tx table screenshot

* fix copy button vertical alignment
2025-12-05 16:04:27 +01:00
edc54514f1 OP Superchain explorer: aggregated views (#3040)
* refactor widgets on home page

* coming soon placeholder component

* top accounts page

* contract data

* address ERC-20 tokens list

* chain filter for address ERC-20 tokens

* token select for address detailed view

* address details fields

* tokens table

* stats widgets on home page

* chain indicators graph on the home page

* quick search

* search results all tab

* tabs and chain select on search results page

* search results mobile view

* add contract info to search and address details

* add text filter for tokens and search improvements

* load all results inside tab on search results page

* token balance info

* add support for domains in the full search

* Multichain explorer

Resolves #2989

* add envs validator for multichain

* add some tests

* fix search bar on search results page on mobile

* home stats fixes

* fix ts

* optimize amount of queries on address page

* add more contract info on address page

* add enter key hint to search input

* fix tests

* fix test

* update bg.primary css-variable on color theme change

* sitemap for multichain

* txs page: render first tab if blob tab is not available on the chain

* filter out in active chains from chain select on address page and user ops page

* add chain icon to advanced filter table

* fix tooltip on entity with shield

* fix ts

* show contract implementations

* fixes

* add chain icon to all lists

* refactor zetachain chains config type

* use chain id as primary option instead of chain slug

* refactor chain config type for multichain and essential dapps

* refactor chain icon and chain select

* rename chain-slug in chain_slug

* change default radius of chain icon and update screenshots for multichain tests

* change conditions for "isContract" and "isVerified"

* test fixes

* make shield optional for external chain entities

* add chain icon to approvals lists

* add stats page for multichain

* add chain postfix to chart .png and .csv assets name

* fix tests

* sync verified contracts language filter and fix loading state in the search results page

* fix sol2uml diagram and csv export

* regcred from helmfile for review

* link fixes

* fix state for unknown address

* fix incorrect chain in the context during spa transition to the same route on different chain

* add links to stats widgets

* add mixpanel to L2 demo values

* show message of on-demand contract verification

* fix screenshots

---------

Co-authored-by: Nick Zenchik <[email protected]>
2025-11-18 09:44:22 +01:00
tom goriunovandGitHub 4096e2ff2f Remove hover effect on flashblocks table (#3060)
remove hover effect on flashblocks table
2025-10-13 18:48:06 +02:00
tom goriunovandGitHub 3d98f2d702 MegaETH: mini-blocks page (#3024)
* MegaETH: uptime dashboard

Fixes #2906

* basic implementation of mini-blocks

* update socket url and time format

* update mega eth preset

* customize flashblocks name

* clean up

* update color theme variable for mega eth

* [skip ci] don't show alert "scanning new mini-blocks"
2025-10-08 09:35:35 +02:00
tom goriunovandGitHub fdea48d18c Show “Pending update” status for blocks & transactions (#2997)
Fixes #2951
2025-09-16 13:12:33 +02:00
tom goriunovandGitHub b90448347a Unify network utilization color (#3000)
UX: Network utilization color

Resolves #2926
2025-09-04 13:59:30 +02:00
tom goriunovandGitHub f0e713b877 Add support for customizing the UI color theme (#2923)
* UI customizations: new features

Fixes #2905

* colors for graphs

* introduce env variable

* colors for topbar, stats, selected state and tabs

* fix build

* fix validator

* refactor link.primary.hover color token

* refactor selected colors

* update styles for switch and fix some color tokens

* change color for selectable controls

* icon color tokens refactoring

* UI customizations: new features

Fixes #2905

* test for common components

* tweaks

* migrate from color-mode-hex cookie to color-theme cookie

* clean up

* update screenshots

* more screenshot updates

* update default color of chart line

* update envs for mega eth
2025-08-19 11:58:05 +02:00
tom goriunovandGitHub 7505f154e6 OP Superchain: local views for chains in the cluster (#2864)
* update styles for chain widgets on home page

* update latest txs styles and slug creation algorithm

* list of local txs

* list of local blocks

* local view for address internal tx tab

* local view for address coin history

* local view for address logs

* local view for address token transfers

* address details, kind of

* [wip] local view for address contract tab

* user ops views

* chain popover

* csv-export page

* advanced filter page

* block countdown pages

* fixes for contract tab

* refactor address txs and transfers tabs

* refactor getServerSideProps

* internal txs page

* tokens and token transfers pages

* simple tag for address page and details info placeholders

* add chain icon to the local lists

* show creator in contract tab

* OP Superchain: local views for chains in the cluster

Fixes #2827

* highlight current chain in the title of local entities

* tokens nfts tab for address

* allow entity icon to be an image

* adjust cross-chain txs table and add placeholder to home page

* cross-chain txs for address

* fetch multichain config from microservice

* fix skeleton in token transfers table

* tests, pt.1

* wtf with gh

* verified contracts page

* change chain info in block and token page header

* fix some tests

* update styles for token icon with chain logo in header

* fix links and address internal txs tab

* update screenshots

* fix margins for tx info button and chain icon in tx tables

* add some tests

* fix screenshots
2025-08-15 15:32:47 +02:00
tom goriunovandGitHub 197ae909fd Flashblocks for Base chains (#2919)
* flashblocks tab

* add env variables

* minor fixes

* fix ts

* change package for decompressing socket data

* design updates

* [skip ci] delete unused env

* automatic mode switching for table

* fix validator schema
2025-08-15 12:09:59 +02:00
Igor StuevandGitHub 0a2c221686 reorg block fix (#2936) 2025-08-12 14:54:58 +02:00
Igor StuevandGitHub 709897c0c3 Change txs socket alert text (#2822) 2025-07-04 11:22:18 +02:00
tom goriunovandGitHub 6112e475de Celo: support L2 epochs (#2784)
* epochs page

* epoch rewards distribution

* epoch election rewards

* address epoch rewards

* block epoch tag

* add some  tests

* adjust epoch details for L1 epochs

* support non-finalized epochs

* fixes after design review

* add truncation to block numbers on mobile

* update epochs table layout

* update timestamp hint

* fix bug with subheading of first epoch

* fixes of mobile view

* update screenshots
2025-06-30 17:44:10 +02:00
tom goriunovandGitHub fe16acbc0a Time format toggle for table views (#2729)
* cookie for storing time format value

* rename TimeAgo component

* add toggle to tables (pt. 1)

* move TimeWithTooltip component

* add toggle to tables (pt. 2)

* change implementation of toggle component

* remove unnecessary timestamp label

* update screenshots

* more screenshot updates

* [skip ci] update clock icon

* update screenshots
2025-06-03 14:01:12 +02:00
tom goriunovandGitHub ecae7062b2 Merge pull request #2700 from blockscout/release/v2-0-1
Release v2.0.1
2025-05-05 09:56:18 +02:00
tom goriunovandGitHub fae4990e1f API resource refactoring (#2699)
* add prefix to API resources

* fix pw tests

* refactor config

* remove unnecessary prefixes in resource names

* fixes

* update screenshots
2025-05-01 15:22:38 +02:00
tom b43819c340 fix link in new item socket alert 2025-05-01 13:58:21 +02:00
tom goriunovandGitHub 35dd080043 Migrate to the props with consistent full naming in the API for addre… (#2694)
* Migrate to the props with consistent full naming in the API for address hash entity and multiple props for L2-rollups

Fixes #2686

* fix test
2025-04-24 13:13:18 +02:00
tom goriunovandGitHub f6725649da UI toolkit package (#2691)
* first version of the pack

* single entry point

* add custom components to the package

* move form components to toolkit

* add more utils and hooks to the package

* minor fixes

* add CI workflow

* update readme and package.json

* fix ts

* fix build of env-validator

* fix docker build

* fix icons size

* test fixes

* more test fixes
2025-04-21 19:44:22 +02:00
tom c55dfdcf5b remove old semantic tokens 2025-03-13 15:22:59 +01:00
tom e865f00871 block tx tab 2025-01-31 19:01:26 +01:00
tom 6473f135ef tooltip fixes 2025-01-30 19:11:12 +01:00
tom 923c0978c1 remove LinkInternal and LinkExternal components 2025-01-28 19:03:19 +01:00
tom c06d11581f refactor block list 2025-01-27 18:04:47 +01:00
tom defa5e00ee list pagination 2025-01-27 13:29:02 +01:00
tom goriunovandGitHub d29849184d Replace lodash with es-toolkit (#2503)
* first part of migration

* second part of migration

* bump up es-toolkit version

* bump up `es-toolkit` version and remove `lodash` completely

* update screenshot
2025-01-14 12:30:05 +01:00
Igor StuevandGitHub 6c2356d607 remove skeleton animations (#2505)
* remove skeleton animations test

* eslint add Skeleton

* eslint-fix
2025-01-06 16:57:22 +01:00
tom e5c2f969d6 [skip ci] add line wrapping for blocks base fee 2024-12-23 15:37:28 +01:00
tom goriunovandGitHub 037cff7b0e fix block miner highlight style (#2459) 2024-12-10 19:46:39 +01:00
tom 125c4880de migrate to eslint 9 and its flat config 2024-11-13 12:54:12 +01:00
tom goriunovandGitHub f3fbe04d11 Bind to full prop namings in API v2 endpoints (#2381)
Fixes #2374
2024-11-11 17:45:07 +01:00
isstuev 1c34bdeddc support custom wei 2024-10-28 12:03:55 +01:00
isstuev fd4baf4d43 Blocks list: add base fee 2024-10-28 12:03:54 +01:00
isstuev c2b4eb4011 Table: table header left/right hor padding 2024-10-21 12:34:00 +02:00
tom goriunovandGitHub 5fa9bb5f23 OP rollup: Batch view and DA fields (#2210)
* tx batches view adjustments

* blocks and txs tabs of batch page

* batch details

* add batch info to block details view

* display batch blob data in EIP-4844 and calldata container

* display batch blob data in celestia container

* tests

* add optimism_celestia preset

* review fixes

* update screenshots
2024-09-06 12:19:01 +02:00
tom goriunovandGitHub 0d25334ac8 Celo: Block views customizations (#2185)
* show flag next to epoch block

* block view customizations

* add hint with link

* display block epoch transfers

* show epoch election reward types

* show reward details

* show base fee token from API

* display current epoch on main page

* mobile view

* tests

* add infinite scroll loading to reward details resource

* update useApiQuery options

* update screenshots

* update layout of reward details on desktop

* change hints of block epoch reward distribution
2024-08-28 13:30:16 +02:00
isstuev 0b9b9b7e33 Add tooltip with full date on "age" fields 2024-07-22 12:57:55 +02:00
Igor StuevandGitHub 091f90db8a Merge pull request #2099 from blockscout/fe-2060
delete gas used utilization for some rollups
2024-07-22 12:50:29 +02:00
tom goriunovandGitHub a2eee9354a Block Countdown page (#2091)
* page placeholder

* block info snippet

* add actions for calendar buttons

* add timer

* add redirect when timer runs out

* add redirect from not found block page

* block countdown index page

* link to countdown index page

* add link to search suggest

* add URL to an event

* add link to block countdown on mobile

* tests

* add countdown text to search result page

* update margins

* show block countdown when search results are not empty
2024-07-18 08:56:28 +02:00
isstuev 029574d290 delete gas used utilization for some rollups 2024-07-16 12:56:30 +02:00
isstuev 36d5e5d4b5 fix show reward condition in blocks table 2024-07-02 17:18:10 +02:00
isstuev 8fa3ebf281 review fix 2024-06-20 17:57:18 +03:00
isstuev 6ebca444bd arbitrum 2024-06-18 12:11:43 +03:00
tom 16d01a6de8 fix padding for page tabs 2024-05-30 13:47:56 +02:00