Skip to content

denis-skripnik/dpos.space

Repository files navigation

dpos.space

Сервисы для блокчейнов Steem, Golos, Viz и Hive.

Характеристики и системные требования:

  1. Язык программирования - PHP версии 7.0 и далее;
  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. Выбор блокчейна происходит на главной в меню.

Установка:

  1. Скопировать папку в корень сайта
  2. Удалить из htaccess код, касающийся https, если у вас нет его:
#Редирект на https
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule (.*) https://%{HTTP_HOST}/$1 [L,R=301]
  1. Перейти по url.

Структура

blockchains

Папка блокчейнов. В ней golos, viz, steem, minter и hive.

В папках блокчейна

  1. js - скрипты, относящиеся к сервисам для конкретного БЧ, например, где-то это может быть только скрипт библиотеки. Где-то же ещё и вспомогательные, например, jquery-ui.js и sjcl.min.js
  2. apps: приложения блокчейна. Фишка в том, что каждая папка приложения = приложение. Если соблюдена структура приложения, оно заработает.
  3. content.html - контент с описанием блокчейна.
  4. index.html - пустой файл, чтоб не выводился список файлов.
  5. config.json - Это конфиг блокчейна: заголовок, описание и название в меню.
  6. blockchain-snippet.html - файл, выводящий произвольный код под заголовком (h1) страниц. Например, в golos - это список аккаунтов и модальное окно для вставки любых данных по ajax.
apps - папки приложений

Возьмём 2 приложения: простое и сложное.

  1. Простое - referrers (топ пригласителей). Состоит из index.php, где есть лишь <?php ?>, config.json с названием, описанием и обозначением в меню; content.php - контентная часть с получением данных по http и их обработкой, ajax.php - файл, к которому обращаются по ajax, который выводит данные по конкретному пригласителю со списком логинов приглашённых (также запрос по http с последующей обработкой). Т.е. по сути, можно запустить любое приложение на базе любого бч в dpos.space.
  2. manage - управление. Состоит из js со скриптом приложения app.js (подгружается автоматом), папки pages (страницы), config.json с названием, описанием и пунктом в меню, index.php (не пустой) и content.php. В index.php прописана функция function generateAppPages($blockchain_snippet), которая включает поддержку страниц: Берётся глобально переменная $conf для получения конфигов основных, в $page записывается элемент из url под номером 2 и производится проверка наличия папки с названием из $page в pages. Если она есть, производится подгрузка конфига страницы, blockchain-snippet и контента. Возвращается массив $data. В $data вне функции производится вызов выше созданной функции. В pages есть страницы: profile - профиль, subscribes - подписки с возможностью отписаться, witness - управление делегатом, witnesses - делегаты, workers - фонд воркеров (их заявки и работа с ними), reset-keys - сброс ключей, access - доступы аккаунта, create-account - создание акка. Каждая имеет файлы content.php - контент и config.json - конфиг с названием, описанием и пунктом меню (в последнем параметре указывается просто управление, т.к. нигде не используется). Некоторые страницы также имеют файл footer.js, который подключается вручную внизу страницы.

В content.php необходимо возвратить контент, т.е. сделать return. В возврате может быть либо сам текст, либо переменная, используемая в файле, которая дополняется при формировании контента с передачей в return в конце.

Другие дериктории:

  • json - пример формы, сгенерированной custom generator.
  • flotilia - папка с устаревшим скриптром для Флотилии.
  • vendor - php библиотеки, установленные через Композер.
  • viz-manual - мануал Viz. Сайт viz.dpos.space.
  • template - шаблон сайта. В ней находится main.php с основным html кодом, css с файлами стилей, images с изображениями, js со скриптами и файл 404.php с кодом ошибки 404 (несуществующая страница).
  • gls.php - файл с возвратом количества GOLOS и GBG (просии как-то сделать - вот и остался).
  • _maintenance.enable - файл включения режима обслуживания и maintenance.html с выводом сообщения.
  • robots.txt и sitemap.xml - файлы для поисковых систем.
  • helpers.php - файл с функцией для вывода красивого дат, с настройками для более лёгкого подключения коннекторов блокчейнов.
  • content.html - текст главной страницы.
  • composer.json - файл для установки библиотек.
  • functions.php - файл функций, в котором функция создания массива элементов url, функция сканирования папки с возвратом результатов без "." и "..", inUrl2 - функция, настраивающая подключение скриптов, стилей и контента и blockchain-snippet. Также есть функция generatePage(), которая генерирует страницу. Определяет уровень в url и выводит в зависимости от этого страницу из соответствующей папки. Естественно подключаются скрипты, стили, сниппет и контент. Прописывается подключение в блокчейне скрипта blockchain.js и остальных скриптов из blockchains/name/js (name - название БЧ). Ещё одна функция - это configs. Она подгружает файл конфигов и возвращает массив. generateMenu() генерирует меню исходя из уровня url, дерикторий и значений в файлах конфигов. На главной выводит список БЧ, на страницах БЧ или страницах приложений - список приложений выбранного блокчейна. generateBreadCrumbs() - это создание хлебных крошек (путь от главной до текущей страницы). Если это внутренняя страница приложения, путь такой: главная / блокчейн / приложения / внутренняя страница приложения (без ссылки).
  • index.php - основной файл, где подключаем сессии, функцию для красивого вывода ошибок, подключаем файл функций и используем из него функции генерации страницы, меню, хлебных крошек, после чего выводим main.php из template. Если же страница не найдена, вывод ошибки и шаблона template/404.php. А да: ещё идёт обработка POST запросов так, чтоб перенаправление происходило на страницу с url, соответствующему введённым данным. Например, первое поле название БЧ, второе сервиса, третье страницы приложения. Вот так и произойдёт редирект: chain/service/page. В профиле реализован так переход к viz/profiles/denis-skripnnik (где denis-skripnik - логин).
  • config.json - основной конфиг. Название, описание сайта, адрес сайта, title и description главной.

Сервисы на момент обновления файла

Viz

  • accounts -- аккаунты (авторизация, выбор, регистрация).
  • awards - награждение, генератор url и qr-кодов, конструктор форм наград.
  • calc - калькулятор суммы награды и SHARES в VIZ;
  • custom-generator - генератор форм для отправки custom операций в БЧ.
  • exchange - интегрированный обменник от viz+ в dpos.space. Позволяет продавать и покупать VIZ за USDT.
  • explorer - эксплорер с блоками и транзакциями.
  • manage - управление: доступы аккаунта, создание акков и субакков, управление профилем, сброс ключей, делегат (активация / деактивация и изменение параметров), делегаты (голосование за них), комитет (выбор заявок и голосование за них).
  • multisig - мультисиг: создание, отправка транзакций, удаление аккаунтов из мультисига.
  • profiles - сервис просмотра профилей: файлы модальных окон делегирования и списка делегатов с историй голосования/снятия голосов, история по соц. капиталу, полученные награды, бенефициарские награды, история по ДАО (заявки в комитет, голосования / снятия голосов за делегатов и т.п.), платные подписки, история награждения, история по работе с аккаунтами и субаккаунтами, история переводов средств, страница с параметрами делегата и инфой о нём, страница с основной информацией. -projects - проекты: добавление, изменение и удаление, каталог; задачи: добавление и изменение, удаление, список; Новости: список, изменение и удаление, просмотр одной новости по проекту; ход работ по задаче: добавление, изменение и удаление, список.
  • randomblockchain - генератор случайных чисел с использованием блокчейна.
  • top - топ пользователей по различным параметрам, например, по соц. капиталу, VIZ, делегированному социальному капиталу и пр.
  • wallet - полноценный кошелёк.
  • witnesses-rewards - сервис, выводящий список делегатов и их наград. Награды выводятся за текущий и предыдущий день, за текущий и предыдущий месяц.

Golos

  • accounts -- аккаунты (авторизация, выбор).
  • backup - сервис резервного копирования постов.
  • donates - топ донатов: донатящих, получивших донаты постов и комментариев.
  • calc - калькулятор суммы апвота, суммы начислений (очень примерно) и перевод GESTS в СГ;
  • explorer - эксплорер с блоками и транзакциями.
  • manage - управление: доступы аккаунта, создание акков, управление профилем, сброс ключей, делегат (активация / деактивация и изменение параметров), делегаты (голосование за них), Фонд воркеров (выбор заявок и голосование за них), подписки (на кого подписались с возможностью отписки).
  • multisig - мультисиг: создание, отправка транзакций, удаление аккаунтов из мультисига.
  • polls - сервис проведения опросов. Используется специальный протокол в custom_json. Есть создание опросов, их список, просмотр результатов опроса и голосование по активным.
  • post - публикация постов на Голос.
  • profiles - сервис просмотра профилей: файлы модальных окон делегирования и списка делегатов с историй голосования/снятия голосов, история по СГ, история донатов, авторские награды, кураторские и бенефициарские, комментарии пользователя, история по ДАО (заявки воркеров, голосования / снятия голосов за делегатов и т.п.), лента подписок, подписчики и подписки (модальное окно), новые и получившие выплату посты, история по работе с аккаунтами, история переводов средств, страница с параметрами делегата и инфой о нём, страница с основной информацией.
  • randomblockchain - генератор случайных чисел с использованием блокчейна.
  • swap - обменник на базе внутренней бирже. Упрощённый интерфейс, мгновенное исполнение сделок.
  • top - топ пользователей по различным параметрам, например, по СГ, GOLOS, GBG, делегированной силе Голоса и пр.
  • wallet - полноценный кошелёк.
  • referrers - топ пригласивших. После клика по количеству приглашённых появляется модальное окно со списком логинов рефералов.
  • witnesses-rewards - сервис, выводящий список делегатов и их наград. Награды выводятся за текущий и предыдущий день, за текущий и предыдущий месяц.

Hive

  • accounts -- аккаунты (авторизация, выбор).
  • backup - сервис резервного копирования постов.
  • calc - калькулятор суммы апвота и перевод VESTS в HP;
  • manage - управление: профиль, делегат (активация / деактивация и настройка параметров) и список делегатов с возможностью голосования.
  • post - публикация постов на Hive.
  • profiles - сервис просмотра профилей: файлы модальных окон делегирования и списка делегатов с историй голосования/снятия голосов, история по HP, авторские награды, кураторские и бенефициарские, комментарии пользователя, история по ДАО (голосования / снятия голосов за делегатов и т.п.), лента подписок, подписчики и подписки (модальное окно), новые и получившие выплату посты, история по работе с аккаунтами, история переводов средств, страница с параметрами делегата и инфой о нём, страница с основной информацией.
  • randomblockchain - генератор случайных чисел с использованием блокчейна.
  • wallet - полноценный кошелёк.

Steem

  • accounts -- аккаунты (авторизация, выбор).
  • backup - сервис резервного копирования постов.
  • calc - калькулятор суммы апвота и перевод VESTS в SP;
  • manage - управление: профиль, делегат (активация / деактивация и настройка параметров) и список делегатов с возможностью голосования.
  • post - публикация постов в Steem.
  • profiles - сервис просмотра профилей: файлы модальных окон делегирования и списка делегатов с историй голосования/снятия голосов, история по SP, авторские награды, кураторские и бенефициарские, комментарии пользователя, история по ДАО (голосования / снятия голосов за делегатов и т.п.), лента подписок, подписчики и подписки (модальное окно), новые и получившие выплату посты, история по работе с аккаунтами, история переводов средств, страница с параметрами делегата и инфой о нём, страница с основной информацией.
  • randomblockchain - генератор случайных чисел с использованием блокчейна.
  • wallet - полноценный кошелёк.

Cyber

  • accounts - создание аккаунтов путём генерации seed фразы (локально), добавление аккаунта путём ввода имени для удобства выбора и seed фразы (фраза сохраняется локально, никуда не передаётся, зашифрована);
  • explorer - блок-эксплорер. Позволяет смотреть блоки, транзакции, просматривать основные данные по сети;
  • ipfs - загрузчик данных в IPFS сеть. Запускается локальная Нода. Есть 2 поля: для загрузки файла и для ввода текста. Первое для данных, второе для текста ссылки (СМ. сервис ниже);
  • linker - создание ссылок в Cyber: указывается IPFS хеш с данными, IPFS хеш с запросом и нажимается кнопка "создать";
  • profiles - просмотр адресов Cyber: балансы, пропускная способность, публичный ключ и номер аккаунта;
  • randomblockchain - генератор случайных чисел на базе хэшей блоков;
  • validators - список валидаторов: адреса, публичные ключи, сила голоса, преоритет претендента;
  • wallet - кошелёк: просмотр баланса с кликом для перевода всей суммы, а также сам перевод средств с указанием адреса и суммы.

Minter

  • randomblockchain - генератор случайных чисел на базе хэшей.
  • profiles - простенький просмотрщик адресов, который выводит список балансов.

Больше решил ничего не реализовывать, т.к. и просмотров кошельков, и самих кошельков дофига.


Всё.

Буду рад пулл-реквестам и форкам сервиса. Также буду рад новым приложениях для существующих блокчейнов в списке или даже добавлению новых БЧ.

Автор:

Денис Скрипник. Незрячий программист, пользователь блокчейнов Steem, Golos, Viz, Hive и Minter. Адреса аккаунтов: Steem: https://steemit.com/@denis-skripnik Hive: https://hive.blog/@denis-skripnik Golos: https://golos.io/@denis-skripnik Viz: https://viz.world/@denis-skripnik/ Minter: https://dpos.space/minter/profiles/Mxae30a08fae2cc95960c5055d1142fd676995e18b/ Cyber: https://dpos.space/cyber/profiles/cyber16yf94eecl6h44l5w7zp75skh3rg0k4vee549dh