BabyFind – telegram бот для новых знакомств. Он помогает найти парней и девушек, с которыми можно пообщаться. Наша команда разработала смарт-контракт на Ethereum для внутренней валюты сервиса.
Что сделано:
- Написан смарт-контракт на Solidity для блокчейн Ethereum.
- Реализован выпуск внутренней валюты (токенов).
- Реализован ораклайзер для взаимодействия блокчейна с ботом.
- Разработан веб-интерфейс для покупки внутренней валюты.
В этом кейсе мы описали процесс разработки.
BFT – внутренняя валюта дейтинг-бота
Идея внутренней валюты выглядит перспективно. Как бонусы в магазине или игровые монетки, BFT можно потратить на покупки внутри сервиса. Расширить функционал, включить новые услуги.
Валюта – это токены, которые выпущены на блокчейне Ethereum. За выпуск, покупку и администрирование токенов отвечает смарт-контракт.
Наглядно схема покупки токена выглядит так:
Блокчейн Ethereum и стандарт ERC-20
Блокчейн обеспечивает прозрачность. Благодаря децентрализации пользователь уверен в открытости. Купленные им токены останутся с ним. Ethereum выбрали как самую массовую платформу для смарт-контрактов.
Контракт написан на языке Solidity, более подробно об этом языке здесь.
Важно было сделать токены по стандарту ERC-20. Стандарт позволяет токену быть поддерживаемым различными кошельками и котироваться на бирже. Любой ethereum-кошелек сможет работать с BFT.
Стандарт предписывает, какие функции и переменные должны быть в контракте. Спецификация доступна по ссылке .
Процесс покупки
Для начала команда проработала сценарий покупки и использования, структуру смарт-контракта (количество токенов, курс оплаты, как использовать меньше газа и другие параметры). Все дополнительные сервисы планируется использовать за счет цепочки новых смарт-контрактов.
Пользователь в боте выбирает «Купить Pro-account». Бот присылает ссылку на веб-интерфейс для покупки валюты и ID.
Для удобства написали веб-интерфейс – html-страницу, на которой можно купить токены. Использовали библиотеку Web3.js.
Для покупки валюты пользователь вводит ID и количество ethereum, которые он хочет потратить. ID используется для идентификации пользователя в боте. Функция приема платежа в смарт-контракте принимает этот ID, и он записывается в блокчейн.
Выполняется смарт-контракт в сети Ethereum.
Токены пользователь может видеть в Ethereum-кошельке.
Если запись в блокчейне прошла успешно, ораклайзер уведомляет сервис.
Для уведомления пользователя, что транзакция прошла и Pro-account активирован, использовали так называемый ораклайзер. Это специальные контракты, которые обеспечивают взаимодействие с офчейн-сервисами.
Бот высылает уведомление, что Pro-account активирован и токены куплены.
Процесс покупки токенов тестируется в сети RinkeBy Test Net.