Skip to main content

Wallet Profile

The Wallet Profile panel is WalletWall’s compact, single-wallet overview. It self-fetches on-chain context for one Ethereum address and presents it as a scannable read-only summary, then hands off to the heavier Whale Watcher workspace for full signal analysis. The panel is a read-only intelligence surface: it never holds custody, never signs, and never writes to a wallet.

Panel layout

The panel renders vertically:
1

Identicon header

ENS or shortened address, chain badge, copy-address, and Etherscan link.
2

Hero balance + supporting metric cards

Native ETH balance with an estimated USD value, alongside supporting metric cards for transactions, counterparties, and last active.
3

Holdings strip with composition donut

Priced ERC-20 holdings — or 90-day trading exposure — with a top-5-plus-”Other” composition donut.
4

Transaction-cadence heatmap

Daily transaction-count timeline built from the latest native-ETH transactions in the loaded sample — not full wallet history or token transfers.
5

Transfer flow ledger (inflow / outflow)

Two-column view of the wallet’s largest counterparties, in USD-denominated flow or raw transfer counts.
6

Behavior labels and confidence caveats

Structural and activity descriptors as status badges, with elevated-risk signals separated into a confidence-caveats list.
7

Ranked lists

Top tokens by transfer volume, top counterparties, related pools/contracts, and the last 20 transfers.
8

Contextual onward paths

Signal-gated links to Quantum Exposure and Vault Readiness, shown only when relevant.

Identicon header

Each wallet gets a deterministic 5×5 mirrored identicon derived from its address, so the same wallet always renders the same mark. The header shows the wallet name (ENS when available, otherwise the shortened address), an Ethereum chain badge, a copy-to-clipboard control, and an Etherscan link.
Outbound address links are only constructed for well-formed 0x… hex addresses (etherscanAddress()). Non-address values (ENS, protocol names) and any unsafe scheme such as javascript: are never turned into links — this prevents DOM-based link injection (CodeQL js/xss-through-dom).

Hero balance and metrics

A hero card shows the wallet’s native ETH balance with an estimated USD value beneath it, alongside three supporting metric cards: The USD total is an honest portfolio value: ETH plus the wallet’s priced ERC-20 holdings (Alchemy balances valued at DeFiLlama contract prices). Its scope is explicit — valueScope: priced when token holdings contributed, valueScope: eth_only (and labelled as such) when token balances were unavailable for the request. Unpriced tokens are excluded from the total and reported as excluded in walletEvidence rather than guessed at.

Holdings strip and composition donut

The embedded wallet holdings strip shows priced ERC-20 holdings — or 90-day trading exposure — from /api/wallet-portfolio. When composition is shown, a hand-rolled SVG donut renders the top 5 priced holdings plus an aggregated “Other” slice, so portfolio concentration is visible at a glance.
Priced holdings come from the wallet’s live Alchemy token balances valued at DeFiLlama contract prices — not from a Dune dataset. A token without a DeFiLlama contract price is shown as unpriced rather than valued by symbol (a scam token named “USDC” cannot inherit the real USDC price). Stablecoin-scoped surfaces label themselves as USD-stablecoin holdings on Ethereum — the claim matches the data’s actual scope.

Transaction-cadence heatmap

A daily transaction-count timeline (buildActivityTimeline) drives an activity heatmap. Transaction counts are reliable even where per-transfer USD is missing, so the cadence stays meaningful regardless of pricing gaps. The heatmap is built from the wallet’s native-ETH transactions only (ERC-20 token transfers are excluded from this view). The caption discloses the actual count shown, the date span it covers, whether that’s the newest slice of a larger loaded sample, and that token transfers and full wallet history are not represented here.

Transfer flow ledger

The transfer flow ledger is a two-column inflow/outflow view of the wallet’s largest counterparties. It replaced an earlier SVG sankey diagram, which distorted badly because preserveAspectRatio="none" stretched its strokes into wedges. The ledger can display either USD-denominated flow or raw transfer counts.

Holdings value vs. transfer throughput

The panel deliberately separates two things that are easy to conflate:
  • Holdings (the donut and holdings strip) — what the wallet currently holds, priced.
  • Transfer volume / throughput (the “Top tokens by transfer volume” list) — the cumulative notional that has moved through the wallet across the sampled transfers.
The token volume list is tagged “Flow, not holdings” and footnoted as throughput, not current value, with a pointer to the Holdings card for priced positions. This avoids implying that a high-throughput wallet is necessarily a high-value one.

Behavior labels

Structural and activity descriptors (behaviorLabels) render as status badges, with elevated-risk signals separated into a “Confidence caveats” list. Labels are observational descriptors, not findings of wrongdoing. A data-source badge reports the provider, fetch time, and a confidence level that drops to low when fallback data is in use.

Contextual onward paths

When an onNavigate handler is supplied, the panel renders a signal-gated “Explore with other tools” section: Vault Readiness is gated by isVaultRelevant(): it requires a valid EVM address plus secondary signals such as stablecoin flow before the CTA appears, so the vault path is only offered to wallets where read-only rehearsal is actually worth evaluating. The CTA copy states plainly that it is a read-only evaluation with no custody and no wallet writes. This carries a source=wallet-profile context into the Stablecoin Vault readiness flow so the destination can acknowledge where the wallet came from. See Stablecoin Vault for the readiness journey and custody boundaries.

Deep Dive handoff

The “Deep Dive →” actions invoke onDeepDive with the profile node, transitioning from the compact profile into the full Whale Watcher workspace (adversarial signals, narrative engine, protocol affinity, and the Quantum Exposure section).

Whale Watcher

The full intelligence workspace the “Deep Dive →” action opens — adversarial signals, narrative engine, protocol affinity, and Quantum Exposure.

Quantum Intelligence

The cross-cutting migration-urgency framework behind the panel’s “Review Quantum Exposure” onward path.

Stablecoin Vault

The read-only vault-readiness journey behind the panel’s signal-gated “Check Vault Readiness” onward path.