Skip to content

v1.2.3-alpha

Pre-release
Pre-release

Choose a tag to compare

@AugustoL AugustoL released this 10 Mar 13:47
· 151 commits to main since this release
80f0f73

OpenScan v1.2.3-alpha Release Notes

What's New

This release introduces proxy contract detection, Kleros verified tags, Etherscan as a parallel verification source, auto RPC sync by latency, skeleton loaders, breadcrumb navigation, and a range of accessibility and UX improvements.


New Features

Proxy Contract Detection

  • EIP-1967, EIP-1822 (UUPS), EIP-1967 Beacon, and EIP-1167 Minimal Proxy — automatically detected via eth_getStorageAt and bytecode pattern matching
  • Proxy type and implementation address displayed on contract pages with link and contract name badge
  • ABI tab switcher — toggle between Implementation and Proxy ABIs when both are verified
  • Warning banner when proxy implementation is not verified on Sourcify
  • Sourcify V2 proxy resolution — leverages Sourcify's native proxy resolution for metadata

Kleros Verified Tag

  • Live Kleros ATQ integration — address pages on Ethereum mainnet query the Kleros Address Tags registry via The Graph subgraph
  • Clickable tag badge with Kleros logo and public name, linking to the Kleros Curate item page
  • CDN fallback — falls back to metadata CDN if The Graph query fails
  • 1-hour in-memory cache to reduce redundant Graph API calls

Etherscan as Parallel Verification Source

  • Parallel Sourcify + Etherscan queries — when an Etherscan API key is set in Settings, both sources are queried simultaneously
  • Linked tag badges — verified sources displayed as [Sourcify ↗] and [Etherscan ↗] on the contract status row
  • Etherscan V2 API — supports 60+ chains with a single API key
  • Opt-in — no behavior change without an API key configured

Auto-Sync RPCs by Latency

  • First-load auto-sync — on first visit, all networks with ≥2 RPC endpoints are tested in parallel and reordered by quality (privacy tier + latency) after route settles for 1.5s
  • Storage-only writes — sorted RPCs written only to localStorage to avoid triggering data refetches
  • Persistent sync flag — subsequent loads skip re-sync unless cache is cleared
  • Reset on cache clear — "Clear Cache Data" resets the sync flag so the next load re-syncs

Skeleton Loaders

  • Inline skeleton rows across blocks and transactions tables, Bitcoin pages, and dashboard cards
  • Card-level skeletons that match the exact structure and height of loaded rows
  • Stable layouts — prevent card and row size changes between loading and loaded states
  • Pagination buttons remain visible during loading state

Breadcrumb Navigation

  • Added to all EVM and Bitcoin detail pages — blocks, transactions, and address pages
  • Shows network short name instead of chain ID

CopyButton Component

  • Reusable CopyButton integrated into LongString, addresses, and from/to/contract fields on transaction pages

Home Page Redesign

  • Featured full-width Ethereum/Bitcoin card at the top of the network list
  • Testnet toggle visible only in super user mode
  • Network IDs display in super user mode

Bug Fixes

  • Address type detection — avoid false account fallback when type detection RPC calls fail; export hasContractCode() and reuse in fallback logic
  • Display component remount — prevent remount on background re-fetches
  • Proxy detection bugs and EOA misclassification — multiple edge cases fixed across all display components
  • NaN chainId — resolved NaN when networkId is a slug (e.g. eth, base); added resolveChainId() utility
  • EVM Mempool page — replaced debug stub with proper placeholder page
  • Search empty state — improved with search bar, guidance, and Go Home button
  • Profile error page — user-friendly message and recovery CTAs
  • CSS show-mobile-* classes — added missing display: none defaults causing address hash duplication on desktop
  • Supporters page — CTA copy clarified; broken /subscriptions links replaced with docs URL

Accessibility

  • prefers-reduced-motion — background animation respects system setting
  • Text contrast — improved to meet WCAG AA (4.5:1 ratio)
  • Global :focus-visible outline — keyboard navigation support across all interactive elements
  • aria-live + role=alert — loading and timeout states announce changes to screen readers

Refactoring

  • About, Contact, and Subscriptions pages removed from the app — all content now lives at the docs site; footer links updated accordingly
  • hasContractCode() exported and covered with unit tests

Infrastructure

  • CI: replace Pinata with Storacha — IPFS deployment now uses storacha/add-to-web3@v4; Kubo (IPFS CLI) removed; meta branch badge now shows CIDv1 (bafy...)
  • SEO — canonical and alternate links added to index.html for improved AI entity graph indexing

Access OpenScan


Supported Networks

Network Network ID Status
Ethereum Mainnet eip155:1 Supported
Arbitrum One eip155:42161 Supported
Optimism eip155:10 Supported
Base eip155:8453 Supported
Polygon PoS eip155:137 Supported
BSC (BNB Chain) eip155:56 Supported
Sepolia Testnet eip155:11155111 Supported
BSC Testnet eip155:97 Supported
Localhost (Hardhat/Anvil) eip155:31337 Supported
Bitcoin Mainnet bip122:000000000019d6689c085ae165831e93 Supported
Bitcoin Testnet4 bip122:00000000da84f2bafbbc53dee25a72ae Supported

PRs Included

  • #272 - fix(address): avoid false account fallback when type detection fails
  • #273 - chore: bump version to 1.2.3-alpha
  • #277 - feat(address): show Kleros verified tag on address page
  • #279 - feat(address): proxy contract detection + Etherscan verification source
  • #280 - feat: UX, accessibility, and loading-state improvements
  • #282 - feat(seo): add canonical and alternate links
  • #284 - fix: pre-release fixes for v1.2.3
  • #285 - feat(settings): auto-sync RPCs by latency on first load
  • #286 - refactor: remove about/contact/subscriptions pages in favor of docs site
  • #287 - v1.2.3-a release PR
  • #288 - fix: resolve NaN chainId when networkId is a slug
  • #289 - chore(ci): replace Pinata with Storacha for IPFS deployment

Feedback & Contributions

We welcome your feedback!


The OpenScan Team