Как мы делали благотворительный аукцион в двух криптовалютах и токенах -8


Благотворительный аукцион TokenStars при поддержке знаменитостей

Команда блокчейн-проекта TokenStars, созданного для краудфандинговой поддержки спортсменов в криптовалюте, запустила благотворительный блокчейн-аукцион со ставками в эфире, биткоинах и токенах ACE.

Как возникла идея аукциона? Во-первых, хотелось сделать что-то хорошее перед Новым годом. Во-вторых, блокчейн — идеальная технология для аукционов и для сферы благотворительности. Она решает проблему прозрачности — любой человек может проверить все цепочки и суммы. В TokenStars мы работаем с известными спортсменами, поэтому мы выбрали формат благотворительного аукциона с личными вещами знаменитостей.

Мартина Хингис, звезда тенниса

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

Техническая сторона



При создании платформы TokenStars мы предусмотрели модуль для проведения аукционов среди обладателей токенов. На его основе мы и разработали этот благотворительный проект. Со стороны участников все выглядит предельно просто: регистрация, ставка, оплата криптовалютой или токенами проекта. Тот, кто сделал самую большую ставку, становится победителем и получает желаемый лот, а остальные ставки возвращаются участникам. Есть также возможность пожертвовать ставку или вообще любую сумму фондам-партнерам аукциона.

Платформа, на которой работает аукцион, состоит из двух больших частей. Сейчас проект находится, с одной стороны, на стадии реализации ICO, и для этого используется специализированная CMS для ICO, работающая на Ruby on Rails. С другой стороны, команда работает над реализацией функциональности платформы — разрабатывает 12-13 модулей. Разрабатывать модули на ICO-движке было бы нелогично, поскольку все наши рубисты были заняты другими задачами. По этой причине для платформы мы взяли другое решение, PHP-фреймворк Laravel, и поверх него реализовали функционал аукционов и все остальное.

В результате на сайте проекта одновременно работают две платформы: одна имеет дело с регистрацией и дистрибуцией токенов, а другая — с голосованием и пользователями. Базы данных пользователей синхронизированы: после авторизации каждый юзер может заходить как в личный кабинет, связанный с токенами, так и в профиль, связанный с аукционами и ставками.
Ставки в эфире и токенах ACE делаются напрямую на смарт-контракт этого аукциона, а ставки в биткоинах принимаются через платежную систему CoinPayments. Ниже я объясню, почему.

Смарт-контракт — это записанное в блокчейне Ethereum децентрализованное приложение, которое работает с кошельками, принимает с них платежи и принимает решение, кому сколько денег отправить. Таким образом, смарт-контракт автоматически обеспечивает выполнение всех условий записанного в блокчейне договора. В нашем случае смарт-контракт ведет всю историю ставок и определяет победителя.

Лотар Маттеус (звезда футбола)

Подключение платежей в биткоинах



Так как смарт-контракты выполняются на платформе Ethereum, то и принимать ставки мы могли только в эфире. Нам, конечно, этого было мало — хотелось как минимум реализовать возможность делать ставки в биткоинах.

Есть разной степени успешности попытки реализации смарт-контрактов для биткоинов и даже системы, которая бы хостила смарт-контракты сразу в двух блокчейнах, но однозначного успеха пока что не добился никто. Поэтому мы нашли третью сторону (платежную систему CoinPayments), которая принимает биткоины, высылает нам на бэкенд push-уведомление, и бэкенд делает ставку в эфире от имени владельца смарт-контракта.

К сожалению, пока это не до конца прозрачный момент: пользователям эфира приходится верить, что ставка, записанная на смарт-контракт бэкендом — реальная, а не выдуманная. Но, как уже было сказано, пока нельзя сделать смарт-контракт, который работал бы в двух блокчейнах. Мы выбрали компромиссное решение.

Павел Дацюк (звезда хоккея)

Proxy к смарт-контракту и интеграция



Больше всего времени у нас занял не сам смарт-контракт, а прокси и интеграция. Ethereum — это сеть со своим языком. Для общения с ней существует клиент, с которым можно взаимодействовать через обычный HTTP-запрос, передавая нужную команду в правильном формате. Но есть также и готовые библиотеки на Go или JavaScript, которые можно использовать прямо из браузера. Поэтому мы запустили веб-сервер как сервер, работающий локально вместе с основным бэкендом, и через эту дополнительную прослойку основной бэкенд общается с эфиром.

Этот сервер имеет несколько конечных точек: HTTP-строка и HTTP-адрес, куда можно послать POS-запрос, чтобы совершить транзакцию на эфире, или послать GET-запрос, чтобы получить историю всех событий на смарт-контрактах. Таким образом, PHP-бэкенд или любой другой бэкенд, в котором нет удобных библиотек для общения с эфиром, может взаимодействовать с веб-сервером и использовать прокси для эфира как микросервер. Происходит разделение технологий: бэкендовый контракт взаимодействует со смарт-контрактом в эфире через привычные для себя HTTP-запросы, а прокси оборачивает контракт и делает то, что нужно с точки зрения вызова функций.

Валерий Карпин (звезда футбола)

Подключение фиатных платежей



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



Мы обратились с предложением сотрудничества к семи организациям, три из них сразу же отказали нам, как только услышали о криптовалютах. С PayOnline, OKPAY, Robokassa и рядом других сервисов мы продолжаем общаться, надеемся, что длительное рассмотрение заявок будет результативным. Процесс в некоторых случаях включает заполнение многостраничных анкет на 170+ вопросов.

С одной стороны, прием фиатных ставок отчасти нарушает логику блокчейна, потому что их нельзя в явном виде положить на смарт-контракт и обеспечить полную прозрачность. С другой стороны, возможность ставок в фиате позволяет привлечь более широкую аудиторию. Для многих спортивных фанатов блокчейн и криптовалюты — это темный лес, и с нуля они вряд ли смогут быстро в этом разобраться. Ставка в фиате позволила бы им принять участие в аукционе и хотя бы немного открыть для себя криптомир.

Фонды-партнеры



От появления идеи до ее реализации прошло всего три недели — за это время мы успели разработать техническое решение, сделать лендинг, связаться со звездами спорта и заручиться их согласием на участие. Аукцион стартовал с 9 лотами, среди которых были джерси от звезды НХЛ Никиты Кучерова и футболки экс-первой ракетки мира Мартины Хингис и футболиста Лотара Маттеуса.

Никита Кучеров (звезда хоккея)

Спортсмены, которые предоставили лоты для аукциона, уже поддерживают определенные благотворительные организации, и деньги от продажи каждого лота будут переданы соответствующему фонду. Например, Анастасия Мыскина поддерживает фонд помощи детям с синдромом Дауна Downside Up, а Мартина Хингис — фонд Right To Play, который занимается развитием детского спорта в беднейших странах мира.

Анастасия Мыскина (звезда тенниса)

К сожалению, мало какие фонды принимают криптовалюту в качестве пожертвований, поэтому собранные средства будут переведены в фиат по окончании аукциона (естественно, с отчетом, подтверждающим, что фонды получили адресованные им суммы).

Цели и задачи аукциона



Тема криптовалют сейчас волнует многих, а за курсом биткоина следят даже те, кто вообще не понимает, что это такое. Мы рассчитываем, что хайп вокруг криптовалют наравне с участием спортивных суперзвезд привлечет к нашему благотворительному аукциону дополнительное внимание.

А еще нам хотелось бы приблизить день, когда криптовалюты получат повсеместное использование. Хочется надеяться, что наш аукцион двинет криптовалюты в массы огромной аудитории спортивных болельщиков. Возможность получить футболку, лыжи или ракетку от любимого спортсмена будет для них стимулом немного разобраться в этой теме и купить свою первую криптовалюту.

Томми Хаас (звезда тенниса)

Что еще рассказать? Задавайте вопросы: попробую на все ответить и призвать коллег на помощь, если понадобится.




К сожалению, не доступен сервер mySQL