How to Wiki Database (change log)
http://[222:a8e4:50cd:55c:788e:b0a5:4e2f:a92c]
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
91 lines
8.6 KiB
91 lines
8.6 KiB
10 months ago
|
====== 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~~
|