Розробка системи рейт-лімітингу API біржі

Проєктуємо та розробляємо блокчейн-рішення повного циклу: від архітектури смарт-контрактів до запуску DeFi-протоколів, NFT-маркетплейсів та криптобірж. Аудит безпеки, токеноміка, інтеграція з наявною інфраструктурою.
Показано 1 з 1Усі 1306 послуг
Розробка системи рейт-лімітингу API біржі
Середній
~2-3 дні
Часті запитання

Напрямки блокчейн-розробки

Етапи блокчейн-розробки

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1306
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1218
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    920
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1147
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    610
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    885

Розробка админ-панелі криптобіржи

Адміністративна панель біржи — це оперативний центр управління. Оператори моніторять торгівлю, команда поддержки обробляє тікети, compliance офіцер перевіряє підозрілі транзакції, фінансова команда управляє резервами. Один інструмент для всього означає правильну систему ролей та чітке розділення доступу.

Архітектура ролей та дозволів

RBAC (Role-Based Access Control)

type Permission string

const (
    // Користувачі
    ViewUsers      Permission = "users:view"
    EditUsers      Permission = "users:edit"
    FreezeUsers    Permission = "users:freeze"
    
    // KYC/AML
    ViewKYC        Permission = "kyc:view"
    ApproveKYC     Permission = "kyc:approve"
    ViewAML        Permission = "aml:view"
    ManageAML      Permission = "aml:manage"
    
    // Торгівля
    ViewOrders     Permission = "orders:view"
    CancelOrders   Permission = "orders:cancel"
    
    // Фінанси
    ViewBalances   Permission = "finance:view"
    ViewWithdrawals Permission = "finance:withdrawals:view"
    ApproveWithdrawals Permission = "finance:withdrawals:approve"
    
    // Система
    ViewSystemMetrics Permission = "system:metrics"
    ManageConfig      Permission = "system:config"
    ManageTradingPairs Permission = "markets:manage"
)

type Role struct {
    Name        string
    Permissions []Permission
}

var Roles = map[string]Role{
    "super_admin": {
        Name: "Super Admin",
        Permissions: AllPermissions,
    },
    "compliance": {
        Name: "Compliance Officer",
        Permissions: []Permission{
            ViewUsers, ViewKYC, ApproveKYC, ViewAML, ManageAML,
            ViewOrders, ViewBalances, ViewWithdrawals,
        },
    },
    "support": {
        Name: "Support Agent",
        Permissions: []Permission{
            ViewUsers, ViewOrders, ViewKYC,
        },
    },
    "finance": {
        Name: "Finance",
        Permissions: []Permission{
            ViewBalances, ViewWithdrawals, ApproveWithdrawals,
        },
    },
    "marketing": {
        Name: "Marketing",
        Permissions: []Permission{
            ViewUsers, // read-only аналітика
        },
    },
}

Ключові модулі админ-панелі

Дашборд — головна сторінка

interface DashboardMetrics {
  // Торгівля
  volume24h: string;
  trades24h: number;
  activeUsers24h: number;
  
  // Фінанси
  totalDeposits24h: string;
  totalWithdrawals24h: string;
  pendingWithdrawals: number;
  pendingWithdrawalsUSD: string;
  
  // KYC
  pendingKYCApprovals: number;
  
  // Система
  matchingEngineLatency: number;  // мс
  wsConnections: number;
  apiRps: number;
  
  // Алерти
  activeAlerts: SystemAlert[];
}

function AdminDashboard() {
  const { data } = useQuery('dashboard-metrics', fetchMetrics, {
    refetchInterval: 30000,  // оновлюємо кожні 30 сек
  });
  
  return (
    <Grid>
      <MetricCard title="24h Volume" value={data?.volume24h} trend={data?.volumeTrend} />
      <MetricCard title="Pending Withdrawals" value={data?.pendingWithdrawalsUSD} 
                  alert={data?.pendingWithdrawals > 50} />
      <MetricCard title="KYC Queue" value={data?.pendingKYCApprovals} />
      <ActiveAlerts alerts={data?.activeAlerts} />
      <RecentTradesTable />
      <SystemHealthIndicators />
    </Grid>
  );
}

Управління користувачами

function UserManagement() {
  const [filters, setFilters] = useState({
    search: '',
    kycStatus: 'all',
    frozen: false,
    country: '',
  });
  
  return (
    <div>
      <UserFilters filters={filters} onChange={setFilters} />
      
      <DataTable
        columns={[
          { key: 'id', label: 'ID' },
          { key: 'email', label: 'Email' },
          { key: 'fullName', label: 'Name' },
          { key: 'kycTier', label: 'KYC Tier', render: (v) => <KYCBadge tier={v} /> },
          { key: 'registeredAt', label: 'Registered', render: (v) => formatDate(v) },
          { key: 'volume30d', label: '30d Volume' },
          { key: 'status', render: (_, row) => <UserStatusActions user={row} /> },
        ]}
        fetchData={(params) => fetchUsers({ ...params, ...filters })}
        onRowClick={(user) => openUserDetail(user.id)}
      />
    </div>
  );
}

Безпека админ-панелі

2FA обов'язковий для всіх операторів

function RequireRecentMFA({ children }: { children: React.ReactNode }) {
  const { lastMFAAt } = useAdminSession();
  const isRecent = lastMFAAt && Date.now() - lastMFAAt < 30 * 60 * 1000; // 30 хвилин
  
  if (!isRecent) {
    return <MFAChallengeModal onSuccess={refreshSession} />;
  }
  
  return <>{children}</>;
}

Журнал аудиту адміна

Кожне дія оператора логується.

IP обмеження

Админ-панель доступна лише з корпоративного VPN або фіксованих IP.

Технічний стек

Компонент Технологія
Frontend React + TypeScript + TanStack Query
UI Kit Shadcn/ui + Tailwind
Charts Recharts / TradingView Lightweight
Realtime WebSocket + Zustand
Backend Go REST API
Auth JWT + TOTP 2FA
RBAC Custom middleware
Audit PostgreSQL + immutable log

Сроки розробки

Модуль Срок
Аутентифікація + RBAC 2–3 тижні
Дашборд з метриками 2–3 тижні
Управління користувачами 3–4 тижні
KYC approval workflow 2–3 тижні
Очередь виводів 2–3 тижні
Управління ринками 2–3 тижні
Системний моніторинг 2–3 тижні
Журнал аудиту 1–2 тижні

Повна адміністративна панель: 3–4 місяці.