2024-02-10 12:53:55 +00:00

91 lines
8.6 KiB
Plaintext
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.

====== KevaChat - чат в блокчейне ======
KevaChat - приватно-ориентированный, устойчивый к цензуре чат с децентрализованной базой данных в блокчейне [[ https://github.com/kevacoin-project/ | Kevacoin]].
===== Функциональность =====
==== webapp ====
Имеется поддержка базовых социальных функций чата - комнаты, аватарки, mentions, подписки RSS.\\
В версии 1.7 добавлена поддержка мультимедиа контента в блокчейне - фото, видео и другие бинарные данные.\\
В версии 1.8 добавлена регистрация пользователей с перманентным реестром логин/bcrypt хеш пароля в блокчейн (namespace _KEVACHAT_USERS_ текущего узла).
KevaChat позволяет читать содержимое других узлов по их namespace ID - своего рода модель [[wpru>Fediverse|Fediverse]].
Также отдельные комнаты можно использовать для интеграции на сторонние ресурсы в качестве чат-окна или фида новостей проекта в режиме read-only ([[http://[201:23b4:991a:634d:8359:4521:5576:15b7]/chesslablab/|пример]])
==== geminiapp ====
Появился экспериментальный клиент/сервер для пользователей протокола [[:gemini_protocol|Gemini]].
На данный момент, проект находится в разработке, но уже доступен онлайн для тестирования.\\
Реализованы все базовые функции веб-версии: просмотр комнат, мультимедиа (в зависимости от поддержки браузером) а также добавление новых публикаций.
===== Модель =====
Для публикации сообщений, используется общий кошелек, который могут пополнять пользователи или администрация узла по мере его расходования на публикации.\\
В виду того, что майнинг Kevacoin осуществляется посредством алгоритма randomx, при текущем хешрейте, публикацию сообщений можно условно считать бесплатной.
Не смотря на то, что протокол Kevacoin предусматривает [[wpru>CRUD|CRUD]] операции, как показал опыт, такие команды как _KEVA_DELETE_ лишь скрывают сообщение в кошельке, при этом физические данные остаются в блоках перманентно.
Эту особенность удобно использовать для модерации и авторского управления контентом.\\
===== Протокол =====
KevaChat реализует стандартный протокол KevaCoin и легко читаем в исходном виде с помощью сторонних приложений.
Тем не менее, для построения цепочки сообщений и социальных функций, используются следующий подход:
* приложение читает все namespace в аккаунте, которые принято считать чат комнатами;
* данные об авторе сообщения сохраняются в значение key, в формате unixtime@username - таким образом, можно открыть например [[ http://kevachat.ygg/room/NgKBKkBAJMtzsuit85TpTpo5Xj6UQUg1wr | официальный блог KevaCoin]], но сообщения в нем прочитаны не будут, поскольку не соответствуют формату чат-приложения.
* текст сообщений сохраняется в значениях value и поддерживает следующие макросы:
* @txid в начале сообщения - указывает ссылку на родительский пост, используется в "ответах" (reply) - Web UI скрывает такие ссылки и добавляет вложенность;
* namespace hash - в системе KevaCoin всегда начинается с символа N, такие вхождения заменяются кликабельной ссылкой;
* url - автоматически заменяется на кликабельную ссылку;
* #теги - на данный момент поиск по тегам не реализован, но уже используется в сообщениях.
Для базы пользователей используется namespace _KEVACHAT_USERS_, с парой ключ (логин) и значение (хеш пароля bcrypt).\\
Подлинность авторизации обеспечивается подписью узла, на котором осуществлена регистрация.
В остальном, протокол стремится минимизировать объем сохраняемых данных, а также читаемость в исходном виде.\\
Любая разметка удаляется приложением, в том числе с целью предотвращения XSS и запросов к внешним ресурсам.
Также не используются обертки JSON и прочие программные слои для расширения возможностей базы данных KevaCoin.
===== Публикации =====
Публиковать сообщения можно анонимно (в блокчейне не сохраняется какой либо инфорации об авторе, кроме timestamp и сообщения)
или подписывать зарегистрированным парой логин/пароль - юзернеймом.
Читать сообщения можно из других узлов KevaChat, с помощью сторонних експлореров, например [[ https://github.com/kvazar-network | KVAZAR ]], [[ https://github.com/kawww/galaxy/releases | galaxy ]] и т.д. или непосредственно в [[ https://github.com/kevacoin-project/kevacoin/releases | кошельке Kevacoin]].
===== Установка =====
В веб-приложении используется фреймворк Symfony 7 / PHP 8.2.
Для работы узла требуется подключение к локальному или удаленному серверу Kevacoin и [[wpru>Memcached|Memcached]].
Установить последнюю версию можно одной командой:
<code>
composer create-project kevachat/webapp KevaChat
</code>
Затем выполнить базовую настройку среды окружения по инструкции [[ https://github.com/kevachat/webapp#setup | README.md ]]
===== Узлы =====
* http://[201:23b4:991a:634d:8359:4521:5576:15b7]/kevachat/ | %%gemini://[301:23b4:991a:634d::1965]%%
* http://kevachat.ygg | %%gemini://kevachat.ygg%%
===== Каналы =====
* NfqYRoWFZAydVyS4GjDa6o31CDSpGXVyXE - канал новостей проекта KevaChat
* NhyiMaHCcxVKNFuirFcovEyrMZuiUZmrsT - темы, связанные с Yggdrasil
* NftxqjcCXrZ6Y537sYQoNA7JzMpXtFqGRi - администрирование Linux
* NRzhB7LF4Fv5RQUtfhRtnUpTWzArSQ55R2 - канал поисковой площадки [[ yggdrasil:sites_and_services:search_services:yo | Yo! ]]
* NWVP1GPp59qEWYGVWWVxGR2JScHHbicWTy - канал внутрисетевого трекера [[ yggdrasil:bittorrent:yggtracker | YGGtracker ]]
* Nj3UDaQ89rF5W5dGUbMSgb1C84cHW2562j - новости и поддержка пользователей игрового сервера [[yggdrasil:games:chesslablab_game_server| ChesslaBlab ]]
===== Ссылки =====
Исходный код на GitHub:
* https://github.com/kevachat/webapp - веб-приложение
* https://github.com/kevachat/geminiapp - приложение для [[:gemini_protocol|Gemini Protocol]] (в разработке)
~~DISCUSSION~~