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]>
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]>
* 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
* 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
* 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]>
* 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"
* 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
* 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
* 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
* 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
* first part of migration
* second part of migration
* bump up es-toolkit version
* bump up `es-toolkit` version and remove `lodash` completely
* update screenshot
* 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
* 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