Техническая документация

CONTEXT Whitepaper

Децентрализованная P2P-сеть обмена сообщениями с блокчейн-экономикой

📄 Версия документа: 1.0 📅 Май 2026 🪙 Тикер токена: CTX

1. Аннотация

CONTEXT — это открытая децентрализованная P2P-сеть передачи сообщений, построенная поверх протокола libp2p с использованием криптографии Ed25519 и транспортного шифрования Noise Protocol. Система устраняет единую точку отказа традиционных мессенджеров: сообщения реплицируются между сетью независимых relay-узлов, работа которых мотивируется нативным токеном CTX.

Ключевые свойства системы:


2. Введение и мотивация

2.1 Проблема централизованных мессенджеров

Современные коммуникационные платформы (Telegram, WhatsApp, Signal) хранят метаданные и/или содержимое сообщений на серверах компании-оператора. Это создаёт системные риски:

Риск Описание
Единая точка отказа Отказ инфраструктуры делает сервис недоступным глобально
Цензура Компания или государство может заблокировать сервис или пользователей
Утечка метаданных Граф общения, IP-адреса и временные метки раскрывают значимую информацию
Vendor Lock-In Пользователи не контролируют свои данные и идентичность
Доверие третьей стороне Даже при E2E-шифровании пользователь вынужден доверять серверу

2.2 Ограничения существующих децентрализованных решений

Существующие децентрализованные решения (Matrix, Session, Briar) имеют собственные компромиссы:

2.3 Подход CONTEXT

CONTEXT использует relay-архитектуру: специализированные узлы (relay) принимают сообщения от клиентов, временно хранят их и реплицируют между собой. Relay не являются «серверами» в традиционном смысле — любой может запустить собственный узел, а экономика сети мотивирует операторов к честному поведению через механизм стейкинга и slashing.

Клиент A → Relay-1 ←→ Relay-2 ←→ Relay-3 → Клиент B
                 ↕ DHT Discovery ↕
               (Kademlia / mDNS)

3. Архитектура системы

3.1 Топология сети

Сеть CONTEXT состоит из трёх типов узлов:

Тип узла Роль Запускается
Relay Хранение, маршрутизация, репликация сообщений Операторами (получают CTX)
Client Отправка и получение сообщений Конечными пользователями
Service Боты, хранилища, медиа-конвертация (Phase 4+) Операторами сервисов

Ключевые ограничения топологии:

3.2 Многоуровневая архитектура relay-узла

┌────────────────────────────────────────────────────┐
│                    Уровень 1: Транспорт              │
│   TCP + QUIC │ AutoNAT │ Circuit Relay v2 │ Tor      │
├────────────────────────────────────────────────────┤
│                    Уровень 2: Discovery              │
│   Kademlia DHT │ mDNS (LAN) │ GossipSub │ PubSub    │
├────────────────────────────────────────────────────┤
│                    Уровень 3: Протокол               │
│   /ctx/1.2  │  Framing  │  Stream Mux  │  Noise     │
├────────────────────────────────────────────────────┤
│                  Уровень 4: Бизнес-логика            │
│  Message Handler │ Replicator │ Auth Module │ VClock │
├────────────────────────────────────────────────────┤
│                    Уровень 5: Хранение               │
│   SQLite │ Unit of Work │ Message Repo │ Tombstones  │
└────────────────────────────────────────────────────┘

3.3 Компонентная схема

[libp2p Host]
     │
     ├─ [CTX Protocol Handler /ctx/1.2]
     │        ├─ [Auth Verifier] ← Ed25519 sig check
     │        ├─ [Rate Limiter] ← Token Bucket / PeerID
     │        ├─ [Unit of Work] ← транзакционность
     │        └─ [Replicator] → другие relay
     │
     ├─ [DHT Module] ← Kademlia peer discovery
     ├─ [GossipSub] ← pub/sub топики
     ├─ [AutoNAT] ← NAT type detection
     ├─ [Health Server] ← HTTP /health /ready
     └─ [Blockchain Node] ← Phase 2
              ├─ [TxPool]
              ├─ [BFT Validator]
              ├─ [EmissionService]
              ├─ [UptimeTracker]
              └─ [ContractEngine]

3.4 Жизненный цикл сообщения

1. Клиент формирует сообщение:
   - Генерирует UUID
   - Вычисляет SHA-256(payload) → hash_sum
   - Подписывает Ed25519(privkey, message_hash)

2. SEND /ctx/1.2 → Relay-1:
   - Relay валидирует подпись
   - Проверяет hash_sum
   - Rate-limit check (Token Bucket)
   - Проверяет timestamp ± 5 мин (replay protection)

3. Relay-1 сохраняет в SQLite:
   - UnitOfWork.Begin()
   - MessageRepo.Save(msg)
   - UnitOfWork.Commit()
   - ACK → Клиент

4. Eager Push репликация:
   - Relay-1 → Relay-2, Relay-3 асинхронно
   - REPLICATE action (relay→relay)
   - Дедупликация по MessageID на принимающей стороне

5. Push-уведомление (Phase 3):
   - Relay отправляет APNS/FCM/Huawei push
   - Получатель получает уведомление офлайн

6. Получатель онлайн:
   - FETCH /ctx/1.2 → любой Relay в пуле
   - Получает сообщения since_ts
   - Расшифровывает payload локально

7. Регистрация в блокчейне (Phase 2):
   - TxTypeMessageRegistration (без payload)
   - FullMessageHash = SHA-256(всё сообщение с payload)
   - Верифицируемость без раскрытия содержимого

4. CTX-протокол v1.2

4.1 Спецификация транспорта

CTX работает поверх libp2p streams с идентификатором /ctx/1.2/{ReceiverPeerID}.

Framing: каждое сообщение предваряется 4-байтовым big-endian length prefix:

┌──────────────┬─────────────────────────────────────┐
│   4 bytes    │           N bytes                    │
│  Big-Endian  │         JSON Payload                 │
│    Length    │                                      │
└──────────────┴─────────────────────────────────────┘

5. Криптография и безопасность

5.1 Идентификация узла

Каждый relay и клиент идентифицируется через Ed25519 keypair:

Ed25519 keypair → PeerID = multihash(SHA-256(pubkey))
Multiaddr: /ip4/{IP}/tcp/{PORT}/p2p/{PeerID}

Ключевая пара генерируется при первом запуске и сохраняется в файл identity.key. Утеря ключа означает потерю идентичности.

5.2 Транспортное шифрование

Noise Protocol (XX handshake pattern) обеспечивает:

Noise встроен в libp2p как дефолтный security transport — все соединения в сети CONTEXT зашифрованы автоматически.

5.3 Целостность сообщений

Каждое сообщение содержит:

5.4 Connection Gater

Connection Gater работает на уровне TCP/QUIC-соединений:

5.5 Anti-Fraud (7 уровней) — Phase 2

При активированном блокчейн-режиме добавляется 7-уровневая система защиты от мошенничества:

Уровень Тип проверки Действие при нарушении
1 Signature verification Немедленный отказ
2 Sequence / Nonce check Отказ, предупреждение
3 Timestamp validation Отказ
4 Challenge-response Повторный запрос
5 Proof-of-Work micro Throttle
6 Attestation check Понижение репутации
7 Auto-ban Исключение из сети

6. Модели конфиденциальности

6.1 Публичный режим

В публичном режиме relay принимает и реплицирует любые сообщения без дополнительных проверок. Транспорт зашифрован (Noise), payload может быть зашифрован приложением, но relay не налагает ограничений.

Публичные каналы всегда работают в публичном режиме — их сообщения распространяются по всей сети.

6.2 Приватный режим

Приватный режим активируется на уровне relay через RELAY_PRIVATE_MODE=true. Работает на основе групповой аутентификации с тремя ключами:

Ключ Хранится Назначение
AUTH_SERVICE_PUBKEY Публично известен всей группе Ed25519 публичный ключ оператора-администратора группы
NETSIGN На каждом relay Ed25519 подпись PeerID данного relay, сделанная оператором
NETSIGN На клиенте Ed25519 подпись ClientID, сделанная оператором

Верификация принимающего relay:

Verify(AUTH_SERVICE_PUBKEY_src, ID_dst, NETSIGN_stored) = True

Верификация клиента:

Verify(AUTH_SERVICE_PUBKEY_relay, ID_client, NETSIGN_relay) = True

6.3 Правила маршрутизации приватных сообщений

Клиент отправляет IsPrivate=true → только на верифицированные приватные relay
Relay получает IsPrivate=true → реплицирует только в приватный кластер
Публичный relay получает IsPrivate=true → отклоняет при PRIVATE_MODE=true

6.4 Типы чатов

Тип IsPrivate Доступность
Public Channel false Все узлы сети
Personal Chat false Любые relay
Group Chat false Любые relay
Personal Private true Только приватные relay
Group Private true Только приватные relay

7. Блокчейн-ядро

7.1 Концепция

CONTEXT использует линейный блокчейн (не DAG, не шардинг в Phase 2) с характеристиками:

Принцип разделения хранилищ:

7.2 Структура блока

Block {
  Height:       uint64          // Монотонный номер
  Timestamp:    int64           // Unix nanoseconds
  PrevHash:     [32]byte        // SHA-256 предыдущего блока
  TxRoot:       [32]byte        // Merkle root транзакций
  StateRoot:    [32]byte        // Merkle root балансов
  ContractRoot: [32]byte        // Merkle root контрактов
  Transactions: []*Transaction  // Упорядоченный список
  ProposerAddr: Address         // Адрес валидатора-proposer
  Signatures:   []BlockSig      // BFT подписи валидаторов (≥⅔)
  Hash:         [32]byte        // SHA-256 блока (без Signatures)
}

7.3 Типы транзакций

Тип Hex Описание
TxTypeMessageRegistration 0x01 Регистрация сообщения (без payload)
TxTypeTransfer 0x02 Перевод CTX токенов
TxTypeReward 0x03 Выплата uptime-вознаграждения
TxTypeCheckpoint 0x04 Checkpoint с epoch данными
TxTypeContractDeploy 0x05 Публикация смарт-контракта
TxTypeContractCall 0x06 Открытие сессии / оплата
TxTypeContractSettle 0x07 Закрытие сессии / расчёт escrow
TxTypeBurn 0x08 Сжигание токенов

7.4 Структура транзакции

Transaction {
  Hash:      [32]byte  // SHA-256(все поля без Signature)
  Type:      uint8     // Тип транзакции
  Timestamp: int64     // Unix nanoseconds
  Sender:    [20]byte  // Адрес из Ed25519 pubkey
  Recipient: [20]byte  // Адрес получателя
  Amount:    uint64    // В наименьших единицах (1 CTX = 10^8)
  Nonce:     uint64    // Порядковый номер (anti-replay)
  Data:      []byte    // Protobuf-данные (зависит от Type)

  // TxTypeMessageRegistration:
  MessageID:       string   // UUID сообщения
  FromPeer:        string   // libp2p PeerID
  FullMessageHash: [32]byte // SHA-256(full message with payload)
  IsPrivate:       bool
  LifeTime:        int

  // Подпись:
  SenderPubKey: []byte  // Ed25519 pubkey (32 байт)
  Signature:    []byte  // Ed25519 signature (64 байт)
}

7.5 BFT-консенсус

CONTEXT использует Byzantine Fault Tolerant консенсус:

Валидаторы = топ-N relay по размеру стейка
Proposer = детерминированный выбор из валидаторов (round-robin)
Commit = ≥⅔ подписей валидаторов за блок
Устойчивость: сеть продолжает работу при ≤⅓ недобросовестных нод

Checkpoint создаётся каждые N блоков и содержит:

7.6 Регистрация сообщений в блокчейне

Каждое сообщение регистрируется в блокчейне без payload для экономии места:

TxTypeMessageRegistration:
  ✓ MessageID     → UUID сообщения
  ✓ FromPeer      → отправитель
  ✓ FullMessageHash → SHA-256(полное сообщение с payload)
  ✗ Payload       → НЕ записывается в блокчейн

FullMessageHash позволяет верифицировать целостность сообщения при репликации без хранения содержимого в публичном реестре.


9. Токеномика CTX

8.1 Параметры токена

Параметр Значение
Название Context Token
Тикер CTX
Децимали 8 (1 CTX = 100 000 000 units)
Начальное предложение 0 CTX (fair launch, нет pre-mine)
Начальная эмиссия 128 CTX / 24 часа
Halving Каждые 4 года (~1 461 эпоха)
Асимптотический предел ~373 760 CTX
Минимальная стейк-сумма 100 CTX
Модель Убывающая инфляционная + дефляционный burn

8.2 Механизм эмиссии (Uptime Rewards)

Epoch = 24 часа. Эмиссия распределяется пропорционально uptime:

reward_i = emission_per_epoch × (uptime_i / total_uptime_eligible_peers)

Условия для получения вознаграждения:

Если нет подходящих пиров за epoch — эмиссия сжигается (направляется на Burn Address).

8.3 Halving-расписание

Период Эпохи CTX / день CTX / год Накопленная эмиссия
Год 1–4 0–1 460 128 46 720 186 880
Год 5–8 1 461–2 921 64 23 360 280 320
Год 9–12 2 922–4 382 32 11 680 327 040
Год 13–16 4 383–5 843 16 5 840 350 400
Год 17–20 5 844–7 304 8 2 920 362 080
Год 21–24 7 305–8 765 4 1 460 367 920
Год 25+ 8 766+ 2 730 → 373 760 (асимптота)

После 24 лет эмиссия фиксируется на символических 2 CTX/день как поощрение за поддержание инфраструктуры.

8.4 Стейкинг

Минимальный стейк:     1000 CTX
Lock-up период:        Эпоха (24 часа)
Вывод стейка:          После завершения epoch без нарушений
Slashing (double-sign): -100% стейка (сжигается)
Slashing (downtime):    -5% стейка при даунтайме > 1 часа

8.5 Механизм сжигания (Burn)

Burn создаёт дефляционное давление и обеспечивает утилизацию нераспределённой эмиссии:

Канал Тип Размер Частота
Нераспределённая эмиссия TxTypeBurn 100% эмиссии Каждая epoch (редко)
Остаток деления (dust) TxTypeBurn < 1 CTX Каждая epoch
Комиссия контрактов TxTypeBurn 10% escrow-суммы При каждом ContractSettle
Комиссия переводов TxTypeBurn 0.001 CTX При каждом Transfer
Slashing TxTypeBurn 5% или 100% При нарушении

Burn Address — детерминированный адрес без известного приватного ключа:

BurnAddress = SHA-512("CTX-Burn-Address-v1")[:20]

Любые токены, отправленные на этот адрес, безвозвратно выводятся из обращения. Попытки потратить средства с Burn Address отклоняются на уровне валидаторов.

8.6 Экономические стимулы

Сценарий роста сети (год 1):
  Эмиссия:              +46 720 CTX
  Burn (переводы):      -500 CTX (оценка)
  Burn (контракты):     -300 CTX (оценка)
  Burn (slashing):      -200 CTX (оценка)
  Чистая инфляция:      ≈ +45 720 CTX

Сценарий зрелой сети (год 10):
  Эмиссия:              +11 680 CTX
  Burn (все каналы):    -3 000 CTX (оценка)
  Чистая инфляция:      ≈ +8 680 CTX

9. Смарт-контракты

9.1 Концепция

CTX смарт-контракты — детерминированные, не-Turing-complete конструкции для управления сервисными сессиями. В отличие от EVM-контрактов:

9.2 Типы сервисных нод

Тип Строка Единица оплаты
Бот service:bot per_request
Хранилище service:storage per_mb_day
Медиа service:media per_operation
Мост service:bridge per_transfer
Индекс service:index per_query
Кастом service:custom per_unit

9.3 Жизненный цикл сессии

Провайдер публикует ServiceContract:
  └─ TxTypeContractDeploy → blockchain
     - ServiceType, Name, PricePerUnit
     - MinDeposit, SessionTTL
     - ProviderAddr, ProviderPubKey

Пользователь открывает сессию:
  └─ TxTypeContractCall → blockchain
     - DepositTxHash (заморозка CTX в escrow)
     - UserAddr, UserPubKey
     - ContractID

Использование сервиса:
  - Пользователь взаимодействует с сервисной нодой
  - Провайдер отслеживает потребление (UnitsConsumed)

Закрытие сессии:
  └─ TxTypeContractSettle → blockchain
     - Провайдер получает: Amount - 10% burn
     - Пользователь получает: Deposit - Amount
     - BurnAddress получает: 10% от Amount

Разрешение споров:
  └─ DisputeContract (оракул или голосование валидаторов)

9.4 Реестр контрактов

Все активные сервисные контракты хранятся в Registry:


10. Защита от мошенничества

10.1 Uptime Anti-Fraud

Uptime Tracker реализует 7-уровневую проверку heartbeat-сообщений для предотвращения фальсификации времени активности:

Уровень 1: Signature     — Ed25519 подпись heartbeat
Уровень 2: Sequence      — Monotonic counter (anti-replay)
Уровень 3: Timestamp     — Delta validation (Clock Skew ≤ 30s)
Уровень 4: Challenge     — Случайный challenge-response
Уровень 5: PoW micro     — Лёгкий hashcash для Sybil-защиты
Уровень 6: Attestation   — Верификация через другие ноды
Уровень 7: Auto-ban      — Исключение нарушителей

10.2 Double-Sign Protection

Если валидатор подписывает два разных блока на одной высоте:

  1. BFT-валидаторы детектируют двойную подпись
  2. TxTypeSlash транзакция → 100% стейка сжигается
  3. PeerID включается в blocklist

10.3 Downtime Slashing

При отсутствии heartbeat более 1 часа и активном стейке:


12. Desktop-кошелёк

12.1 Технологический стек

CTX Wallet — десктопное приложение с архитектурой:

11.2 Криптографические стандарты

Функция Стандарт
Генерация мнемоники BIP-39 (2048 слов)
Деривация ключей SLIP-0010 (Ed25519)
Шифрование keystore AES-256-GCM + scrypt (N=262144)
MAC keystore HMAC-SHA256
Права файла 0400 (только для чтения владельцем)
Мнемоника (12/24 слова BIP-39)
         ↓ SLIP-0010
Ed25519 Master Key
         ↓ Derivation Path m/44'/CTX'/0'/0/0
Ed25519 Account Key → CTX Address (20 байт)

12.3 Функциональность


12. Сравнительный анализ

Критерий CONTEXT Telegram Signal Matrix Session
Децентрализация ✅ Полная ❌ Нет ❌ Нет ⚠️ Федеративная ✅ Полная
E2E-шифрование ✅ (опц.) ⚠️ Secret Chat ✅ Полное ⚠️ Опциональное ✅ Полное
Без регистрации ❌ Телефон ❌ Телефон ❌ Email/Phone
Устойчивость к блокировке ✅ Tor+DHT ⚠️ ✅ Onion
Открытый код ⚠️ Частично ⚠️ Частично
Экономические стимулы ✅ CTX
Push без сервера ✅ APNS/FCM
Работа без интернета ⚠️ mDNS (LAN)
Smart-контракты ✅ Phase 4
Центральный сервер ❌ Нет ✅ Есть ✅ Есть ⚠️ Домен ❌ Нет

13. Дорожная карта

Phase 1 — Базовая инфраструктура ✅ Завершено

Phase 2 — Безопасность и репликация ✅ Завершено

Phase 3 — Push и мобильные клиенты ✅ Завершено

Phase 4 — Блокчейн и токеномика 🔵 В разработке

Phase 5 — Экосистема ○ Запланировано


14. Технический стек

Компонент Технология Версия
Relay runtime Go 1.25+
P2P networking go-libp2p latest
Database (P1) SQLite (modernc, Pure Go)
Database (P2) Pebble (LSM-tree)
Mobile client Flutter / Dart 3.x
Desktop wallet Wails v2 + Svelte + TypeScript
Protobuf google.golang.org/protobuf
Cryptography Ed25519 (stdlib crypto/ed25519)
Transport security Noise Protocol (libp2p built-in)
Containerization Docker + Docker Compose
Key derivation SLIP-0010 (BIP-39 мнемоника)
Keystore encryption AES-256-GCM + scrypt N=262144

14.1 Ключевые архитектурные решения

Решение Обоснование
Unit of Work Транзакционная целостность при сохранении + репликации
Eager Push репликация Минимальная задержка (push при получении, не pull по запросу)
Vector Clock Причинностный порядок без центрального координатора
Линейный блокчейн Простота, предсказуемость, 1s блоки без вероятности форков
Ed25519 stdlib Нет внешних крипто-зависимостей, безопасность стандартных алгоритмов
Proof of Stake Энергоэффективный консенсус с экономическими стимулами
Escrow + Burn Честный рынок сервисов с дефляционным механизмом
Pure-Go SQLite Нет CGO-зависимостей, простая компиляция и cross-compilation
Noise Transport Стандартное для libp2p шифрование (ChaCha20-Poly1305)
Per-PeerID RateLimit Token Bucket защита от flood с конкретных пиров
ConnectionGater Блокировка на уровне TCP/QUIC до установки stream
Multi-stage Docker Минимальный production-образ без Go toolchain

15. Заключение

CONTEXT представляет собой архитектурно завершённое решение для децентрализованных коммуникаций, объединяющее несколько ключевых инноваций:

  1. Relay-архитектура устраняет единую точку отказа, сохраняя при этом практичность (Push-уведомления, офлайн-доставка)
  2. Криптографическая идентичность на основе Ed25519 дает пользователям полный суверенитет над своей личностью без зависимости от телефонных номеров или email
  3. Токеномика CTX создаёт устойчивую экономическую модель для операторов инфраструктуры через механизм uptime-rewards с halving и дефляционным burn
  4. Блокчейн-верифицируемость обеспечивает прозрачный аудит без раскрытия содержимого сообщений
  5. Многоуровневая безопасность от транспортного уровня (Noise) до прикладного (Ed25519 подписи, приватный режим) защищает от различных классов атак

Проект развивается открыто под MIT-лицензией. Участие сообщества приветствуется на всех уровнях: от запуска relay-узлов до вклада в протокол.


17. Ссылки