96 lines
5.8 KiB
HTML
96 lines
5.8 KiB
HTML
<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> |