Команда DataArt победила на крупнейшем блокчейн-хакатоне, недавно прошедшем на Мальте. За двое суток коллеги разработали платформу для проведения благотворительных онлайн-лотерей и завоевали приз в 25 тысяч долларов.
Рассказы победителей и ссылки на проект под катом.
Malta Blockchain Summit прошел в мальтийском городе Сент-Джулианс в начале ноябре и собрал около 8,5 тысяч человек, хотя организаторы ожидали примерно вдвое меньше участников. Вот что об MBS пишет Forbes.
Команда DataArt на вручении главного приза хакатона. Фото: MBS
Блокчейн-хакатон фактически предварял конференцию, которая открылась объявлением победителей. Лучшей стала команда DataArt, представившая платформу для проведения благотворительных лотерей.
Приложение
С платформой Blockchain Charity Lottery могут интегрироваться благотворительные организации, а сама лотерея, благодаря использованию блокчейна, оказывается абсолютно открытой и прозрачной. Все платежи производятся в криптовалюте (команда DataArt использовала Ethereum), но потенциально проект можно интегрировать с биржей.
Анатолий Рубцов, Product Design Consultancy DataArt, Санкт-Петербург: «Очень большая проблема благотворительности, по мнению многих, — отсутствие достаточного уровня доверия. Есть опасения, что пожертвованные деньги не дойдут до людей, которые в них действительно нуждаются. Блокчейн решает эту проблему. Можно посмотреть, с каких кошельков шли транзакции, кто победил, на кошелек какой благотворительной организации ушла сумма. Т. е основная фича нашей лотереи — полная открытость и прозрачность. Плюс это гейминг, который в последнее время очень тесно связан с блокчейном».
Владислав Дмитриев, Team Lead / Senior Java Developer DataArt, Киев:«Платформа позволяет благотворителям создавать собственные лотереи. В простейшем варианте, реализованном нами за два дня, некий фонд должен обратиться к администратору на нашей стороне, передать данные: описание, цену билета, срок и т. д. При дальнейшем развитии можно сделать регистрацию, передав функции администратору на стороне самого фонда».
Команда
Соревновались команды из пяти человек. Правила предполагали тимлида, архитектора, двух бэкенд и одного фронтенд-разработчика.
Игорь Кожуренко, лидер iGaming-практики DataArt, тимлид команды, Санкт-Петербург: «Можно сказать, что на хакатоне мы оказались случайно. Но как говорил один из героев мультфильма про Кунг-фу Панду: „Случайности не случайны“. Все началось с того, что CEO MLS прислал мне приглашение получить бесплатный VIP-билет. Событие планировалось крутое (получилось еще круче, чем предполагалось), и когда увидел, что на Мальте пройдет еще и хакатон, сразу подумал, что мы можем собрать команду. Все-таки, мы действительно занимаемся блокчейном уже давно и серьезно».
Вместе с Игорем в команду вошли Влад Дмитриев, выступивший в роли архитектора и помогавший с бэкендом, Максим Черников, занимавшийся непосредственно смарт-контрактом, его интеграцией с Java и DevOps, Александр Кузьменко, взявший на себя всю остальную структуру приложения, включая фронтенд, и Анатолий Рубцов, на котором были продуктовая составляющая и дизайн.
Владислав Дмитриев, Team Lead / Senior Java Developer: «С Сашей и Максом мы работаем уже достаточно давно, в последнем проекте, где я был тимлидом, работали уже все вместе. Поэтому когда Игорь (с ним мы тоже сделали уже несколько проектов) предложил собрать команду, я сразу решил позвать именно их — это одни из самых крутых разработчиков, которых я знаю».
Анатолий Рубцов, Product Design Consultancy: «Все мы в разное время засветились в проектах нашей iGaming-практики, поэтому Игорь с Владом нас и позвали. Лично не все были знакомы между собой, но нам это удалось быстро перейти из состояния рабочей группы в состояние команды, благо опыт у всех достаточно большой. Мы разграничили зоны ответственности и занялись делом. Думаю, если бы пришлось повторить в том же составе, сейчас мы бы управились за сутки».
Подготовка
С самого начала было известно, что в хакатоне будут участвовать проекты, основанные на блокчейне и связанные с геймингом (на Мальте разрешены, в том числе, и азартные игры). Команды заполняли заявки, формулируя общую идею своего приложения, но окончательный список ограничений организаторы обещали озвучить накануне старта. Поэтому тратить время на глубокий анализ и тем более домашние заготовки команда DataArt не стала.
Максим Черников, Senior Java Developer, Одесса: «Мы ехали посмотреть на саммит и саму Мальту, завести новые знакомства, в том числе, и с потенциальными клиентами, посмотреть, как работают другие. Участие в хакатоне было следующим пунктом программы, хотя мы хотели показать себя, сделать что-то красивое и классное. Но мы ждали, что соревноваться с нами будут люди, которые делают какие-то совершенно феноменальные вещи. Поэтому на результат мы изначально смотрели спокойно».
Александр Кузьменко, Senior Java Developer, Одесса: «Утром первого дня хакатона нам сказали, что мы можем делать то, что заявили в форме регистрации. Дополнительных вводных не появилось, но мы в любом случае ничего заранее не готовили».
Хакатон
На разработку проекта было дано два дня. Все команды работали в одном помещении, в процессе за ними могли наблюдать менторы и некоторые участники конференции. Коммиты делались точечно, код отправлялся в специальное окружение и был доступен на GitHub (сейчас код также можно посмотреть — здесь).
Игорь Кожуренко, Александр Кузьменко, Владислав Дмитриев, Максим Черников, Анатолий Рубцов. Intercontinental Hotel, Сент-Джулианс, Мальта. Фото: Facebook Владислава Дмитриева
Александр Кузьменко, Senior Java Developer: «В первый день мы писали код часов пять на хакатоне — нам там разрешали оставаться до одиннадцати. Ну и немного поработали ночью. Второй день писали целиком с восьми утра до одиннадцати вечера, на третий в полдень был код-фриз, и мы как раз до 12 заканчивали фиксить баги и выкатывать мелкие дополнения к функционалу».
Владислав Дмитриев, Team Lead / Senior Java Developer: «Когда ты занят кодом, тебе сложно отвлечься на общение с менторами, которых на хакатоне много. У нас все разговоры брали на себя Игорь и Толя, они показывали наши наработки тем, кто подходил с вопросами, беседовали с ними, анализировали какие-то рекомендации».
Игорь Кожуренко, лидер iGaming-практики: «Хакатон — это очень интересно, но там, конечно, не до веселья — ты просто не поднимаешь головы. Я старался следить, чтобы мы все время от времени выходили подышать, и конечно, были перерывы на завтрак, обед и ужин. Спали часов по шесть–семь, чтобы не вырубаться днем. Я держался до последнего дня, но перед презентацией все-таки начал пить Red Bull».
Сложности
Большинство решений в команде принимали коллегиально, сферы ответственности каждого участника пересекались, а с учетом сжатых сроков обсуждать свои действия приходилось постоянно. Оставаться сосредоточенными двое суток было нелегко, не обошлось и без технических проблем.
Владислав Дмитриев, Team Lead / Senior Java Developer: «В команде я формально числился архитектором, но весь бэкенд мы делали втроем. Мы очень много программировали непосредственно вместе с Максом, иногда разделяя задачи. Много проблем возникало с базовыми вещами: Ethereum, Geth, web3j, Solidity. Нам пришлось подбирать версии, которые будут корректно работать друг с другом».
Александр Кузьменко, Senior Java Developer: «В принципе, перед мной стояли вполне понятные технические задачи. Самым сложным было делать все быстро и сохранять концентрацию, несмотря на шум вокруг. За тканевой перегородкой вообще находился ресторан, где звенели вилки и что-то постоянно падало».
Максим Черников, Senior Java Developer: «Второй день оказался тяжелым: появились проблемы и со смарт-контрактом, и с тестовой сетью, которую долго настраивали. К тому же, мы поменяли подход к решению проблемы рандомайзера. Вначале мы хотели использовать Oraclize в связке с Random.org и доверять генерацию случайных чисел стороннему API, но остановились на алгоритме Provably fair. Кстати, решение этой серьезной проблемы Игорь предложил за обедом».
Игорь Кожуренко, лидер iGaming-практики: «Самым сложным было принимать правильные для проекта решения, которые при этом не удлиняли бы процесс. Технически самой сложной областью оказался рандомайзер на блокчейне — проблема, с которой, кроме меня, никто в команде дела раньше не имел. Мы решили не интегрироваться со стороннему системами, опасаясь не только багов, но и вообще специфики работы кода. А решение взять рандомайз-протокол сэкономило нам кучу времени. Мы могли застрять на этом этапе и вообще провалить всю идею, но сообразили, что делать, вовремя. А Макс — молодец — быстро разобрался, как выбранный протокол прикрутить, и вопрос решили с ходу!»
Презентация
Отдельным и очень важным этапом хакатона была презентация проектов. В команде DataArt эту часть взяли на себя Игорь Кожуренко и Анатолий Рубцов, опытные эксперты с богатым опытом публичных выступлений. Все выступление нужно было уложить в 5 минут, не считая одной–двух минут на вопросы, и удалось это далеко не всем. Многие команды, попытавшись рассказать как можно больше. Не успели полностью представить свои проекты.
Игорь Кожуренко, лидер iGaming-практики: «Последний коммит мы сделали в 12 часов, когда был объявлен код-фриз, и к счастью, все у нас действительно заработало. Сразу после этого мы пошли тренировать презентацию. Все разделили на части, посидели два часа с секундомером и были готовы выступать».
Максим Черников, Senior Java Developer: «Перед самой презентацией у меня вновь появились сомнения в победе, когда я увидел, насколько серьезно выглядят проекты конкурентов. Но в итоге оказалось, что это в основном презентации, мокапы и видео. Мы же предлагали продукт, который можно было проверить в тестовой сети. К тому же, у нас все было проработано и с технической, и с визуальной точки зрения. Как только началась презентация, стало понятно, насколько сильным получился наш проект».
Победа
С самого начала о победе и призе в команде старались не думать. Но по общему признанию, проект лотереи получился таким, что не победить или хотя бы не войти в тройку призеров было бы обидно. Главным секретом успеха оказалась задача, достаточно сложная технически, чтобы быть интересной и произвести впечатление, однако сложная ровно настолько, чтобы ее можно было убедительно решить за отведенное время.
Анатолий Рубцов, Product Design Consultancy: «Были моменты, когда мы сильно волновались. Нам даже казалось, что другие команды подглядывают через плечо и копируют нас. Но в итоге они даже не вошли в тройку. Под конец мы уже расслабились и решили — будь что будет. Когда объявляли победителей, даже не сразу сообразили, что это мы».
Александр Кузьменко, Senior Java Developer: «У нас оказался самый завершенный проект. У других команд были интересные задумки, кто-то уже прикручивал к своему проекту устройства с голосовым управлением и т. д. Труда они вложили много, но на самом деле не успели закончить, что собирались, за 48 часов».
На экскурсии по Мальте после хакатона. Фото: Facebook Владислава Дмитриева
Игорь Кожуренко, лидер iGaming-практики: «Нам удалось соединить объединить продуманное техническое решение, бизнес-идею и благотворительность. Показать, что с помощью игры можно напрямую делать добро людям, а блокчейн позволяет устранить сомнения в честности того, кто эту игру проводит».
Приз
Окончательное решение о призе организаторы приняли в последний момент. Вначале фигурировали 50 тысяч евро в криптовалюте для единственной команды, но в итоге остановились на 50 тысячах долларов обычным банковским переводом, которые поделят три команды. Команда DataArt как победитель получит половину (вторая и третья команды получат 15 и 10 тысяч долларов, соответственно).
Призовой фонд организаторы решили разделить между тремя командами-призерами. Фото: Facebook Анатолия Рубцова
Максим Черников, Senior Java Developer: «Мы с девушкой давно запланировали поездку в Германию и даже деньги на нее успели отложить, но приз позволит комфортнее себя чувствовать после возвращения. Дошираком питаться не придется!»
Александр Кузьменко, Senior Java Developer: «Тратить призовые деньги я точно не собираюсь. Планирую их отложить и прибавить к тем, которые откладываю на автомобиль».
Анатолий Рубцов, Product Design Consultancy: «Призовые деньги вполне физические, но их сначала получить надо. Я вот хочу коробку передач поменять».
Владислав Дмитриев, Team Lead / Senior Java Developer: «Свою часть выигрыша пока думаю просто положить в банковскую ячейку».
bfck
Приятно было быть участником всей этой истории, и не менее приятно засветиться с ней в статье на родном Хабре :) Всем добра!