Dpos.space: сайт с несколькими сервисами для VIZ и других блокчейнов. Часть 2: тех. моменты

Здравствуйте. Продолжаю описывать сервис https://dpos.space.

Ему уже наверное месяцев 6, и только сейчас был открыт код. Репозиторий - https://github.com/denis-skripnik/dpos.space

В этой части начну описывать технические моменты: используемые технологии и библиотеки, названные мной характеристиками, а также структура.

Характеристики:

  1. Язык программирования - PHP;
  2. Используемые библиотеки:
    php-graphene-node-client: https://github.com/t3ran13/php-graphene-node-client и используемые ею.
    parsedown: https://github.com/erusev/parsedown (Используется в backup и profiles).
  3. Остальное - мой PHP и JS код.
  4. Используется Jquery и Ajax.
  5. Выбор блокчейна и смена его url происходит без перезагрузки страницы при клике по кнопке.

Структура

0. Общее:

  1. В каждой папке сервиса есть файл params.php. Он содержит заголовок сервиса, описание, некоторые специфические (и не очень) переменные.
  2. 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 - параметры сервиса. Тут ничего особого нет: просто заголовки и описания сервиса в зависимости от блокчейна, а также если их нет.

https://dpos.space/calc/viz

есть ещё 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/.


0
12 наград
772.081223 Ƶ
Отобразить форму комментирования
Комментарии