14 февраля 2019 года у меня была поездка на крупнейший блокчейн-хакатон, который я когда-либо посещал - ETHDenver. Как можно догадаться по названию, он находился в Денвере, штат Колорадо. Это красивый американский город, о котором я никогда не слышал, прежде чем побывал в нем. Здесь много гор, большие широкие улицы и место под названием замок, где проходил хакатон. Утром 15 февраля этот замок был осажден программистами всех мастей, вешалками славы, признания и веселья. Несмотря на то, что в эти дни в Денвере стало неприятно холодно, открытость и теплый дух всех участников сделали эти дни жарким летом. Всегда приятно видеть старых друзей по криптовалюте и главная причина стать частью сообщества Ethereum.

Подробно изучите правила

Для того, кто не знаком с правилами, хакатон - это соревнование, в котором все люди, разделенные на команды, и каждая команда должна построить что-то крутое. Точные правила можно найти на веб-сайте https://www.ethdenver.com/judging/, но в двух словах все начинают программировать в пятницу, а в воскресенье утром каждая команда должна отправить окончательный продукт на специальную система. Обычно это devpost.com, но на этот раз это был сайт одного из спонсоров kauri.io. Типы проектов варьировались: от разных мобильных приложений, подключенных к блокчейну (так называемые dapps), до чего-то, что вообще имеет очень отдаленное отношение к блокчейну, например, службы 3D-печати. По истечении крайнего срока, когда все проекты представлены, все команды ждут, пока к ним подойдет специальная группа судей и оценит проект по разным критериям. Насколько он оригинален, насколько эффектен, насколько хорошо сделан и т. Д. В конце судейского времени подсчитываются все баллы, и лучшие команды приглашаются на сцену для выступления. Кроме того, есть много спонсоров, у которых есть свои собственные списки вознаграждений для команд, которые будут использовать продукты спонсоров в своих проектах. Например, используйте определенный API или конкретную криптовалюту.

Найдите команду с дополнительными навыками

В моей команде были Кирилл, Артем, Ник из BUTTON Wallet и я. Я встретил этих ребят на хакатоне в Сан-Франциско в сентябре прошлого года, и это был наш первый совместный хакатон. Тот факт, что я никогда раньше с ними не программировал, был серьезным недостатком, но, к счастью, ребята очень хорошо знали друг друга и работали в одной компании. У Кирилла есть бэкэнд, Telegram API и опыт разработки ботов, Ник - умные контакты, фронтенд, маркетинг, Артем - старший полный стек, AWS, Redis, я - полный стек, ReactJS (я указал только актуальные для этого хакатона навыки).

Постройте что-нибудь вместе до хакатона

Очень важно иметь команду с дополнительными навыками, чтобы вы действительно могли вместе создать что-то полезное за очень короткое время. Я усвоил это на собственном горьком опыте, когда в прошлом году в EthSanFrancisco я присоединился к трем очень умным людям, которые тоже были увлечены zkSNARK, но иметь в команде четырех математиков - не лучшая стратегия для быстрого создания чего-либо. После этой неудачи я прошел курс Udemy для ReactJs и не пожалел об этом. Это обычная проблема для людей из FAANG, которые считают себя умными, но не могут создать ничего полезного, потому что в своей работе они выполняют сложную, но очень небольшую часть реального продукта.

Проведите исследование перед хакатоном

Первое, что мы сделали по прибытии, - это составили полный список наград. Поскольку у каждой компании была отдельная страница, было очень сложно правильно оценить общую картину. Итак, я суммировал размер вознаграждений, тип компании и требования в электронной таблице Google.

Выбирайте оптимальные награды, чтобы максимизировать шансы

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

Было 120 команд супер-умных хакеров, и шанс, что мы получим главный приз, был не очень велик. Поэтому вместо того, чтобы делать ставку на главный приз хакатона, мы придумали еще один вопрос:

Какой будет оптимальный набор наград, который максимизирует наши математические ожидания при получении призов?

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

Выберите идею проекта, которую вы сможете реализовать поэтапно

Решаем сделать кошелек для телеграмм. На то было несколько причин. Первая причина заключалась в том, что у ребят уже есть большой опыт создания ботов для телеграмм, так что это было хорошее начало. У ботов простой вывод. Поскольку очень немногие проекты блокчейнов используют его, несмотря на то, что у Telegram около 200 миллионов пользователей, это делает его очень хорошей платформой для криптографии. Еще одна причина, по которой его легко расширять для добавления новых функций.

Когда мы выбрали Telegram, мы выбрали 5 номинаций: MakerDao, потому что за стейблкоинами однозначно будущее, и Dai - единственная децентрализованная стейблкоина прямо сейчас, и они были спонсорами. POA, потому что он предоставляет более дешевую версию DAI под названием xDAi. Celer, потому что он может сделать некоторые транзакции дешевле и быстрее. Shapeshift, чтобы предоставить пользователям интерфейс для обмена своей криптовалютой. И оракулы Rhombus, чтобы узнать реальные биржевые цены.

Строим больше, говори меньше

В 8 часов вечера мы начали кодировать. Кирилл программировал бэкэнд на nodejs, подключал его к телеграм-боту через API, Ник проектировал и программировал фронтенд, Артем читал спецификации для сети Celer, а я читал о системе оракула Rhombus.

Звучит хорошо, правда? Задания распределились, все были заняты заданием, которое соответствовало их навыкам, команда мечты. Ну теоретически.

Начните кодирование одновременно

Через пару часов парни внезапно (они прилетели с другого континента) заснули из-за смены часовых поясов, поэтому я пытался запустить систему Ромб в одиночку. Я устал до 3 часов ночи, но ничего не делал и тоже лег спать.

Сдам место вместе с другими участниками

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

Утром проспал и пришел в 13:00. Все остальные пришли в 7 утра, так что я был на световые годы позади всех. У нас было много проблем. Celer работал только в одной тестовой сети, которая была другой, которую поддерживал Rhombus, поэтому мы не могли соединить их вместе.

Если вы не можете спать здоровым образом - по крайней мере, ешьте здоровую пищу.

Другой проблемой была еда. Поскольку каждый участник хакатона ел фаст-фуд, мы внезапно узнали, что стресс и недосыпание могут вызвать боль в животе. Что не особенно полезно для быстрого программирования. Организации удивили и нас, имея два туалета в 5-этажном здании на 1500 человек. Так что принимать таблетки от боли в животе на хакатоне - очень хорошая идея.

Оцените среднесрочный прогресс и, при необходимости, измените курс.

Что у нас было в субботу в 15:00? У нас был рабочий бот, он мог подписывать транзакции, вызывать смену формы для обмена и… в основном все. Backend часто давал сбой, для интеграции Celer мы сделали только демонстрационный проект, который помогает нам опробовать все возможные функции, но у меня не было даже строчки кода, позволяющей использовать Celer в нашем основном проекте, я полностью испортил свои задачи для Rhombus.

Итак, мы продумали план. Что мы должны изменить, чтобы добиться прогресса? Следует ли нам изменить список функций, чтобы можно было развиваться? Стоит ли упростить проект? Стоит ли перераспределять задачи?

К счастью, Ник быстро указал на проблему с моим кодом и закончил через пару минут. То, что заняло у меня всю ночь, заняло у Ника всего 10 минут = (Это демотивировало. Но это дало мне время, чтобы я мог делать обновления QR-кода и tx в React, с чем у меня не было никаких проблем. Изначально план заключался в том, что пользователь просто сфотографирует QR-код, и он будет проанализирован на сервере. Он обнаружил, что нет хорошей библиотеки, которая могла бы анализировать изображение с бликами или тенью на нем, поэтому единственный способ решить эту проблему - дать пользователю немедленную обратную связь о QR-коде, поэтому он должен быть реализован на веб-интерфейсе.

Познакомьтесь с организаторами и спонсорами

С распределением новых задач прогресс стал двигаться намного быстрее, однако проблема с Celer так и не была решена. Итак, мы пошли к реальной команде Celer, чтобы спросить, в чем может быть проблема. Оказалось, что они понимают, что готовая к производству интеграция в настоящий момент невозможна, но концепция верна, и наша идея все еще жизнеспособна с выходом на рынок Celer, поэтому было совершенно нормально использовать ее в гораздо более упрощенном виде. То же самое и с Ромбом. Меня очень беспокоило то, что я использую их систему Oracle прямо из JavaScript, без каких-либо Dapp. Я думал, что, поскольку я не использую dapp, я не плачу комиссию, поэтому они не могут зарабатывать деньги на этом использовании. После разговора выяснилось, что мои опасения были ложными. Они были абсолютно согласны с тем, что все больше людей используют их оракул, даже если они не зарабатывают на этом напрямую. Насколько я понимаю, они имеют от этого косвенную выгоду для усыновления, но это совсем другая история. Важная часть здесь в том, что совершенно нормально разговаривать с организациями и спонсорами и разъяснять их требования. Или даже просто спросите, что они ищут? В конце концов, это мероприятие посвящено не только кодированию, но и созданию сетей, и это прекрасная возможность встретить больше людей из индустрии.

Освойте свои инструменты, чтобы быстро создавать вещи

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

Не делайте презентацию в последнюю минуту

Около 22:00 Ник начал собирать презентацию. Спустя какое-то время около полуночи ему пришла в голову отличная идея снять видео прототипа, как пользователь может оплачивать еду на улице с помощью нашего кошелька. Поскольку судьям наверняка не хватило бы времени, чтобы выйти на улицу, стоять в очереди за едой и снова ждать демонстрации, было очень хорошей идеей записать это. Проблема в том, что уже была полночь и все следы еды ушли. К счастью, до даты подачи оставалось еще 8 часов, так что мы могли сделать это за 2 часа до крайнего срока утром. Всегда полезно закончить презентацию заранее, чтобы было что улучшить. Если бы мы закрыли презентацию до крайнего срока подачи, у нас не хватило бы времени на видео.

Будьте уверены, что все судьи нашли вас

После того, как пришли все судьи и мы подсчитали количество потенциально полученных нами номинаций, что-то не сработало. У нас было 5 номинаций, но только 4 селфи с компаниями. Оказалось, что мы не нашли команду MakerDao, так что это была наша последняя минута, чтобы наконец их найти. Всегда полезно проверить, кто из судей видел ваш проект, и найти того, кто не видел. Они могут просто забыть о тебе.

После объявления результата мы узнали, что, к сожалению, мы не попали в топ-10 команд, чтобы претендовать на главный приз, но мы были рады узнать, что получили 5 из 5 заявленных баунти:

  • Celer - 1500 долларов
  • POA - 500 долларов США
  • MakerDAO - 1250 долларов
  • ShapeShift - 3000 долларов
  • Ромб - 1000 долларов

Так что, по крайней мере, мы получили наши авиабилеты и компенсацию Airbnb.

Повеселись

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

Алексей Лебедь (twitter), Кирилл Кузнецов (fb), Ник Козлов (fb), Артем Воробьев (fb)

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

Удачи на хакатонах!