KevaChat - приватно-ориентированный, устойчивый к цензуре чат с децентрализованной базой данных в блокчейне [[ https://github.com/kevacoin-project/ | Kevacoin]].
* 1.9 - настройки комиссий за публикации, создание новых комнат и регистрацию аккаунтов. Используется в основном в качестве анти-спама, также может служить в качестве монетизации узла.
* 1.10 - введена система внутренней экономики: зарегистрированные пользователи теперь имеют собственный счёт, баланс которого могут расходовать на публикации а также получать на него донаты.
* 1.11 - обновление протокола: в //значениях// убраны знаки @ для построения дерева вложенности (для идентификации используется только цитируемый txid в начале цитирующей строки)
CLI версия сервера для протокола [[:nex_protocol#nps|NPS]], на базе библиотеки многопоточных сокетов - Ratchet.
В рамках данной реализации, публикация сообщений бесплатна, в качестве защиты от спама используется ASCII каптча.\\
Есть возможность выбора любой комнаты из указанных администратором по blacklist или whitelist.
Как следует из протокола, сервер ориентирован на приём и отправку сообщений.\\
Если требуется читать ресурсы посредством командной строки, удобно подключиться к инстансу Gemini, используя например клиент [[https://github.com/makew0rld/amfora|Amfora]] и аналогично - [[https://ru.wikipedia.org/wiki/Lynx_(браузер)|Lynx]] или [[https://github.com/browsh-org/browsh|Browsh]] - для HTTP.
**Клиент**
Отправлять сообщения можно CLI утилитами %%telnet%% или %%ncat%%, последний лучше поддерживает кириллицу.\\
Для обращения к адресам Yggdrasil/IPv6 посредством %%netcat%%, возможно потребуется доустановить из репозиториев пакет %%netcat-openbsd%%.
Зависит от сервера. Например, для публикации сообщений может взыматься плата за пост или использоваться общий кошелек, который пополняют пользователи или администрация по мере его расходования на публикации.\\
В виду того, что майнинг KevaCoin осуществляется посредством алгоритма randomx, при текущем хешрейте, публикацию сообщений можно условно считать бесплатной.
На случай удорожания монеты (если это будет иметь место в перспективе), владельцы узлов могут предоставлять альтернативную модель для публикации сообщений:\\
например, выписывать за каждое сообщение в пуле уникальный адрес для оплаты отправителем, получая от каждой транзакции комиссию и монитизировать ресурс.
В прочем, целесообразно воспринимать блокчейн как общедоступную базу данных, которую всегда можно портировать на альтернативный и более актуальный для своего времени носитель.
Не смотря на то, что протокол KevaCoin предусматривает [[wpru>CRUD|CRUD]] операции, как показал опыт, такие команды как _KEVA_DELETE_ лишь скрывают сообщение в кошельке, при этом физические данные остаются в блоках перманентно.
Если по каким-то причинам узел скрывает или удаляет сообщения локально, прочитать их можно с любого внешнего узла KevaChat, эксплорера блоков или кошелька KevaCoin.
* //key// - главное и общее с KevaСoin требование для ключа - быть уникальным для каждой записи в namespace. Приложения KevaChat обычно поддерживают постфикс @username;
* txid в начале сообщения - указывает ссылку на родительский пост, используется в "ответах" (reply) - например, webapp скрывает такие ссылки и добавляет вложенность, в то время как geminiapp - добавляет цитату;
Публиковать сообщения можно анонимно (в блокчейне не сохраняется какой либо инфорации об авторе, кроме 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 ]]
Для подключения кошелька 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 поиск других узлов в таком случае не используется