Dpos.space: сайт с несколькими сервисами для VIZ и других блокчейнов. Часть 2: тех. моменты
Здравствуйте. Продолжаю описывать сервис https://dpos.space.
Ему уже наверное месяцев 6, и только сейчас был открыт код. Репозиторий - https://github.com/denis-skripnik/dpos.space
В этой части начну описывать технические моменты: используемые технологии и библиотеки, названные мной характеристиками, а также структура.
Характеристики:
- Язык программирования - PHP;
- Используемые библиотеки:
php-graphene-node-client: https://github.com/t3ran13/php-graphene-node-client и используемые ею.
parsedown: https://github.com/erusev/parsedown (Используется в backup и profiles). - Остальное - мой PHP и JS код.
- Используется Jquery и Ajax.
- Выбор блокчейна и смена его url происходит без перезагрузки страницы при клике по кнопке.
Структура
0. Общее:
- В каждой папке сервиса есть файл params.php. Он содержит заголовок сервиса, описание, некоторые специфические (и не очень) переменные.
- index.php сервисов - основа этих сервисов. В каждом содержатся разные данные.
Сервисы буду перечислять в порядке от основного к второстепенному.
1. profiles - сервис просмотра профилей.
Рассказываю только о том, что используется при выборе VIZ. Остальное - на Github.
- snippets - сниппеты методов блокчейнов. Укажу все файлы, но начну с тех, которые используются в VIZ:
Followers_accounts.php - получение из get_accounts информации о подписчике. Используется во вкладке "Подписчики с информацией о каждом".
get_account.php - инфа об аккаунте (get_accounts).
get_account_history.php - файл, получающий информацию из get_account_history.
get_account_history_chunk.php - История пользователей из get_account_history с постраничной навигацией. Это значит, что подгрузка идёт больше лимита.
get_config.php - метод get_config.
get_delegate.php - Метод get_accounts для получение информации о делегатах, за которых проголосовал пользователь.
get_dynamic_global_properties.php - соответствующий метод.
get_follow_count.php - вывод количества подписчиков. Метод get_follow_count.
Get_Followers.php - список подписчиков. Также используется во вкладке "Подписчики с информацией о каждом". - tabs - файлы вкладок dpos.space/profiles.
author_rewards.php - авторские награды. В Viz - полученные награды. - b_rewards.php - бенефициарские награды;
- delegat.php - вкладка "Делегатство": список делегатов пользователя и история установки/снятия голосов за делегатов (Как за тех, кого голосует пользователь, так и за него, если он делегат).
followers.php - подписчики с информацией о каждом.
trx.php - переводы.
userinfo.php - информация о пользователе (Основное). - index.php - основной файл. Тут идёт ссылка на файл, который задействуется, если пользователь введён, а также выводится форма, если пользователь и блокчейн не выбраны.
- params.php - параметры сервиса: заголовки, описания, переменные.
- user_view.php - форма ввода логина, вкладки с div блоками для вывода их содержимого.
Адрес сервиса: https://dpos.space/profiles
Профиль имеет url: https://dpos.space/profiles/denis-skripnik/viz - открытие профиля аккаунта denis-skripnik в Viz.
2. post: сервис публикации постов.
На Визе происходит отправка custom операции в определённом формате, чтобы пост появлялся на viz.world. В остальных блокчейнов используется операция comment.
- params.php - параметры сервиса. Помимо стандартных (Заголовки, описание, текст для футера и пр.) есть ещё подключение JS файлов в зависимости от активного блокчейна, javascript код проверки кураторского процента (Golos) и подключение редактора с sjcl (Расшифровка и шифрование ключа).
- index.php - сама Форма постинга, вывод сообщения, если не выбран блокчейн. Также там выводится подключение файла static/interface.js.
- Папка static:
simplemde.min - JS и CSS файл редактора.
sjcl.min.js - шифрование и дешифровка данных (В нашем случае ключа).
interface.js - настройки формы постинга:
Авторизация и сохранение ключа в зашифрованном виде (Если отмечена галочка), паблик-Ноды блокчейнов, загрузка файлов через imger, редактирование постов с получением их содержимого через get_content, различные параметры блокчейнов (название токена и другие), очистка формы, добавление поста: VIZ - viz.broadcast.custom, другие блокчейны - broadcast.send с отправкой comment и comment_options одной транзакцией.
Также там прописан код для добавления бенефициаров в удобном виде (Без специальных кодов): функции add, update; транслитирация тегов (Функция transform); функция , читающая загруженный *.md файл - handleFileSelectEvent.
Адрес сервиса: https://dpos.space/post
Форма постинга в VIZ: https://dpos.space/post/viz
3. calc: блокчейн-калькулятор.
Сервис определяет стоимость апа (для VIZ - сумму, которую пользователь может дать при награде).
- snippets: сниппеты методов блокчейнов (Тут их меньше):
get_config.php - API метод get_config
get_dynamic_global_properties.php - тоже. - upvotes - папка, где настраивается всё для определения стоимости апа/награды.
ajax.php - файл, обрабатывающий Ajax запрос от формы. Получает название блокчейна, СГ/sp/WHALESTAKE/SHARES, процент апа и процент батарейки/энергии. В VIZ только SHARES, название БЧ и энергию.
Стоимость определяется при помощи спец. формул, которые от блокчейна к блокчейну отличаются.
block.php - html блок определения стоимости апа. Выводится на странице сервиса. - vests-gests - файлы те же. Папка отвечает за второй блок сервиса: перевод vests/gests в СГ/sp/WHALESTAKE. В VIZ переводит VIZ в SHARES.
ajax.php принимает только число в gests/vests/VIZ. - index.php - основной файл. Выводится подключение блоков, а также производится вывод сообщения, если блокчейн не выбран. Кроме того, в этом файле находятся скрипты, принимающие параметры из форм.
- params.php - параметры сервиса. Тут ничего особого нет: просто заголовки и описания сервиса в зависимости от блокчейна, а также если их нет.
есть ещё 3 сервиса, но они в VIZ не используются
Это бекап и просмотр постов подписчиков. Поскольку к Визу они отношения не имеют, не описываю их здесь.
Сервис тегов также не описывал, т.к. транслит тегов не нужен, а их список берётся из Голоса.
Но если кратко, там index.php отвечает за перевод Русских тегов в транслит (Ввод через запятую с последующим выводом), list.php - список тегов из базы данных, ru-eng и eng-ru - транслит Рус. тегов и перевод уже транслитирированных тегов на Русский.
add_db.php - добавление в базу новых тегов, db.php - подключение к Mysql DB.
Пока всё
Буду рад пулл-реквестам и форкам сервиса.
В следующей части продолжу описание структуры: основные файлы, шаблон и главный JS файл.
С вами был незрячий пользователь, программист и делегат VIZ @denis-skripnik
Буду рад вашим голосам тут: https://viz.world/witnesses/denis-skripnik/.