Skip to content

[Backend] Token Metadata & Verified Asset Registry Service #1323

Description

@blurbeast

Overview & Background

FlowFi streams can be created using any valid Soroban token contract or Stellar Asset Contract (SAC). To display human-readable symbols (e.g. USDC, EURC, XLM), icons, decimals, and verification badges in the frontend, the backend needs a Token Registry service that indexes on-chain asset details and caches metadata.


Technical Specification & Architecture

1. Database Schema (prisma/schema.prisma)

model TokenRegistry {
  id              String   @id @default(uuid())
  contractAddress String   @unique // C... or SAC address
  symbol          String
  name            String
  decimals        Int
  iconUrl         String?
  issuerAddress   String?  // G... for Stellar classic assets
  isVerified      Boolean  @default(false)
  updatedAt       DateTime @updatedAt
  createdAt       DateTime @default(now())

  @@index([contractAddress])
  @@index([symbol])
}

2. Service Implementation (backend/src/services/token-registry.service.ts)

  1. On-Chain Probe:
    • Query Soroban token contract decimals and symbol via RPC simulation.
    • If SAC, resolve asset code and issuer via Stellar Horizon.
  2. Caching:
    • Cache token metadata in Redis with 24-hour TTL.
  3. API Endpoint:
    • GET /api/v1/tokens: List verified tokens.
    • GET /api/v1/tokens/:address: Fetch or resolve metadata for a specific token contract.

Target Files

  • backend/prisma/schema.prisma
  • backend/src/services/token-registry.service.ts
  • backend/src/controllers/token.controller.ts
  • backend/src/routes/v1/token.routes.ts

Acceptance Criteria

  • Automatically resolves decimals and symbol for any Soroban or SAC token address.
  • Caches asset metadata in database and Redis to minimize Horizon RPC traffic.
  • REST API endpoints for token listing and metadata lookup.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions