Как мы делали благотворительный аукцион в двух криптовалютах и токенах
Команда блокчейн-проекта 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-строка, куда можно послать POST-запрос, чтобы совершить транзакцию на эфире, или через GET-запрос получить историю всех событий по смарт-контракту. Таким образом, PHP-бэкенд или любой другой бэкенд, в котором нет удобных библиотек для общения с эфиром, может взаимодействовать с эфиром через прокси веб-сервер. Происходит разделение технологий: бэкенд взаимодействует со смарт-контрактом в эфире через привычные для себя HTTP-запросы, а прокси оборачивает контракт и делает в эфире все, что нужно для вызова его функций.
Подключение фиатных платежей
В дополнение к эфиру и биткоину мы планировали добавить возможность ставок в фиате, т. е. в традиционных валютах, чтобы снизить порог входа. Это оказалась, пожалуй, самым сложным моментом в реализации проекта: фиатные платежные системы очень настороженно относятся к криптопроектам.
Мы обратились с предложением сотрудничества к семи организациям, три из них сразу же отказали нам, как только услышали о криптовалютах. С PayOnline, OKPAY, Robokassa и рядом других сервисов мы продолжаем общаться, надеемся, что длительное рассмотрение заявок будет результативным. Процесс в некоторых случаях включает заполнение многостраничных анкет на 170+ вопросов.
С одной стороны, прием фиатных ставок отчасти нарушает логику блокчейна, потому что их нельзя в явном виде положить на смарт-контракт и обеспечить полную прозрачность. С другой стороны, возможность ставок в фиате позволяет привлечь более широкую аудиторию. Для многих спортивных фанатов блокчейн и криптовалюты — это темный лес, и с нуля они вряд ли смогут быстро в этом разобраться. Ставка в фиате позволила бы им принять участие в аукционе и хотя бы немного открыть для себя криптомир.
Фонды-партнеры
От появления идеи до ее реализации прошло всего три недели — за это время мы успели разработать техническое решение, сделать лендинг, связаться со звездами спорта и заручиться их согласием на участие. Аукцион стартовал с 12 лотами, среди которых были джерси от звезды НХЛ Никиты Кучерова, футболки экс-первой ракетки мира Мартины Хингис, футболиста Лотара Маттеуса и блокчейн-евангелиста Роджера Вера, лыжи от олимпийского чемпиона Тарьей Бё, сувениры музыканта Redfoo (ex-LMFAO) и пр.
Спортсмены, которые предоставили лоты для аукциона, уже поддерживают определенные благотворительные организации, и деньги от продажи каждого лота будут переданы соответствующему фонду. Например, Анастасия Мыскина поддерживает фонд помощи детям с синдромом Дауна Downside Up, а Мартина Хингис — фонд Right to Play, который занимается развитием детского спорта в беднейших странах мира.
К сожалению, мало какие фонды принимают криптовалюту в качестве пожертвований, поэтому собранные средства будут переведены в фиат по окончании аукциона (естественно, с отчетом, подтверждающим, что фонды получили адресованные им суммы).
Цели и задачи аукциона
Тема криптовалют сейчас волнует многих, а за курсом биткоина следят даже те, кто вообще не понимает, что это такое. Мы рассчитываем, что хайп вокруг криптовалют наравне с участием спортивных суперзвезд привлечет к нашему аукциону дополнительное внимание.
А еще нам хотелось бы приблизить день, когда криптовалюты получат повсеместное использование. Хочется надеяться, что наш аукцион двинет криптовалюты в массы огромной аудитории спортивных болельщиков. Возможность получить футболку, лыжи или ракетку от любимого спортсмена будет для них стимулом немного разобраться в этой теме и купить свою первую криптовалюту.