Skip to content

Latest commit

Β 

History

History
105 lines (94 loc) Β· 5.7 KB

File metadata and controls

105 lines (94 loc) Β· 5.7 KB

DCC Token Scanner Bot β€” Architecture

Overview

A production-grade Telegram-native token intelligence platform for the DecentralChain ecosystem. Users scan token/asset IDs, inspect analytics, deployer history, wallet activity, pools, liquidity, swaps, risk scores, trending tokens, and group alpha caller performance β€” all inside Telegram.

High-Level Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Telegram    β”‚     β”‚  Telegram   β”‚     β”‚   Admin      β”‚
β”‚  Bot         β”‚     β”‚  Mini App   β”‚     β”‚   Console    β”‚
β”‚  (Telegraf)  β”‚     β”‚  (Next.js)  β”‚     β”‚   (Next.js)  β”‚
β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜
       β”‚                    β”‚                    β”‚
       β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                    β”‚
            β”Œβ”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”
            β”‚  Scanner API   β”‚
            β”‚  (Fastify)     β”‚
            β””β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                    β”‚
       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
       β”‚            β”‚                    β”‚
β”Œβ”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”  β”Œβ”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”
β”‚ Market   β”‚  β”‚   Risk     β”‚  β”‚  Chart          β”‚
β”‚ Data Svc β”‚  β”‚   Engine   β”‚  β”‚  Service        β”‚
β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜
       β”‚            β”‚                    β”‚
       β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                    β”‚
            β”Œβ”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”
            β”‚  Chain Indexer  β”‚
            β”‚  (node-api-js) β”‚
            β””β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                    β”‚
            β”Œβ”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”
            β”‚  DecentralChainβ”‚
            β”‚  Node(s)       β”‚
            β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Cross-cutting:
  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
  β”‚ Redis  β”‚  β”‚ BullMQβ”‚  β”‚ PostgreSQL β”‚
  β””β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Monorepo Structure

/
β”œβ”€β”€ apps/
β”‚   β”œβ”€β”€ chain-indexer/         # Real-time block/tx ingestion
β”‚   β”œβ”€β”€ market-data-service/   # Price, volume, trending computation
β”‚   β”œβ”€β”€ risk-engine/           # Token risk scoring
β”‚   β”œβ”€β”€ scanner-api/           # Unified REST/WS API gateway
β”‚   β”œβ”€β”€ telegram-bot/          # Telegraf-based Telegram bot
β”‚   β”œβ”€β”€ telegram-miniapp/      # Next.js Telegram Mini App
β”‚   β”œβ”€β”€ admin-console/         # Admin dashboard (Next.js)
β”‚   β”œβ”€β”€ alerts-engine/         # User alert processing & delivery
β”‚   └── chart-service/         # OHLCV candle aggregation
β”‚
β”œβ”€β”€ packages/
β”‚   β”œβ”€β”€ blockchain-client/     # Central DecentralChain adapter layer
β”‚   β”œβ”€β”€ shared-sdk/            # Shared types, DTOs, event definitions
β”‚   β”œβ”€β”€ db/                    # Prisma schema, migrations, client
β”‚   β”œβ”€β”€ config/                # Env loading & validation (Zod)
β”‚   β”œβ”€β”€ logger/                # Pino-based structured logging
β”‚   β”œβ”€β”€ telegram-ui/           # Telegram message/keyboard builders
β”‚   └── risk-rules/            # Pluggable risk rule framework
β”‚
β”œβ”€β”€ docker/                    # Dockerfiles per service
β”œβ”€β”€ docker-compose.yml
β”œβ”€β”€ pnpm-workspace.yaml
β”œβ”€β”€ tsconfig.base.json
β”œβ”€β”€ package.json
└── architecture.md

Data Flow

  1. Chain Indexer connects to DecentralChain node via node-api-js, polls/streams new blocks
  2. Parses blocks/txs using marshall, ts-types, transactions libraries
  3. Normalizes into internal events (TOKEN_CREATED, SWAP_EXECUTED, etc.)
  4. Persists to PostgreSQL, publishes to Redis/BullMQ
  5. Market Data Service consumes events, computes rolling metrics, caches in Redis
  6. Risk Engine consumes events + queries DB, produces risk scores per token
  7. Chart Service aggregates swap events into OHLCV candles
  8. Alerts Engine monitors events against user alert rules, delivers via Telegram
  9. Scanner API serves all data to consumers (bot, miniapp, admin)
  10. Telegram Bot handles commands, auto-detects asset IDs, calls Scanner API
  11. Telegram Mini App provides rich UI with charts, holders, risk badges

Key Design Decisions

  • Adapter pattern: All DecentralChain SDK access isolated in blockchain-client
  • Event-driven: Indexer publishes normalized events; downstream services subscribe
  • BigNumber everywhere: No floating-point for token/financial math
  • Idempotent ingestion: Indexer supports replay from any height
  • Pluggable risk rules: Each rule is a self-contained module
  • Redis for hot data: Trending, prices, recent scans all cached
  • BullMQ for jobs: Alert evaluation, metric computation, backfill tasks
  • Zod at boundaries: All API input/output validated with Zod schemas
  • Structured logging: Pino with request tracing across all services
  • Prometheus metrics: Every service exposes /metrics endpoint