ct-website/pages/projects/stadium.html

96 lines
5.8 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<h1>Stadium</h1>
<p>
Протокол для безопасной и децентрализованной (федерация и P2P) коммуникации общего назначения, способный работать поверх достаточно широкого спектра поддерживаемого транспорта, в том числе подразумевающего обфускацию траффика. Предоставляет возможность установки защищённого канала между двумя машинами и построения как сервер-клиентной модели, так и P2P меш-сети; поддерживает кастомизируемое шифрование, DHT, вкупе с пользовательскими расширениями, позволяющими подгонять протокол под конкретные цели и нужды.
</p>
<p>
В рамках этого проекта предполагается создание спецификации протокола, библиотеки libstadium, с его эталонной реализацией на C++, а также нескольких других библиотек с его реализацией на иных языках.
</p>
<h2>Мотивация</h2>
<p>
Большинство современных протоколов предполагают либо привязку к какому-то конкретному транспорту, либо вносят значительный оверхэд при передаче данных, либо плохо скалируются и/или ограничены в какой-то иной плоскости. Мы-же хотим сделать универсальное решение, которое будет достаточно хорошо работать в большинстве ситуаций и способно стать заменителем части мейнстримных стандартов.
</p>
<p>
Изначально перед нами стояла совершенно иная задача - сделать федеративный мессенджер (который тоже является одним из наших проектов). Но, в процессе его продумывания, мы пришли к выводу, что ни одно из существующих решений не удовлетворяет нашим требованиям. Нам было необходимо решение свободное от привязки к какому-то конкретному виду транспорта (особенно если этот транспорт высокоуровневый) и при этом позволяющее осуществлять взаимодействие между узлами в условиях низкой пропускной способности канала связи.
</p>
<p>
В результате, мы остановились на варианте создания собственного протокола, максимально удовлетворяющего нашим требованиям и не только.
</p>
<h2>Стек</h2>
<p>
Работа над основной версией библиотеки ведётся на <b>C++</b>. Также мы заинтересованы в создании имплементаций на языках <b>C99</b>, <b>C# (Mono)</b>, <b>Java</b>, биндингов для <b>Go</b>, <b>Python</b>, <b>Nim</b>, <b>Lua</b> и <b>Zig</b>.
</p>
<h2>Дедлайны</h2>
<p>
<b>Спецификация первой версии:</b> Январь 2024<br>
<b>Библиотека libstadium версии 1.0:</b> Март 2024
</p>
<h2>Роадмап</h2>
<p class="small"><i>Эта часть будет обновляться по мере продвижения и изменений планов.</i></p>
<p>
<ul>
<li>Спецификация
<ul>
<li>Транспорт
<ul>
<li>Шум</li>
<li>Адресация</li>
</ul>
</li>
<li>Хэндшейк</li>
<li>События
<ul>
<li>Структура</li>
<li>Зарезервированные типы событий</li>
<!-- TODO: описать категории событий -->
</ul>
</li>
<li>Объекты
<ul>
<li>Идентификаторы объектов</li>
</ul>
</li>
<li>Формат LBM
<ul>
<li>Структура</li>
<li>Зарезервированные ключи ячеек</li>
</ul>
</li>
<li>Типы данных</li>
<li>Сессии
<ul>
<li>Идентификатор сессии</li>
<li>Шифрованное соединение</li>
</ul>
</li>
<li>Расширения</li> <!-- TODO: описать расширения -->
</ul>
</li>
<li>Эталонная библиотека на C++ libstadium
<ul>
<li>Разные виды транспорта
<ul>
<li>UDP</li>
<li>TCP</li>
<!-- TODO: ещё транспорт -->
</ul>
</li>
</ul>
</li>
<li>Реализации библиотеки на прочих ЯПах
<ul>
<li>C99: libstadiumc</li>
<li>Go: libstadium-go</li>
<!-- TODO: ещё либы -->
</ul>
</li>
</ul>
</p>
<h2>Ссылки</h2>
<p>
<b>Репозитории:</b> <a href="https://git.projectsegfau.lt/Cyclone-Team/stadium-proto">спецификация</a> (<a href="http://git.pjsfkvpxlinjamtawaksbnnaqs2fc2mtvmozrzckxh7f3kis6yea25ad.onion/Cyclone-Team/stadium-proto">Tor</a>), <a href="https://git.projectsegfau.lt/Cyclone-Team/libstadium">libstadium</a> (<a href="http://git.pjsfkvpxlinjamtawaksbnnaqs2fc2mtvmozrzckxh7f3kis6yea25ad.onion/Cyclone-Team/libstadium">Tor</a>)
</p>