viz-awards-gates
NPM пакет для приложений, награждающих пользователей различных сервисов/
Установка:
- В папке вашего node.js приложения выполните команду: npm install viz-awards-gates
- После завершения инсталляции перейдите в node_modules/viz-awards-gates и измените файл config.json: укажите в нём название сервиса (по умолчанию youtube; можно использовать домен сайта, например, myforum.ru), а также логин и активный ключ аккаунта шлюза.
- Сохранив файл, подключите в коде своего приложения. Пример:
const vag = require('viz-awards-gates');
async function noReturn() {
await vag.getAwards();
}
noReturn();
async function getViz(user, viz_acc, amount) {
if (user === true) { // проверяем, что в приложении авторизовался именно тот пользователь сервиса, кого награждали.
await wag.addVizAccount(user, viz_acc); // добавляем в базу данных VIZ- аккаунт к существующему пользователю.
await vag.withdraw(user, amount, 'to_balance'); // выводим ему токены в баланс Viz (to_shares переведёт в долю).
}
}
Учитывайте, что проверка авторизации пользователя указанного вами сервиса должна осуществляться на стороне вашего приложения. Данный функционал не был добавлен в пакет, т.к. идентификация отличается от сервиса к сервису. 4. Дайте инструкцию пользователю шлюза или внедрите награду в интерфейс. Memo имеет вид: "сервис:логин" (без кавычек), например, youtube:scadens или myforum.ru:login@mail.ru
Функционал:
- Получение из блокчейна наград, адресованных аккаунту шлюза, и их фильтрация по memo (проверка, что заметка соответствует вашему сервису).
- Прибавление или создание баланса в базе данных. Под прибавлением баланса понимается увеличение суммы в базе данных для конкретного логина. Под созданием баланса понимается добавление нового логина в БД. Под логином понимается информация, которая позволяет идентифицировать пользователя: id, email, логин, первый ключ и пр.
- Добавление VIZ-аккаунта.
- Вывод – специальная функция (см. пример подключения в разделе установки), которая отправляет накопленный баланс с аккаунта шлюза на аккаунт пользователя в VIZ. При этом можно вывести как всю сумму, так и её часть. Кроме того, ваше приложение может автоматически выводить всю сумму раз в определённое время, получив баланс пользователя и указав его при выводе.
- Существует две базы данных: с последним блоком и со списком пользователей сервиса (в ней указываются логины и их балансы). При желании с ними можно работать.
- Возможность регистрировать аккаунт. При регистрации весь баланс пользователя вашего шлюза идёт в SHARES.
- Шлюз сам себя награждает каждые 7,5 минут на 0,1% энергии для обеспечения SHARES.
Функции в index.js:
Экспортированы getAwards, addVizAccount, withdraw и search.
- getAwards - не требует аргументов.
- addVizAccount(user, viz_login) - функция добавления VIZ-аккаунта в базу данных пользователей. Принимает аргументы: логин в БД, логин в VIZ. Возвращает json, содержащий либо 1 (всё в порядке), либо 0 (аккаунта нет в базе), либо -1 (ошибка). Если значение 1, отправляется message с текстом сообщения об успехе. Если значение 0 или -1, отправляется error с текстом сообщения о несуществующем пользователе (0) или текстом ошибки (-1).
- withdraw: логин в сервисе (который содержится в базе данных), сумма в SHARES без указания "SHARES" и mode: to_balance - в ликвид, to_shares - в долю. Пример: ag.withdraw('scadens', 3.168929, 'to_shares'). Сумма SHARES не должна быть больше имеющейся у пользователя в базе данных. Указанный логин в VIZ должен быть в БД. Возвращает json. Он состоит из code (1, если успех; 0, если аккаунта нет в базе данных; -1, если иная ошибка).
- withdrawShares (не требует вызова в приложении, без аргументов).
- search (поиск пользователя в базе). Единственный аргумент - логин пользователя. Пример: await vag.search('scadens');
- userRegistration - функция, которая позволяет регистрировать аккаунт Viz. Параметры: user, viz_login. user - логин/id/что-то ещё пользователя приложения, с которым коннектится шлюз; viz_login - Желаемый логин Viz. Возвратит приватный ключ или или объект с кодом ошибки и текстом (0 - пользователя приложения такого нет, -1 - ошибка прочие ошибки.
- awardMe (не требует вызова в приложении, вызывается каждые 450000 миллисекунд). Награждает аккаунт шлюза самого себя.
Что не делает viz-awards-gates, а реализует приложение, использующее npm пакет:
- Отправляет уведомление о награждении. Первоначально планировал добавить эту возможность в пакет, но потом понял, что это ни к чему, т.к. в каждом приложении будет свой текст.
- Само определяет подлинность авторизовавшегося пользователя: через oAuth, путём отправки custom_json или memo (блокчейны) или иным способом.
Проведены тесты:
Всё ок.
Контакты:
Автор - Денис Скрипник. Telegram: https://t.me/skripnikdenis Viz аккаунт: https://viz.world/@denis-skripnik/