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.

116 lines
11 KiB

10 months ago
====== KevaChat - чат в блокчейне ======
KevaChat - приватно-ориентированный, устойчивый к цензуре чат с децентрализованной базой данных в блокчейне [[ https://github.com/kevacoin-project/ | Kevacoin]].
10 months ago
Есть возможность читать содержимое других узлов по их namespace ID - своего рода модель [[wpru>Fediverse|Fediverse]].
10 months ago
10 months ago
===== Функциональность =====
==== webapp ====
10 months ago
Имеется поддержка базовых социальных функций чата - комнаты, аватарки, mentions, подписки RSS.
10 months ago
10 months ago
Обновления:
10 months ago
10 months ago
* 1.7 - поддержка мультимедиа контента в блокчейне - фото, видео и другие бинарные данные.
* 1.8 - регистрация пользователей с перманентным реестром логин/bcrypt хеш пароля в блокчейн (namespace _KEVACHAT_USERS_ текущего узла).
10 months ago
* 1.9 - настройки комиссий за публикации, создание новых комнат и регистрацию аккаунтов. Используется в основном в качестве анти-спама, также может служить в качестве монетизации узла.
10 months ago
* 1.10 - введена система внутренней экономики: зарегистрированные пользователи теперь имеют собственный счёт, баланс которого могут расходовать на публикации а также получать на него донаты.
10 months ago
* 1.11 - обновление протокола: в //значениях// убраны знаки @ для построения дерева вложенности (для идентификации используется только цитируемый txid в начале цитирующей строки)
10 months ago
* 1.12 - убрана спецификация ключей: приложение теперь не привязано к протоколу и может читать любой внешний namespace KevaCoin в формате фида
10 months ago
==== geminiapp ====
Появился экспериментальный клиент/сервер для пользователей протокола [[:gemini_protocol|Gemini]].
На данный момент, проект находится в разработке, но уже доступен онлайн для тестирования.\\
Реализованы все базовые функции веб-версии: просмотр комнат, мультимедиа (в зависимости от поддержки браузером) а также добавление новых публикаций.
===== Модель =====
10 months ago
Для публикации сообщений используется общий кошелек, который могут пополнять пользователи или администрация узла по мере его расходования на публикации.\\
В виду того, что майнинг KevaCoin осуществляется посредством алгоритма randomx, при текущем хешрейте, публикацию сообщений можно условно считать бесплатной.
10 months ago
10 months ago
На случай удорожания монеты (если это будет иметь место в перспективе), владельцы узлов могут предоставлять альтернативную модель для публикации сообщений:\\
например, выписывать за каждое сообщение в пуле уникальный адрес для оплаты отправителем, получая от каждой транзакции комиссию и монитизировать ресурс.
===== Хранение данных =====
Не смотря на то, что протокол KevaCoin предусматривает [[wpru>CRUD|CRUD]] операции, как показал опыт, такие команды как _KEVA_DELETE_ лишь скрывают сообщение в кошельке, при этом физические данные остаются в блоках перманентно.
Если по каким-то причинам узел скрывает или удаляет сообщения локально, прочитать их можно с любого внешнего узла KevaChat, эксплорера блоков или кошелька KevaCoin.
10 months ago
===== Протокол =====
KevaChat реализует стандартный протокол KevaCoin и легко читаем в исходном виде с помощью сторонних приложений.
Тем не менее, для построения цепочки сообщений и социальных функций, используются следующий подход:
10 months ago
* //namespace// - чат комнаты;
10 months ago
* //key// - главное и общее с KevaСoin требование для ключа - быть уникальным для каждой записи в namespace. Приложения KevaChat обычно поддерживают постфикс @username;
10 months ago
* //value// используется для хранения текста сообщений и поддерживает следующие макросы:
10 months ago
* txid в начале сообщения - указывает ссылку на родительский пост, используется в "ответах" (reply) - например, webapp скрывает такие ссылки и добавляет вложенность, в то время как geminiapp - добавляет цитату;
10 months ago
* namespace hash - в системе KevaCoin всегда начинается с символа N, такие вхождения заменяются кликабельной ссылкой;
* url - автоматически заменяется на кликабельную ссылку;
* #теги - на данный момент поиск по тегам не реализован, но уже используется в сообщениях.
10 months ago
Для базы пользователей зарезервирован namespace _KEVACHAT_USERS_, с парой ключ (логин) и значение (хеш пароля bcrypt).\\
10 months ago
Подлинность авторизации обеспечивается подписью узла, на котором осуществлена регистрация.
В остальном, протокол стремится минимизировать объем сохраняемых данных, а также читаемость в исходном виде.\\
10 months ago
Любая разметка обычно фильтруется клиентским приложением, в том числе с целью предотвращения XSS и запросов к внешним ресурсам.
10 months ago
10 months ago
Также не используются обертки JSON и прочие программные слои, затрудняющие чтение исходной базы данных.
10 months ago
===== Публикации =====
Публиковать сообщения можно анонимно (в блокчейне не сохраняется какой либо инфорации об авторе, кроме 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 ]]
10 months ago
===== KevaCoin =====
Для подключения кошелька KevaCoin в сети Yggdrasil, используются флаги:
* -externalip=xxx:xxx:xxx - внешний IP подключаемого узла (без квадратных скобок) если открыт соответствующий порт, посредством данного адреса узел сможет обмениваться данными с другими пирами
* -port=9338 - порт, по умолчанию 9338
* -onlynet=ipv6 - отключить IPv4, если не используется
* -bind=[xxx:xxx:xxx]:9338 - запуск на указанном интерфейсе, если указан 0200::/7 для работы узла необходим минимум один узел Yggdrasil
* -connect=[xxx:xxx:xxx]:9338 - подключение непосредственно к указанному пиру, DNS поиск других узлов в таком случае не используется
==== Пиры ====
* [201:23b4:991a:634d:8359:4521:5576:15b7]:9338
10 months ago
===== Узлы =====
* 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~~