v1.2.3-alpha
Pre-release
Pre-release
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_getStorageAtand 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
CopyButtonintegrated intoLongString, 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
NaNwhennetworkIdis a slug (e.g.eth,base); addedresolveChainId()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 missingdisplay: nonedefaults causing address hash duplication on desktop - Supporters page — CTA copy clarified; broken
/subscriptionslinks 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-visibleoutline — 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.htmlfor improved AI entity graph indexing
Access OpenScan
- ENS Gateway: openscan.eth.link
- GitHub Pages: openscan-explorer.github.io/explorer
- IPFS: Pinned on IPFS for censorship-resistant access
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!
- Report Issues: GitHub Issues
- Contribute: Contributing Guide
- Contact: Available via XMTP on the Contact Page
The OpenScan Team