Design Crypto Portfolio Tracker

Medium40 min
1 / 30
understanding9 min read

Problem Statement: Unified Multi-Chain Portfolio View

Problem Statement: Unified Multi-Chain Portfolio View — portfolio tracker interview depth

Problem Statement: Unified Multi-Chain Portfolio View

Design a crypto portfolio tracker like Zerion, DeBank, and Zapper: aggregate multi-chain holdings into one USD view with DeFi positions, spam controls, and realtime deltas. This section covers problem statement: unified multi-chain portfolio view during the understanding phase.

Operational detail

Anchor capacity: 5M daily active viewers, 80M linked addresses, 25 chains in MVP, portfolio refresh p99 ≤3s, price staleness ≤60s. Treat ingest lag and price_age as first-class SLOs on every dashboard.

Failure and edge cases

RPC quorum disagreement, oracle flash wick, indexer reorg rewind, whale shard hot spots, and consent revocation on linked addresses.

Depth notes

  • Mechanism slice for Problem Statement: Unified Multi-Chain Portfolio View: how Users paste EOA or ENS; product shows one USD net worth shapes RPC spend and cache sizing.
  • Operational drill: when Must span L1/L2 without forcing users to pick a chain first fails, show detection (lag_blocks, price_age_ms) and mitigation.
  • Staff+ extension: document adapter registry for long-tail DeFi protocols without blocking snapshot commits.
  • Interview checkpoint (sec-01-understanding): quantify DeFi positions are first-class, not wallet dust only with numbers, not adjectives.
  • Threat tie-in: spam airdrops and oracle spikes are portfolio integrity risks, not cosmetic UI glitches.
  • Trade-off hook: hybrid indexer+RPC vs vendor API—state cost and freshness honestly.

Invariants

  • Custody invariant: read-only; no seed phrases on servers.
  • Money invariant: store raw integer amounts; USD is derived, never authoritative on-chain.
  • Freshness invariant: snapshot version monotonic; stale prices surface explicit UI flags.
javaOne Dark Pro
1public record PositionKey(int chainId, String wallet, String contract) {}
pythonOne Dark Pro
1def usd_micros(amount: int, decimals: int, price_micros: int) -> int:
2 return (amount * price_micros) // (10 ** decimals)
typescriptOne Dark Pro
1export interface StaleFlags { priceStale: boolean; ingestLagBlocks: number }

Why interviewers care

Crypto Portfolio Tracker interviews reward crisp scope, explicit trade-offs, and failure stories—not generic microservice diagrams.

Interview checkpoint

Name one failure story for Problem Statement: Unified Multi-Chain Portfolio View that proves you understand real outages, not happy-path diagrams.

Key Highlights

  • Users paste EOA or ENS; product shows one USD net worth
  • Must span L1/L2 without forcing users to pick a chain first
  • DeFi positions are first-class, not wallet dust only
  • Interviewers probe valuation correctness, not rainbow UI
Staff+ signal
Tie Problem Statement: Unified Multi-Chain Portfolio View to measurable portfolio metrics—price_age_ms, lag_blocks, snapshot_version—not buzzwords alone.
Avoid this
Using float balances or hiding chain lag without per-network stale banners.

Section Rescue Kit

Buzzwords to use:

Snapshot versionOracle median

Safe statements:

  • "For Problem Statement: Unified Multi-Chain Portfolio View, I'll separate chain balances from USD estimates and show staleness flags."
  • "Let me quantify peak RPS and oracle fan-out before picking managed services."
Design Crypto Portfolio Tracker - System Design | WinJob | WinJob