Skip to main content

Coinstellation

Coinstellation is WalletWall’s wallet relationship graph. It renders the on-chain connections of an Ethereum wallet as an interactive node-edge visualization, built from transaction history sourced from Etherscan, Alchemy, and The Graph.

Galaxy graph

The graph renders wallet addresses, tokens, DeFi protocols, NFTs, and counterparties as nodes connected by weighted edges. It is displayed in a 2D/3D interactive canvas using Three.js. Nodes are laid out to emphasize relationship clusters: wallets with high transaction volume to the same protocol or counterparty appear closer together.

Entry points

Coinstellation can be reached from:
  • A direct wallet address or ENS name entered in the search bar
  • Clicking a tile in Holder Wall
  • Selecting a wallet from the Whale Watcher workspace

Node types

TypeDescription
walletEthereum address (EOA or contract wallet)
tokenERC-20 token contract
defiDeFi protocol contract (Uniswap, Aave, Curve, etc.)
nftNFT contract
counterpartyAddress that transacted with the wallet but is not otherwise classified
anomalyAddress flagged by risk heuristics

Edge relationships

Edges represent transaction relationships derived from loaded Ethereum wallet activity:
  • Wallet-to-token: the wallet holds or traded this token
  • Token-to-protocol: the token flows through this protocol
  • Token-to-counterparty: the token was sent to or received from this counterparty
Edge weight (weightUSD) is the USD-like value of cumulative transactions between the two nodes. txCount records the number of interactions.

Click-to-explore

Clicking any node opens the NodeDetailPanel. Clicking an edge highlights the transaction path between the two connected nodes. Double-clicking a counterparty node or wallet node initiates a graph expansion, loading that node’s own transaction graph and appending its relationships to the current view.

NodeDetailPanel tabs

The NodeDetailPanel has three tabs:
Token balances and estimated USD value held by the selected wallet node. Sourced from CoinGecko price data and on-chain balance calls.

Observability badge

The WalletObservabilityBadge in the graph header shows the data source and provider for the current wallet:
observability.sourceBadge text
liveLive · <ProviderName>
mockDemo
fallbackFallback
The tooltip shows provider, partial flag, freshness, and response duration.

Data sources

Coinstellation is powered by the GET /api/wallet endpoint. Provider selection is automatic:
ConditionProvider
ETHERSCAN_API_KEY setEtherscan (live)
ALCHEMY_API_KEY onlyAlchemy (live)
Neither key setMock wallet provider (deterministic, address-seeded)
The mock provider never calls external APIs. It produces deterministic graph data seeded from the wallet address using ethers.id.

Transaction sampling

The API loads up to a configured sample limit of normal transactions per wallet. The transactionSample field in the response reports:
  • loadedCount: number of transactions loaded
  • sampleLimit: configured limit
  • isSampled: true when the response hit the limit
  • firstLoadedTxAt / lastLoadedTxAt: ISO timestamps of the loaded window
When isSampled is true, the graph may be incomplete. The WalletDataQualityStrip at the bottom of the screen notes partial data without alarming copy.

Whale Watcher context

From any wallet node in Coinstellation, the Whale Watcher workspace can be opened for that wallet. This transitions from graph exploration to the full intelligence workspace.

Label sanitization

Node labels are sanitized via sanitizeLabel before display. Phishing symbols and spam content are redacted. Raw counterparty labels from providers are never shown unmodified.