Back to the collection
Selected work / Blockchain tooling working

Base Launch Observer

Inspect a token launch through pool activity, historical evidence, and explicit trading-safety boundaries.

Base Launch Observer overview with read-only status, market metrics, and price and liquidity charts

01 — The brief

Start with the useful tension.

The problem

Launch liquidity and indexed market activity change quickly. A trade-oriented monitor needs durable, block-aware evidence and a clear boundary between observation, dry-run checks, and live transaction paths.

The audience

Developers and researchers evaluating token launches on Base who need pool-level market context without initiating trades.

My contribution

Independently built the Base launch observation and trading-research implementation: durable market and history collection, a local dashboard, and fail-closed Uniswap v3/v4 evaluation paths.

02 — Capability ledger

What exists, what is next.

A plain-language status check, so a polished surface never implies more than the work supports.

Implemented

05
  • Persisted market snapshots

    Samples eligible direct token/Base USDC, WETH, and ETH pools and stores price, reported liquidity, rolling 24h volume, indexed five-minute buy/sell counts, token metadata, primary-pool state, pinned RPC calls, and explicit errors in JSONL records.

  • Historical event backfill

    Backfills Base launch-window logs, transactions, receipts, blocks, transfers, swaps, venue discovery, reference evidence, and retained gaps/errors while tracking coverage in a separate status document.

  • Local dashboard with SSE updates

    Serves a local-only HTML dashboard from persisted files and refreshes state over Server-Sent Events with polling fallback; the UI renders status, market metrics, SVG price/liquidity charts, observed pools with expandable raw fields, automated commentary, optional reference-wallet context, and caveats.

  • Uniswap v3/v4 candidate detection

    Read-only detector modules parse Uniswap v3 PoolCreated and v4 Initialize events, filter candidates to exactly one configured quote currency, retain block/transaction/log identity, and compute v4 PoolIds; the implementation remains partial around lifecycle recovery and v4 quoting.

  • Fail-closed dry-run evaluation

    The configured dry-run path checks token identity, pool liquidity/reserves, an exact v3 quote, price impact, optional valuation, quote-based round-trip heuristics, an exact-buy eth_call, and a fee budget before reporting a no-broadcast dry-run result. V4 candidates stop with an explicit disabled reason until exact quoting and route simulation exist.

Planned

01
  • Live execution activation

    Planned only: the repository contains v3/v4 calldata builders plus fee, nonce, signing, and broadcast modules, but live v3 remains disabled because round-trip checks do not transfer tokens and live v4 lacks an exact quote and verified route simulation. Receipt durability and restart recovery are also unfinished.

Unverified

00

Nothing recorded here yet.

03 — Design decisions

The reasoning stays in the room.

01Separate observation from execution

The observer is intentionally a local read-only surface: it reads persisted files, exposes GET/HEAD plus SSE routes, and states that it never signs, broadcasts, or requests private keys. This makes the capture and research workflow inspectable without starting the trading entrypoint.

02Preserve raw evidence and uncertainty

Snapshots retain raw indexer fields and pinned RPC results, while history status retains explicit errors and gaps. The unresolved official launch timestamp is surfaced as provisional instead of being presented as fact.

03Fail closed while execution checks are incomplete

Missing or unsafe identity, liquidity, quote, impact, simulation, fee, or route checks return no-transaction results. The documented safety posture keeps both protocol live paths disabled instead of weakening a failed check.

04Treat pool-specific liquidity as different from executable depth

V4 state reads use ReservesLens and set reserves to zero when lens data fails rather than using PoolManager's shared balance. The dashboard labels reported liquidity as non-executable depth and repeats the limitation in its caveats.

05Pin and deduplicate candidate evidence

Candidate records retain block, transaction, and log ordering metadata; a persisted cursor and an in-process key based on block hash, transaction hash, and log index prevent repeated evaluation across scanned ranges.

05 — A short walk-through

See the shape of the interaction.

Capture storyboard

Base Launch Observer: inspect a persisted launch window

0:30
Storyboard · recording not supplied
  1. 0–4s: Open http://127.0.0.1:4420/ and show the SSE-connected local dashboard, read-only status, and provisional launch-time notice.
  2. 4–12s: Hold on the latest snapshot metrics and price/liquidity charts, then scroll to the Observed pools table.
  3. 12–20s: Expand one View raw object disclosure to show preserved source fields; keep the interaction read-only.
  4. 20–30s: Frame only Historical coverage, Automated commentary, and Read the numbers carefully; exclude reference-wallet context and stop with the no-signing/no-broadcast caveat visible.

The materials

Built with care.

Stack
  • TypeScript (strict, NodeNext)
  • Node.js ES modules
  • viem
  • dotenv
  • Node HTTP and Server-Sent Events
  • JSON and JSONL file persistence
  • Base JSON-RPC
  • DexScreener token-pairs API
  • Uniswap v3/v4 event ABIs