Разработка системы верифицированной торговой истории

Проектируем и разрабатываем блокчейн-решения полного цикла: от архитектуры смарт-контрактов до запуска DeFi-протоколов, NFT-маркетплейсов и криптобирж. Аудит безопасности, токеномика, интеграция с существующей инфраструктурой.
Показано 1 из 1 услугВсе 1306 услуг
Разработка системы верифицированной торговой истории
Средняя
~3-5 рабочих дней
Часто задаваемые вопросы
Направления блокчейн-разработки
Этапы блокчейн-разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1221
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1163
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    855
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1062
  • image_logo-advance_0.png
    Разработка логотипа компании B2B Advance
    561
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    828

Разработка системы верифицированной торговой истории

Верифицированная торговая история решает проблему доверия: любой может заявить о высокой доходности, но только верифицированная история подтверждает результаты реальными биржевыми данными. Это фундамент для лидербордов, социального трейдинга и маркетплейсов стратегий.

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

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 download всей истории"""
        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 для всех передач ключей.
  • Minimal retention — ключ живёт в памяти только время загрузки, затем уничтожается.
  • 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]" с индикацией актуальности.