Как я участвовал в своем первом хакатоне с тремя незнакомцами по всему миру и выиграл приз

В октябре 2022 года я записался на свой первый хакатон — в одиночку. Возможно, это было из чистого любопытства, но это привело к одному из самых плодотворных опытов в моем путешествии как программиста. Это мой опыт участия в хакатоне Chainlink Fall 2022.

Ищу команду

Записавшись на хакатон Chainlink, я столкнулся с большой инерцией. Я не знал, с кем присоединиться к хакатону, и мне пришлось выйти из зоны комфорта, чтобы найти команду. Я напечатал свой личный стек технологий программирования на блокчейне и отправил его на дискорд-канал Chainlink. К моему удивлению, люди потянулись, и довольно скоро я нашел команду, с которой присоединился к хакатону.

Концептуализация

Что создать: проект, который должен использовать Chainlink в той или иной форме для изменения состояния блокчейна, иначе он не будет иметь права на получение основных призов Chainlink. Это означает, что внешний интерфейс, просто читающий каналы данных Chainlink, не считается. Требуется использование одного из потоков данных Chainlink, Chainlink VRF, Chainlink Automation или вызовов API Chainlink внутри ваших смарт-контрактов.

У нас был один месяц на создание децентрализованного приложения, использующего услуги сети Oracle Chainlink. У Камила, лидера команды, уже была в голове потрясающая концепция. Услышав его предложение, мы поняли, что именно эту идею следует использовать для хакатона. Будучи командой, состоящей из людей из разных уголков земного шара — Сингапура, Малайзии, Польши и Бразилии — разница во времени буквально составляет день и ночь. В конце концов, мы договорились о времени организации наших регулярных дискорд-встреч для обсуждения проекта.

Наша идея

Ликвидность играет жизненно важную роль в децентрализованных биржах (DEX). Низкая ликвидность приводит к волатильности цен на криптовалюту и подвергает биржи риску манипулирования рынком. Несмотря на очевидные преимущества доходного фермерства, DEX все еще могут бороться за привлечение поставщиков ликвидности на свои биржи. Обычно DEX конкурируют за ликвидность, предлагая высокие годовые процентные ставки (APR) с высокоинфляционными токенами. Однако это скрывает эффективную годовую процентную ставку этих токенов. Это главный источник вдохновения для нашего проекта — Liquidity Wars. Liquidity Wars устраняет разрыв между поставщиками ликвидности и DEX, включая игры в сцену ставок.

Войны за ликвидность

Liquidity Wars — это децентрализованный протокол, который решает проблему нехватки ликвидности в DeFi.

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

Как мы это сделали

  1. Смарт-контракты. Смарт-контракты, лежащие в основе нашего протокола, написаны на Solidity с помощью фреймворка Hardhat, контрактов Openzeppelin и библиотек Chainlink.
  2. Сервисы Chainlink: Сервисы Chainlink играют решающую роль в смарт-контрактах. Chainlink VRF позволяет протоколу внедрить поддающуюся проверке случайность в боевую систему игры. Chainlink Automation используется для автоматизации начала и окончания игры. Он также автоматизирует передачу жетонов LP обратно игрокам и выдачу жетонов вознаграждения по окончании игры. Ценовые потоки Chainlink используются для расчета цены токенов LP в реальной валюте.
  3. Polygon: Полигон был нашим выбором блокчейна для развертывания смарт-контрактов. Это связано с тем, что это протокол уровня 2, построенный на Ethereum, который предлагает более низкую плату за газ и более высокую скорость транзакций. Это позволяет нашей игре работать бесперебойно, поскольку игроки могут взаимодействовать с нашими контрактными функциями с низкими суммами платы за газ и короткой продолжительностью подтверждения блока.
  4. Quicknode: Quicknode использовался в качестве поставщика узла RPC для тестов смарт-контрактов из-за высокой надежности, которую он предлагает. Он также совместим как с основной сетью Polygon, так и с тестовой сетью для развертывания. Кроме того, в нашем предварительно созданном игровом интерфейсе Quicknode использовался для запроса событий смарт-контракта.
  5. Предварительно созданный игровой интерфейс. Наш пример внешнего интерфейса был в основном создан с использованием NextJS, Moralis и EthersJS.

Результаты хакатона

После изнурительного месяца работы над проектом я был рад, что мы смогли закончить проект и сдать его раньше срока. И наша заявка была удостоена награды «Проекты высшего качества Chainlink»! Я ничего не ожидал от результатов, поэтому я был вне себя от восторга, узнав, что наш проект был награжден призом. Тем не менее, ни одна награда не может превзойти единственный опыт участия в этом хакатоне.

Выводы

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

Заключение

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

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