Розробка системи верифікованої торгової історії

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

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

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

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

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

Розробка системи верифікованої торговельної історії

Верифікована торговельна історія вирішує проблему довіри: будь-хто може заявити про високу дохідність, але лише верифікована історія підтверджує результати реальними біржевими даними. Це фундамент для лідербордів, соціальної торгівлі та маркетплейсів стратегій.

Моделі верифікації

Exchange API Verification — користувач надає read-only API ключ, система завантажує історію ордерів та угод безпосередньо з біржі. Найнадійніший метод.

OAuth-based Verification — деякі біржи (Coinbase) підтримують OAuth. Користувач авторизує доступ без надання API ключів.

Proof of Address — користувач підписує повідомлення приватним ключем гаманця, підтверджуючи володіння адресою. Для on-chain стратегій.

Реалізація API-верифікації

class TradingHistoryVerifier:
    SUPPORTED_EXCHANGES = ['binance', 'bybit', 'okx', 'kraken', 'coinbase']

    async def verify(
        self,
        user_id: str,
        exchange: str,
        api_key: str,
        api_secret: str,
    ) -> VerificationResult:
        # 1. Перевіряємо що ключ read-only
        permissions = await self.check_key_permissions(exchange, api_key, api_secret)
        if permissions.can_trade or permissions.can_withdraw:
            raise SecurityError("API key must be read-only")

        # 2. Завантажуємо історію за останні 180 днів
        client = ExchangeClientFactory.create(exchange, api_key, api_secret)

        trades = await self.download_trade_history(client, days=180)
        orders = await self.download_order_history(client, days=180)

        # 3. Рассчитуємо метрики
        metrics = calculate_verified_metrics(trades, orders)

        # 4. Зберігаємо з підтвердженням верифікації
        record = VerifiedHistory(
            user_id=user_id,
            exchange=exchange,
            verified_at=datetime.utcnow(),
            period_start=datetime.utcnow() - timedelta(days=180),
            period_end=datetime.utcnow(),
            trade_count=len(trades),
            metrics=metrics,
            # Зберігаємо лише метрики, не сам API ключ
        )
        await self.repo.save(record)

        # 5. Відзиваємо або помічаємо API ключ як використаний
        # (ключ не зберігаємо в БД!)
        return VerificationResult(success=True, metrics=metrics)

    async def download_trade_history(self, client, days: int) -> list[Trade]:
        """Paginated завантаження всієї історії"""
        all_trades = []
        since = int((datetime.now() - timedelta(days=days)).timestamp() * 1000)

        while True:
            batch = await client.fetch_my_trades(limit=1000, since=since)
            if not batch:
                break
            all_trades.extend(batch)
            since = batch[-1]['timestamp'] + 1
            await asyncio.sleep(0.5)  # rate limit

        return all_trades

Безпека API ключів

API ключи користувачів — крайне чутливі дані. Навіть read-only ключ розкриває торговельну активність користувача. Правила роботи з ключами:

  • Ніколи не зберігати API ключи в базі даних. Використовуємо лише для разової завантаження історії.
  • Шифрування в transit — TLS для всіх передач ключів.
  • Мінімальне утримання — ключ живе в пам'яті лише під час завантаження, потім знищується.
  • Audit log — запис про факт верифікації без деталей ключа.

Альтернатива: користувач завантажує CSV-експорт торговельної історії (більшість бірж підтримують). Менш зручно, але не вимагає передачі ключів.

Публічний proof

Верифікована історія може бути опційно публічною. Користувач вибирає що показувати: лише метрики (Sharpe, drawdown, win rate) або повну історію ордерів. Система генерує tamper-proof посилання:

def generate_public_proof_url(verification_id: str, secret: str) -> str:
    """Генерує URL з HMAC для верифікації підлинності"""
    sig = hmac.new(secret.encode(), verification_id.encode(), hashlib.sha256).hexdigest()[:16]
    return f"https://platform.com/proof/{verification_id}?sig={sig}"

По цьому посиланню будь-хто може перевірити результати трейдера, при цьому трейдер контролює що саме розкривати.

Періодичне оновлення

Верифікація не одноразова — історія оновлюється. Користувач може переверифікувати акаунт щомісяця, надаючи свіжий тимчасовий ключ або CSV-файл. Система показує "verified as of [date]" з індикацією актуальності.