Source: Bitchat — децентрализованный P2P-мессенджер (обзор)

← Rendered

markdown source:

---
description: Обзор проекта Bitchat — децентрализованного мессенджера с Bluetooth mesh и Nostr
tags: p2p messaging nostr bluetooth bitchat opensource
title: Bitchat — децентрализованный P2P-мессенджер (обзор)
---

Bitchat — мобильное/настольное приложение для децентрализованного обмена сообщениями, спроектированное для работы в офлайн-сетях и через глобальные Nostr‑реле при наличии интернета. Проект ориентирован на приватность: нет учётных записей, номеров телефонов и центральных серверов — только прямые подключения и распределённые реле. Статья написана с помощью gpt-5 mini.

[bitchat](https://github.com/permissionlesstech/bitchat)

## Главная идея

Приложение использует гибридную архитектуру с двумя транспортными уровнями:

- Bluetooth LE mesh для локального общения без интернета (многоступенчатая ретрансляция через соседние устройства).
- Nostr (через реле) для глобальной доставки и покрытия зон, где нет прямого Bluetooth‑соединения.

Комбинация позволяет использовать Bitchat в условиях отключённого интернета (протесты, чрезвычайные ситуации, удалённые области) и одновременно обеспечить связь с внешним миром, когда это необходимо.

## Основные возможности

- Двойная транспортная архитектура (Bluetooth mesh + Nostr) с автоматическим выбором лучшего канала.
- Каналы на основе геолокации (geohash): чат для блока, района, города и т.д.
- Многоступенчатая ретрансляция сообщений в mesh (поддержка нескольких хопов).
- Приватность: отсутствие постоянных идентификаторов, учётных записей и телефонных номеров.
- Шифрование приватных сообщений: протокол Noise для bluetooth‑сессий и NIP‑17 для Nostr.
- Поддержка IRC‑подобных команд для управления (например, `/msg`, `/who` и т. п.).
- Опции производительности: сжатие сообщений (LZ4), режимы энергосбережения и оптимизированная сеть.
- Экстренная очистка данных (Emergency Wipe) — быстрый сброс локального хранилища.

## Архитектура и канализация

Bitchat делит каналы на несколько типов:

- `mesh #bluetooth` — локальные каналы, полностью функционируют по Bluetooth, подходят для офлайн‑сред и локальных событий.
- Локационные каналы через Nostr — геохеши разных точностей: block (7 символов), neighborhood (6), city (5), province (4), region (2). Это позволяет организовать чаты, связанные с местоположением.

Такой подход даёт гибкость: локальные разговоры остаются в радиусе mesh, а при необходимости сообщения могут «провалиться» в Nostr для доставки адресату, оказавшемуся вне Bluetooth‑досягаемости.

## Маршрутизация приватных сообщений

Для приватной пересылки Bitchat применяет умную стратегию:

1. Сначала — Bluetooth (если доступен). Сообщение шифруется через Noise и отправляется напрямую или через mesh‑хопы.
2. Если Bluetooth недоступен — откат на Nostr (через публичные реле). Для приватности используется NIP‑17 ("gift‑wrapping") и работа с временными/эпhemeral ключами.
3. Если ни один транспорт недоступен — сообщение ставится в очередь и отправится автоматически при появлении соединения.

## Безопасность и ограничения

- Проект подчёркивает приватность, однако приватные сообщения не проходили формального внешнего аудита на момент заметки; поэтому не рекомендуется доверять критически важной информации до проведения аудита.
- Для mesh‑сессий Bitchat применяет Noise Protocol (предоставляет свойства E2E и forward secrecy).
- Публичные локальные чаты (основная особенность приложения) не несут тех же рисков, но всё равно следует быть внимательным с личной информацией.

## Сборка и запуск (кратко)

Репозиторий содержит инструкции для запуска из исходников на macOS / iOS и утилиту `just` для упрощения задач сборки.

- Запуск из Xcode: открыть `bitchat.xcodeproj`, подготовить локальные конфиги (например, `Configs/Local.xcconfig`), указать Team ID и обновить entitlements перед запуском на устройстве.
- Альтернатива: установить `just` (через Homebrew) и использовать прописанные рецепты (`just run`, `just clean` и т. п.) для локального тестирования.

Для подробных шагов сборки и отладки см. README в репозитории и файл WHITEPAPER.md с технической документацией.

## Локализация и развитие

Проект поддерживает локализацию — текстовые ресурсы лежат в соответствующих папках `Localization/*.lproj`. При добавлении переводов следует обновлять `Localizable.strings` и `Localizable.stringsdict`.

## Для кого это подходит

- Активисты и сообщества, которым нужна связь в офлайн‑условиях.
- Люди, желающие экспериментировать с децентрализованными P2P‑сетями и Nostr.
- Разработчики, желающие изучить гибридные транспортные архитектуры и приватные протоколы для мобильных приложений.

## Еще ссылки

- [bitchat](https://github.com/permissionlesstech/bitchat)
- [Технический обзор / Whitepaper](https://raw.githubusercontent.com/permissionlesstech/bitchat/main/WHITEPAPER.md)
- [Сайт проекта](http://bitchat.free): http://bitchat.free