184 Commits
Author SHA1 Message Date
zeekayandHanzo Dev 334eb9a388 auth: delete the upstream auth; Hanzo IAM is the only gate
The explorer shipped three sign-in systems. Two were Blockscout's and both
spoke to its /account/* backend, which this deployment does not run — measured,
every one of those endpoints 404s on api-explore.lux.network:

  /account/get_csrf 404    /account/send_otp 404     /account/siwe_message 404
  /account/user/info 404   /account/confirm_otp 404  /account/authenticate_via_* 404

So none of it could ever have worked. It is deleted, not re-pointed: the email
+ one-time-code modal, the SIWE wallet login, the CSRF handshake that fired on
every page render, the Dynamic.xyz provider, and the dev page that let you
paste a session cookie by hand. Rewriting any of it against our own backend
would have been building custom auth, which we do not do.

What is left is the standard OIDC client we already had, finished:

  * PKCE (S256). This client is public — it runs in a browser and can hold no
    secret — so the verifier is the only thing binding a redeemed code to the
    page that asked for it. IAM advertises S256 in its discovery document and
    we were not sending a challenge at all.
  * userinfo went to <issuer>/api/userinfo, which is a 404 and an /api/ path we
    do not serve. It is /v1/iam/oauth/userinfo, per IAM's own discovery.
  * logout now ends the IdP session (end_session_endpoint) instead of only
    dropping our cookie and leaving the user signed in upstream.

All three live in lib/oidc.ts, which already said never to rebuild these paths
at a call site.

The header's provider switch collapses to two states — signed in with IAM, or
account disabled and this is the wallet/settings menu. `rewards` is stated off:
its gate read authProvider === 'auth0', so it was already unreachable.

The ConfigMaps carried NEXT_PUBLIC_OIDC_CLIENT_ID=lux-explore-client-id, a
client that has never existed, so authorize answered 400 unknown client_id.
IAM names clients <org>-explore; all four brands now say so, and hanzo/zoo/pars
get the OIDC keys they never had.

Typecheck: no new error classes, production errors 26 -> 22.

Co-authored-by: Hanzo Dev <[email protected]>
2026-08-06 19:18:31 -07:00
zeekay 3813d03918 feat: explorer FE — stateless SSR, chain selector, localnet, registry cleanup 2026-03-01 18:00:00 -08:00
zeekay da79f9e711 feat: rename @blockscout to @luxfi, monochrome theme, horizontal blocks
- Rename all @blockscout/* npm packages to @luxfi/* aliases (150+ files)
- Override blue accent colors to gray for monochrome theme
- Fix dropdown/menu/popover fonts to use Geist Sans
- Change Latest Blocks to horizontal scrolling layout
- Show dashes instead of zeros for validator stats on error
- Fix GHA deploy step to use correct deployment name
2026-03-02 12:28:15 -08:00
zooqueen 6c5d229352 feat(auth): add IAM login via hanzo.id for user accounts
Add OIDC authentication support using hanzo.id as the identity
provider for Lux Explorer user accounts.

- Add 'oidc' auth provider type alongside existing auth0/dynamic
- AuthGuardOidc: redirect-based OIDC login flow with CSRF state
- pages/auth/callback: authorization code exchange, token storage
- useApiFetch: pass Bearer token for OIDC-authenticated API calls
- account feature config: support NEXT_PUBLIC_OIDC_SERVER_URL and
  NEXT_PUBLIC_OIDC_CLIENT_ID environment variables
- .env.production: configure hanzo.id as default OIDC provider
2026-02-22 15:15:24 -08:00
tom goriunovandGitHub 401dc58402 Smart wallet auth (#3220)
* basic login button implementation

* refactoring and add dynamic auth button to the other pages

* connect wallet without authenticating an user

* login and logout user in blockscout account

* refactoring and RPC overrides

* authenticate user with connected wallet

* add ENS to profile button

* override evm chains and fix contract write with waas wallet

* disconnect wallet and fix docker build

* add dynamic imports to components that use web3 wallet packages

* refactor user profile directory

* clean up

* tweaks

* update pw ci script

* fix "connect wallet" button behavior

* handle linking email to profile with dynamic provider

* fix test

* async loading web3 hooks and remove dynamic loading from components that use them

* fix pw tests

* add account navigation in horizontal layout when auth provider is dynamic

* fix address verification modal

* review fixes

* spelling fixes
2026-02-18 19:42:44 +01:00
Igor StuevandGitHub 7c82281ad7 Support is_smart_contract_address in search results (#3250) 2026-02-09 14:57:33 +01:00
Max AlekseenkoandGitHub ee248bab90 Support essential dapps in DeFi dropdown (#3218) 2026-01-09 13:08:52 +01:00
Igor StuevandGitHub fa5dbe232a Zilliqa chain type: support for ZRC-2 (#3202)
* Zilliqa chain type: support for ZRC-2

* add zrc-2 address

* add socket support and token select info

* add token types to watchlist notification settings

* add token tag

* add is fungible helper

* aboba

* review fixes
2026-01-05 17:18:37 +01:00
tom goriunovandGitHub 266d167419 Smart contracts: get supported languages for filter from the API instead of ENV (#3200)
* Smart contracts: get supported languages for filter from the API instead of ENV

Resolves #3158

* fix ts and test

* add test.slow() to Block test
2026-01-05 13:19:28 +01:00
Max AlekseenkoandGitHub a1f65b5d36 Move Swap essential dapp to iframe (#3167) 2026-01-02 13:41:10 +01:00
9a977d191b Fixes for release v2.5.0 (#3142)
* fail the app start if multichain config or essential dapps config were not generated properly

* add timeouts for essential dapps and multichain config generators

* fix "add to wallet" button in address tokens table

* [skip ci] update docs

* fix tx tables when there are no fee and value columns

* add support for promoted multichain provider

* fixes

* change action button logic

* fix tests

* fix

* hide "add network" button for multichain

* shorten the amount of txs on multichain homepage

* change name formatting for multichain button

* add bright color variants and lg size for badges

* fix y-axis margin calculation for chart with custom tick formatter

* superchain bug fixes

* bump versions of react and nextjs

* update screenshot

* bump dappscout-iframe

---------

Co-authored-by: Max Alekseenko <[email protected]>
2025-12-04 18:44:01 +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
0c5a297834 "Add chain" button in the header (#3084)
* redesign "add chain" button

* fix wallet detection

* [skip ci] update default value for ENV

* fix tests

* return button to the footer and add source to mixpanel event

* regcred from helmfile for review

* [skip ci] remove wallets env from values for demo stand

* use react-query to cache detection result

* add cookie to hide button in the topbar

* add prefix to svg ids to fix rabby icon

* update screenshot

* remove unnecessary comment

---------

Co-authored-by: Nick Zenchik <[email protected]>
2025-11-17 18:15:21 +01:00
Max AlekseenkoandGitHub dc45b86a64 Marketplace titles and ads (#3109) 2025-11-14 16:57:02 +01:00
tom goriunovandGitHub 2aecde7104 UI/UX: Dropdown DeFi button fixes (#3126)
Resolves #3104
2025-11-13 18:49:29 +01:00
Max AlekseenkoandGitHub 487fe0317a Essential dapps (#3026) 2025-10-17 14:58:12 +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 5baa015c42 Support Stylus language in verified contracts filter (#3037) 2025-09-30 16:02:42 +02:00
Igor StuevandGitHub a53c945d5f specify ad provider (#3005)
* specify ad provider

* update publisher key

* upgrade specify sdk

* use profile address for ads

* unifiy banner size, remove hype

* upgrade specify sdk

* review fixes
2025-09-26 17:12:54 +02:00
Igor StuevandGitHub 936039e8e9 232fixes (#3009)
* status filter fix

* asset filter fix

* fix pagination 2
2025-09-12 15:05:49 +02:00
Igor StuevandGitHub 0f4e29e4d0 zeta chain cctx (#2904)
* zetachain start

* zeta chain cctx table

* pagination

* cctx page init

* meta for new route

* remove backlink

* schema

* continue

* fix

* navigation

* filters to test

* some fixes

* add chain filter

* add error message and revert options

* address chain logo fix

* cctx search

* socket

* fix conflict

* fixes1

* fixes2

* fixes3

* fixes4

* fixes5

* tests

* fixes6

* test fixes

* revert options fix

* stats and revert semi-fix

* fix readme

* cleanup

* check for cctx in lifecycle

* update config

* fixes 8

* fixes 9

* update config

* fixes10
2025-09-05 15:53:00 +02:00
tom goriunovandGitHub f04c953583 Support geas smart contract language 🪿 (#2848)
* Support for `geas` smart contract language 🪿

Fixes #2818

* support fallback method with inputs and outputs

* fix data that is passed to fallback method

* add "pragma" and "define" to builtins

* add "inputs" and "outputs" to the fallback method for all contracts ABI
2025-08-15 13:22:21 +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
Max AlekseenkoandGitHub c24d92193f Support new API for dapp ratings (#2916); Remove dapp security score (#2918) 2025-08-08 14:49:14 +02:00
Max AlekseenkoandGitHub 309bfa9189 Promo banner in the navigation menu (#2859) 2025-07-25 14:41:22 +02:00
tom goriunovandGitHub 6be12ca288 API documentation page (#2725)
* add tabs to api-docs page and put swagger widgets in accordion

* move GraphQL widget into tab

* refactor API docs feature

* add swagger for user ops, bens and tac services

* update screenshots

* fix ts

* fix screenshot
2025-07-16 10:57:38 +02:00
tom goriunovandGitHub 6aa80efb86 Remove "getit" ad provider (#2734) 2025-05-15 09:41:27 +02:00
Igor StuevandGitHub 67912498df Neon: Solana transactions (#2483)
* Neon: Solana transactions

* add neon-devnet to reviews

* add env validation for external txs feature

* txs -> txns

* review fix
2025-02-13 17:15:57 +01:00
tom goriunovandGitHub 9908a53269 Arbitrum messages claiming (#2533)
* txn withdrawals page stub

* add base page layout

* add ConnectWallet alert

* save search term in page query param

* add links to the new page

* add functionality to claim button

* combine "Connect wallet" and "Claim" buttons

* Refactor rollup configuration to introduce ParentChain structure and deprecate legacy environment variables

* handle txn claim

* allow to pass array of RPC urls for parent chain config

* display token value and completion tx hash

* fix csp

* write tests for arbitrum l2 txn withdrawals

* fix ts

* review fixes

* update screenshots and hide button if the txn is not confirmed yet
2025-02-11 10:36:36 +01:00
tom goriunovandGitHub 34991e1b9e Zilliqa: Validator views (#2557)
* list of validators

* validator details page

* clean up

* review fixes
2025-02-11 09:59:02 +01:00
tom goriunovandGitHub adc017d6c7 Zilliqa: filter for Scilla contracts (#2449)
* Zilliqa: filter for Scilla contracts

Fixes #2427

* [skip ci] review fixes
2024-12-09 18:05:44 +01:00
Igor StuevandGitHub 129b4f3883 Scroll views (#2418)
* Scroll views

* review fix

* fix tests
2024-12-03 11:05:28 +01:00
tom goriunovandGitHub 9dd092082f Celo: Cross-link to epoch block on the regular block view and Epoch rewards CSV export (#2386)
* Celo: Cross-link to epoch block on the regular block view

Fixes #2365

* [skip ci] fix hover state for gray-blue tag

* CSV export of epoch transactions for address
2024-11-21 13:44:03 +01:00
tom 125c4880de migrate to eslint 9 and its flat config 2024-11-13 12:54:12 +01:00
isstuev 6a93bdbb0b Zapper integration 2024-10-29 11:54:49 +01:00
isstuev 28700b2d62 Zora: implement custom tag 2024-09-27 15:03:05 +02:00
isstuev f14f2f5a23 add blackfort validators 2024-09-23 12:15:42 +02:00
Max Alekseenko 91f92cba9b add rating count 2024-08-27 19:51:07 +02:00
tom goriunovandGitHub 043cf4aefc SolidityScan API response schema validation (#2190)
* add schema validation to solidity scan report resource

* report invalid API schema event to prometheus
2024-08-26 11:28:53 +02:00
isstuev 5983384e12 process unexpected response from solidityscan 2024-08-08 14:45:08 +02:00
tom 772797996a Update verification methods in the UI 2024-07-31 13:29:43 +02:00
Max AlekseenkoandGitHub 943bcb3040 Merge pull request #2108 from blockscout/get-gas-button
Add a "Get gas" button
2024-07-29 21:52:36 +02:00
Max Alekseenko 76043d668f remove usd_threshold prop 2024-07-25 13:09:25 +02:00
Max Alekseenko 2465065b74 make usd_threshold required 2024-07-23 15:34:51 +02:00
Max Alekseenko 34141153f9 add get gas button 2024-07-19 18:40:23 +02:00
Max Alekseenko a195ca3534 Merge branch 'main' into dapp-rating 2024-07-18 10:20:49 +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
Max Alekseenko 22362f8ed1 fix rating records duplication 2024-07-17 16:46:08 +02:00
Max Alekseenko d599cf98b8 implement rating change 2024-07-15 17:31:33 +02:00
Max Alekseenko eab34b9506 Merge branch 'main' into dapp-rating 2024-07-10 14:49:34 +02:00