> ## Documentation Index
> Fetch the complete documentation index at: https://docs.walletwall.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Wallet Profile

> Compact wallet profile panel — identicon header, hero balance, holdings donut, transaction-cadence heatmap, transfer flow ledger, behavior labels, and signal-gated onward paths.

# 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](/features/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:

<Steps>
  <Step title="Identicon header">
    ENS or shortened address, chain badge, copy-address, and Etherscan link.
  </Step>

  <Step title="Hero balance + supporting metric cards">
    Native ETH balance with an estimated USD value, alongside supporting metric cards for transactions, counterparties, and last active.
  </Step>

  <Step title="Holdings strip with composition donut">
    Priced ERC-20 holdings — or 90-day trading exposure — with a top-5-plus-"Other" composition donut.
  </Step>

  <Step title="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.
  </Step>

  <Step title="Transfer flow ledger (inflow / outflow)">
    Two-column view of the wallet's largest counterparties, in USD-denominated flow or raw transfer counts.
  </Step>

  <Step title="Behavior labels and confidence caveats">
    Structural and activity descriptors as status badges, with elevated-risk signals separated into a confidence-caveats list.
  </Step>

  <Step title="Ranked lists">
    Top tokens by transfer volume, top counterparties, related pools/contracts, and the last 20 transfers.
  </Step>

  <Step title="Contextual onward paths">
    Signal-gated links to Quantum Exposure and Vault Readiness, shown only when relevant.
  </Step>
</Steps>

## 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.

<Info>
  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`).
</Info>

## 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:

| Metric         | Source                                                             |
| -------------- | ------------------------------------------------------------------ |
| Native balance | `ethBalance` (ETH) with `totalValueUSD` hint                       |
| Transactions   | `txCount` — labelled "Recent sample" when the dataset is sampled   |
| Counterparties | `uniqueCounterparties` from the baseline                           |
| Last active    | Relative time (e.g. "2 days ago") with the absolute date as a hint |

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](/features/whale-watcher#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.

<Warning>
  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.
</Warning>

## 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:

| Path                    | When shown                                   | Destination                                                                                                                                                                                                                                            |
| ----------------------- | -------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Review Quantum Exposure | Whenever the panel has valid wallet context  | Quantum route, prefilled with the wallet (`qw`) and, when a genuinely priced portfolio value is already known, the balance (`balanceUsd`) — feeds the off-Dune value-at-risk axis so it isn't stuck at "unknown" for wallets outside the Dune snapshot |
| Check Vault Readiness   | Only when vault-relevant signals are present | Stablecoin Vault route, prefilled with `wallet` and `source=wallet-profile`                                                                                                                                                                            |

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](/features/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](/features/whale-watcher) workspace
(adversarial signals, narrative engine, protocol affinity, and the Quantum Exposure section).

## Related surfaces

<Columns cols={3}>
  <Card title="Whale Watcher" icon="eye" href="/features/whale-watcher">
    The full intelligence workspace the "Deep Dive →" action opens — adversarial signals, narrative engine, protocol affinity, and Quantum Exposure.
  </Card>

  <Card title="Quantum Intelligence" icon="atom" href="/features/quantum-intelligence">
    The cross-cutting migration-urgency framework behind the panel's "Review Quantum Exposure" onward path.
  </Card>

  <Card title="Stablecoin Vault" icon="vault" href="/features/vault">
    The read-only vault-readiness journey behind the panel's signal-gated "Check Vault Readiness" onward path.
  </Card>
</Columns>
