Skip to content

v1.2.5-a#342

Open
AugustoL wants to merge 48 commits intomainfrom
dev
Open

v1.2.5-a#342
AugustoL wants to merge 48 commits intomainfrom
dev

Conversation

@AugustoL
Copy link
Collaborator

No description provided.

MiltonTulli and others added 30 commits March 3, 2026 23:12
Add support for Avalanche C-Chain, a standard EVM-compatible chain with high throughput. Implements network configuration, RPC client initialization (via direct EthereumClient instantiation since not in ClientFactory), and adapter routing. Closes #113.

- Add Avalanche C-Chain entry to networks.json with CAIP-2 identifier and metadata
- Update DataService to create EthereumClient for unsupported chains
- Update AdapterFactory and NetworkAdapter to handle chain 43114
- Route to EVMAdapter (standard EVM implementation)
Consolidate scattered union types (SupportedChainId | 11155111 | 97 | 31337 | 43114)
into a single AppChainId type, making it easier to add new networks.
…port

Update @openscan/network-connectors to v1.4.0 which includes native
AvalancheClient (43114). Remove the EthereumClient workaround for
unsupported chains and use ClientFactory directly. Simplify AppChainId
type since 43114 is now part of SupportedChainId.
Add a reusable helper tooltip infrastructure that provides contextual
explanations for blockchain data fields across all explorer pages.

Infrastructure:
- HelperTooltip component: hover/focus/tap with a11y support
- FieldLabel wrapper: knowledge-level-aware tooltip visibility
- Settings UI: enable/disable toggle + beginner/intermediate/advanced selector
- Navbar quick-switcher: cycle through levels with colored border indicator
- New `tooltips` i18n namespace with content in all 5 languages

Coverage:
- EVM transaction page: all fields including L2 (Arbitrum, OP Stack) and blob fields
- EVM block page: all fields including More Details (advanced-only) and Arbitrum fields
- Address/contract pages: verification, proxy, read/write, balance, nonce, ENS, EIP-7702
- Token/NFT pages: standard, decimals, supply, token ID, owner, approved, metadata URI
- Bitcoin transaction/block/address pages: all fields with BTC-specific content
- Settings page: knowledge-level selector tooltip
…twork

feat: add Avalanche C-Chain network support
Hardhat v3 does not support Geth's callTracer or prestateTracer options
for debug_traceTransaction. Add struct log conversion utilities that
reconstruct call trees and state diffs from opcode-level traces.
- Fix tooltip z-index clipping by rendering bubbles via React Portal
  to document.body, escaping all ancestor overflow containers
- Enrich tooltip descriptions with EIP-1559, EIP-4844, UTXO model,
  Merkle tree, and proxy pattern explanations across all 5 locales
- Fix Arbitrum difficulty tooltip and circular blob definition
- Add missing tooltips: tx history table headers, account type,
  analyser tabs, finalized badge, contract details, Bitcoin
  confirmations, inputs/outputs columns, network stats, state changes
- Reclassify knowledge levels: beginner=all tooltips,
  intermediate=hides basic fields, advanced=complex/chain-specific only
- Update knowledge level descriptions in all locale settings files
Move coinbase and witness to left column, RBF to right column
for better visual grouping of related fields.
Fetch block height from block header when displaying confirmed
transactions. Block number is shown as plain text before the
clickable block hash link.
Support all four directions (top, bottom, left, right) for tooltip
bubbles. Use left placement for confirmation and finalized badges
in the top-right corner. Add vertical viewport clamping.
Compute final pixel position for both axes before removing transform,
so vertical translation is preserved when only horizontal clamping
is needed and vice versa.
Render a CSS triangle arrow inside the tooltip bubble that points
toward the trigger. Arrow position is dynamically calculated after
viewport clamping to always aim at the trigger center.
Move raw opcode trace to a new tab in TX Analyser with paginated
view, expandable stack/storage per step, and opcode color coding.
Remove the old standalone debug trace section from TransactionDisplay.
Hide TX Analyser entirely when no tabs have content to show.
- workflow: add dual strategy (patch PRs to dev, release branches for minor/major)
- architecture: update to NetworkAdapter/AdapterFactory pattern, add Bitcoin and Hardhat
- patterns: fix paths, update "add network" steps to new adapter structure
- i18n: add 5 supported languages, tooltips namespace, update checklists
- code-style: reference all 5 locales in i18n verification
Add /etherscan/verify route to the Cloudflare Worker that proxies
contract verification requests to Etherscan V2 API using a shared
API key. Frontend now uses the worker proxy as default fallback when
no user key is configured, making verification free for all users.

Closes #322
Remove hasEtherscanKey gate from useContractVerification so that
Etherscan verification runs for all users via the worker proxy,
not just those with a configured API key.
Detect Vyper contracts from Etherscan's CompilerVersion (vyper: prefix)
and Sourcify's compilation.language field. Use correct .vy file extension
instead of hardcoded .sol. Add CodeBlock component with Prism.js for
syntax highlighting of Solidity (.sol) and Vyper (.vy) source files.

Test with CRV token (Vyper, verified on Sourcify):
0xd533a949740bb3306d119cc777fa900ba034cd52
feat(tooltips): add helper tooltip system with knowledge-level support
Add EIP-4844 blob data display by fetching from the Beacon Chain API.
Super user mode only. Includes BeaconService for blob sidecar fetching,
KZG commitment to versioned hash matching via Web Crypto SHA-256,
configurable Beacon API endpoints in Settings, and blob viewer with
hex/UTF-8 toggle. Block page shows all blobs in a collapsible section,
transaction page adds a Blob Data tab in the TX Analyser.

Default public Beacon API endpoints provided for Ethereum and Sepolia.
Blob pruning (~18 days) handled gracefully with clear user messaging.
i18n translations added for all 5 supported languages.

Closes #301
feat(worker): add Etherscan API proxy for free contract verification
…l CSS

Rename tx-analyser-* and analyser-* CSS classes to detail-panel-* for
reuse across pages. Create BlockAnalyser tabbed panel for block details
(More Details, Transactions, Withdrawals, Blob Data) mirroring the
TxAnalyser pattern. Simplify BlockDisplay by replacing collapsible
sections with the new BlockAnalyser component.
docs(claude): update rules to reflect current architecture and workflow
Merge openscan-explorer/dev into feat/beacon-blob-data, incorporating
helper tooltips, knowledge levels, raw trace tab, FieldLabel component,
Hardhat adapter, and Etherscan worker proxy alongside our beacon blob
and block analyser changes.
…-blob-data

# Conflicts:
#	.claude/rules/architecture.md
#	.claude/rules/patterns.md
#	src/components/pages/evm/block/BlockDisplay.tsx
#	src/components/pages/evm/tx/TxAnalyser.tsx
#	src/components/pages/evm/tx/analyser/types.ts
#	src/locales/en/settings.json
#	src/locales/es/settings.json
#	src/locales/ja/settings.json
#	src/locales/pt-BR/settings.json
#	src/locales/zh/settings.json
#	src/types/index.ts
AugustoL added 18 commits March 19, 2026 19:25
Adds Avalanche C-Chain RPC endpoints to the metadata service.
Store the metadata package version in the RPC cache. On startup, if the
cached version doesn't match the current METADATA_VERSION, treat the
cache as stale and refetch immediately. This ensures users get new RPC
endpoints (e.g. Avalanche C-Chain) without waiting for the 24h TTL.
…support

# Conflicts:
#	src/App.tsx
#	src/components/pages/evm/address/shared/ContractDetails.tsx
#	src/components/pages/evm/address/shared/ContractInfoCard.tsx
Add per-provider proxy routes to the OpenScan worker to hide API keys
for Alchemy (Beacon, BTC, EVM) and Infura (EVM). Includes rate limiting,
request validation with method allowlists, and CORS support for GET.

Routes:
- GET  /beacon/alchemy/:networkId/blob_sidecars/:slot
- POST /btc/alchemy
- POST /evm/alchemy/:networkId
- POST /evm/infura/:networkId

Frontend changes:
- Extract shared OPENSCAN_WORKER_URL into src/config/workerConfig.ts
- Add BeaconService and useBeaconBlobs hook for blob sidecar fetching
- Add worker BTC and EVM URLs to BUILTIN_RPC_DEFAULTS as fallbacks
- Recognize worker-proxied URLs in settings RPC tag labels

Closes #334
Add dRPC routes reusing existing rate limiting and validation middleware.
dRPC supports all EVM networks plus Bitcoin via authenticated query params.

Routes:
- POST /evm/drpc/:networkId
- POST /btc/drpc
Rename from openscan-groq-ai-proxy to reflect broader scope. Old worker
remains live until all frontend builds use the new URL.
Route: POST /btc/onfinality/:networkId
Supports bip122:000000000019d6689c085ae165831e93 (mainnet)
and bip122:000000000933ea01ad0ee984209779ba (testnet).
Routes:
- POST /evm/ankr/:networkId (all 8 EVM networks)
- POST /btc/ankr
feat(address): add Vyper smart contract support and syntax highlighting
fix: invalidate metadata cache on version bump
- Input Data is now a tab in TX Analyser, not an inline section
- Nonce/Position fields are in the details grid, no "Other Attributes:" header
- Gas Price label uses FieldLabel with tooltip, breaking exact text match
- Invalid address may show timeout or redirect to home
- ERC1155 token image may show loading timeout for slow metadata
- Blocks header test waits for table data before checking info text
feat(blocks/tx): Display raw blob data content via Beacon API
Restrict the EVM proxy to a curated set of read-only JSON-RPC methods,
preventing callers from invoking admin, signing, or state-changing
methods through the shared provider API keys.
Include worker/src in biome.json scope and fix all resulting issues:
format corrections, remove useless continue, replace non-null
assertions with safe alternatives.
feat(worker): add proxy routes for Beacon API, Bitcoin RPC and EVM RPC
@github-actions
Copy link

🚀 Preview: https://pr-342--openscan.netlify.app
📝 Commit: ac355d0fbd1f785f7dd22fd1042cda50a7fda1de

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants