Сервисы для блокчейнов Steem, Golos, Viz и Hive.
- Язык программирования - PHP версии 7.0 и далее;
- Используемые библиотеки: php-graphene-node-client: https://github.com/t3ran13/php-graphene-node-client и используемые ею. parsedown: https://github.com/erusev/parsedown (Используется в backup и profiles).
- Остальное - мой PHP и JS код.
- Используется Jquery и Ajax.
- Выбор блокчейна происходит на главной в меню.
- Скопировать папку в корень сайта
- Удалить из htaccess код, касающийся https, если у вас нет его:
#Редирект на https
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule (.*) https://%{HTTP_HOST}/$1 [L,R=301]
- Перейти по url.
Папка блокчейнов. В ней golos, viz, steem, minter и hive.
- js - скрипты, относящиеся к сервисам для конкретного БЧ, например, где-то это может быть только скрипт библиотеки. Где-то же ещё и вспомогательные, например, jquery-ui.js и sjcl.min.js
- apps: приложения блокчейна. Фишка в том, что каждая папка приложения = приложение. Если соблюдена структура приложения, оно заработает.
- content.html - контент с описанием блокчейна.
- index.html - пустой файл, чтоб не выводился список файлов.
- config.json - Это конфиг блокчейна: заголовок, описание и название в меню.
- blockchain-snippet.html - файл, выводящий произвольный код под заголовком (h1) страниц. Например, в golos - это список аккаунтов и модальное окно для вставки любых данных по ajax.
Возьмём 2 приложения: простое и сложное.
- Простое - referrers (топ пригласителей). Состоит из index.php, где есть лишь
<?php ?>
, config.json с названием, описанием и обозначением в меню; content.php - контентная часть с получением данных по http и их обработкой, ajax.php - файл, к которому обращаются по ajax, который выводит данные по конкретному пригласителю со списком логинов приглашённых (также запрос по http с последующей обработкой). Т.е. по сути, можно запустить любое приложение на базе любого бч в dpos.space. - 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 главной.
- 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 - сервис, выводящий список делегатов и их наград. Награды выводятся за текущий и предыдущий день, за текущий и предыдущий месяц.
- accounts -- аккаунты (авторизация, выбор).
- backup - сервис резервного копирования постов.
- donates - топ донатов: донатящих, получивших донаты постов и комментариев.
- calc - калькулятор суммы апвота, суммы начислений (очень примерно) и перевод GESTS в СГ;
- explorer - эксплорер с блоками и транзакциями.
- manage - управление: доступы аккаунта, создание акков, управление профилем, сброс ключей, делегат (активация / деактивация и изменение параметров), делегаты (голосование за них), Фонд воркеров (выбор заявок и голосование за них), подписки (на кого подписались с возможностью отписки).
- multisig - мультисиг: создание, отправка транзакций, удаление аккаунтов из мультисига.
- polls - сервис проведения опросов. Используется специальный протокол в custom_json. Есть создание опросов, их список, просмотр результатов опроса и голосование по активным.
- post - публикация постов на Голос.
- profiles - сервис просмотра профилей: файлы модальных окон делегирования и списка делегатов с историй голосования/снятия голосов, история по СГ, история донатов, авторские награды, кураторские и бенефициарские, комментарии пользователя, история по ДАО (заявки воркеров, голосования / снятия голосов за делегатов и т.п.), лента подписок, подписчики и подписки (модальное окно), новые и получившие выплату посты, история по работе с аккаунтами, история переводов средств, страница с параметрами делегата и инфой о нём, страница с основной информацией.
- randomblockchain - генератор случайных чисел с использованием блокчейна.
- swap - обменник на базе внутренней бирже. Упрощённый интерфейс, мгновенное исполнение сделок.
- top - топ пользователей по различным параметрам, например, по СГ, GOLOS, GBG, делегированной силе Голоса и пр.
- wallet - полноценный кошелёк.
- referrers - топ пригласивших. После клика по количеству приглашённых появляется модальное окно со списком логинов рефералов.
- witnesses-rewards - сервис, выводящий список делегатов и их наград. Награды выводятся за текущий и предыдущий день, за текущий и предыдущий месяц.
- accounts -- аккаунты (авторизация, выбор).
- backup - сервис резервного копирования постов.
- calc - калькулятор суммы апвота и перевод VESTS в HP;
- manage - управление: профиль, делегат (активация / деактивация и настройка параметров) и список делегатов с возможностью голосования.
- post - публикация постов на Hive.
- profiles - сервис просмотра профилей: файлы модальных окон делегирования и списка делегатов с историй голосования/снятия голосов, история по HP, авторские награды, кураторские и бенефициарские, комментарии пользователя, история по ДАО (голосования / снятия голосов за делегатов и т.п.), лента подписок, подписчики и подписки (модальное окно), новые и получившие выплату посты, история по работе с аккаунтами, история переводов средств, страница с параметрами делегата и инфой о нём, страница с основной информацией.
- randomblockchain - генератор случайных чисел с использованием блокчейна.
- wallet - полноценный кошелёк.
- accounts -- аккаунты (авторизация, выбор).
- backup - сервис резервного копирования постов.
- calc - калькулятор суммы апвота и перевод VESTS в SP;
- manage - управление: профиль, делегат (активация / деактивация и настройка параметров) и список делегатов с возможностью голосования.
- post - публикация постов в Steem.
- profiles - сервис просмотра профилей: файлы модальных окон делегирования и списка делегатов с историй голосования/снятия голосов, история по SP, авторские награды, кураторские и бенефициарские, комментарии пользователя, история по ДАО (голосования / снятия голосов за делегатов и т.п.), лента подписок, подписчики и подписки (модальное окно), новые и получившие выплату посты, история по работе с аккаунтами, история переводов средств, страница с параметрами делегата и инфой о нём, страница с основной информацией.
- randomblockchain - генератор случайных чисел с использованием блокчейна.
- wallet - полноценный кошелёк.
- accounts - создание аккаунтов путём генерации seed фразы (локально), добавление аккаунта путём ввода имени для удобства выбора и seed фразы (фраза сохраняется локально, никуда не передаётся, зашифрована);
- explorer - блок-эксплорер. Позволяет смотреть блоки, транзакции, просматривать основные данные по сети;
- ipfs - загрузчик данных в IPFS сеть. Запускается локальная Нода. Есть 2 поля: для загрузки файла и для ввода текста. Первое для данных, второе для текста ссылки (СМ. сервис ниже);
- linker - создание ссылок в Cyber: указывается IPFS хеш с данными, IPFS хеш с запросом и нажимается кнопка "создать";
- profiles - просмотр адресов Cyber: балансы, пропускная способность, публичный ключ и номер аккаунта;
- randomblockchain - генератор случайных чисел на базе хэшей блоков;
- validators - список валидаторов: адреса, публичные ключи, сила голоса, преоритет претендента;
- wallet - кошелёк: просмотр баланса с кликом для перевода всей суммы, а также сам перевод средств с указанием адреса и суммы.
- 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