Какие компетенции требуются на рынке сейчас и как устроена работа специалистов, работающих в Web3-сегменте? Разбираемся с этим в новом цикле статей и интервью «Кем стать». Герой первого материала — разработчик игр Андрей Пелипенко, с которым редакция ForkLog обсудила, чем программирование смарт-контрактов отличается от «классического» IT.
Андрей Пелипенко. Данные: личный архив героя материала.
ForkLog: Как ты попал в блокчейн-индустрию?
Андрей: Я программирую с детства, занимаюсь играми уже лет 30, участвовал в разных конкурсах, писал с друзьями собственные движки. В какой-то момент это переросло в инди-студию MadSword, в которой я был фаундером: мы выпустили более сотни игр. Но я по натуре изобретатель велосипедов и всегда ищу новые сложные направления развития, где, может быть, мало специалистов, во всем надо разбираться самому и никаких готовых решений нет. И так в 2017 году я попал в блокчейн, сделал свою первую игру Blockchain Cuties, которая оказалась довольно успешной: она долгое время висела в топах и сейчас работает на 9 блокчейнах.
ForkLog: Все более-менее представляют, что такое смарт-контракты, но как бы ты объяснил человеку с улицы, зачем они нужны?
Андрей: Если блокчейн — это платежная сеть или банк, то смарт-контракт — это такой бессмертный и неподкупный нотариус, который может обслуживать тысячи клиентов одновременно в формате 24/7. Он следит за тем, чтобы выполнялись обязательства, которые взяли на себя стороны, согласившиеся участвовать в транзакции. Важно понимать, что этот нотариус обычно ограничен только теми данными, которые есть в блокчейне.
ForkLog: Чем создание смарт-контрактов отличается от того, с чем имеют дело программисты обычно?
Андрей: Как только я начал этим заниматься, меня поразила чистота языка программирования Solidity и вообще фреймворка для разработки смарт-контрактов: никаких сайд-эффектов, проблем, связанных с конкурентностью, — никаких болей классической разработки. Нет огромного зоопарка фреймворков, не надо думать, под какую архитектуру процессоров ты пишешь или под какой браузер, если мы говорим про фронтенд. Такое академическое программирование, все чисто и лаконично, писать одно удовольствие. Solidity — достаточно простой язык, но есть с десяток тонкостей, которые нужно знать, чтобы вас не взломали.
ForkLog: Одна из особенностей смарт-контракта — его неотменяемость. Что записано в блокчейн, уже не откатишь назад. Как это осложняет жизнь разработчика?
Андрей: Это один из самых сложных аспектов. Когда ты задеплоил контракт, его уже нельзя изменить, если это не предусмотрено самим смарт-контрактом. С одной стороны, это очень хорошо для пользователей: все правила прозрачны; если ты умеешь читать код, то можешь удостовериться, что он делает именно то, что ожидается. Но для разработчика это неудобно: исправить баг или добавить новую функциональность просто так не получится. Существуют разные способы решать эту проблему. Можно создать модульную структуру: разбиваешь смарт-контракт на десяток поменьше и меняешь реализацию конкретного модуля. Можно делать прокси, когда у тебя есть интерфейсный смарт-контракт и функциональная часть, которую ты меняешь — так, например, устроен USDC. Кажется, что это неправильно, потому что нарушает принцип «код — это закон», но в этом случае люди больше доверяют бренду, чем скрипту.
ForkLog: Насколько инструменты разработки уже созрели, если сравнивать с другими областями программирования?
Андрей: Формально говоря, Solidity-компилятор находится все еще в альфа-версии, но я пользуюсь им уже шесть лет — и ничего, полет нормальный. Конечно, какого-то функционала не хватает, но критичных проблем нет.
ForkLog: Расскажи про ежедневные задачи программиста смарт-контрактов. Что обычно приходится делать?
Андрей: Раньше это были ICO, какие-то сейлы: что-то продавать и распределять между людьми. Сейчас это NFT-коллекции, значительно реже — какая-то более сложная логика, GameFi, DeFi. Если задача вычислительно сложная, то в блокчейне ее не выполняют, перекладывают на отдельные бэкенды и распределяют функционал: например, данные хранят в блокчейне, а тяжелые вычисления производят отдельно. На самом деле это самая хитрая часть — синхронизировать работу смарт-контракта и бэкенда: как смарт-контракт верифицирует входящие источники. Изначально энтузиасты децентрализации планировали, что все будет происходить на блокчейне, но быстро поняли, что это слишком дорого, поэтому произошло распределение ролей, и мы все дальше уходим от чистого Web3.
ForkLog: Может ли человек без программистского бэкграунда, например, юрист или бухгалтер, залететь в разработку смарт-контрактов?
Андрей: Думаю, без проблем. Есть много команд, которые пытаются запускать что-то на блокчейне, например NFT — с ними можно партнериться, поискать фриланс. Но я бы советовал найти ментора, который бы сказал, что можно делать, а что не стоит. Есть кейсы вроде взлома The DAO, о которых все опытные разработчики в курсе, а новички легко наступят на эти грабли. Хорошая точка входа — написание тестов для смарт-контрактов. Тут можно посмотреть, что и как работает, разобраться в нюансах.
Рабочий процесс в студии MadSword. Данные: личный архив героя материала.
ForkLog: На новичка падает огромный объем технической информации, он слышит страшные термины вроде «дерево Меркла», Solidity, Rust. Как в этом всем не заблудиться?
Андрей: Я как-то проводил лекцию для криптоэнтузиастов и инвесторов, думал, что расскажу, как писать и деплоить смарт-контракты, но в итоге более часа объяснял им, что такое газ и зачем он нужен. Начинайте с базовых вещей: как производятся транзакции, в каком порядке они обрабатываются, как в них упаковываются данные, чем занимаются майнеры и так далее. Потом азы программирования: как работают циклы, условные операторы, переменные. А после беритесь за Solidity, он покрывает большое количество сетей: Ethereum, Binance Smart Chain, Arbitrum, Optimism, Polygon и другие. Он похож на Javascript, в нем довольно легко разобраться.
ForkLog: А что по поводу математики и криптографии?
Андрей: Если ты фронтенд-разработчик и отправляешь запросы на сервер, то тебе не обязательно подробно знать, как устроен протокол TCP/IP. Так же и здесь: не нужно разбираться в тонкостях устройства алгоритмов шифрования RSA или ECC, нужно на абстрактном уровне понимать, что происходит.
ForkLog: Каким был бы хороший первый проект для начинающего разработчика смарт-контрактов?
Андрей: Лучше всего взять библиотеку Zeppelin для Solidity, там есть уже готовые шаблоны для работы с разными стандартами токенов и попробовать выпустить свой токен стандарта ERC-20 — это вообще элементарно пишется. Следующий этап — поэкспериментировать с ERC-721 и выпустить свою NFT-коллекцию.
ForkLog: А насколько вообще индустрии нужны джуны?
Андрей: Скорее всего, если работодатель готов взять человека без опыта работы со смарт-контрактами, он ожидает, что у него есть опыт разработки в других сферах — во фронте или бэке. А вообще, джуна от сеньора отличает именно знание нюансов: сам синтаксис простой и долго учить ничего не надо. Запрос на программистов смарт-контрактов, судя по зарплатам на рынке, есть: вилка от $40 до $250 в час, так что хорошие разработчики нужны и стоят дорого. Джунам я бы посоветовал идти в тестировщики в пару к опытному разработчику.
ForkLog: А ты бы взял новичка в команду?
Андрей: Сложный вопрос. Кода пишется не очень много, а ответственность большая. В индустрии много стартапов и мало больших компаний, на обучение новичков нет ресурсов, поэтому все ищут разработчиков с опытом, которые могли бы в случае необходимости закрывать дыры. Я бы отправил человека в тематические Discord-каналы поискать единомышленников и набраться практики. Но если человек готов писать тесты и показать себя, то, может быть, я бы взял его, чтобы посмотреть, соображает ли он. Вообще, в нашей студии смарт-контракты пишу я, мне это сложно делегировать. Как фаундер я знаю гейм-механики и хорошо понимаю логику продуктов, в нашем случае это критично. Мой опыт показывает, что только одному из пяти программистов на Solidity можно доверить написание смарт-контрактов.
ForkLog: Чем отличается обычный геймдев от GameFi?
Андрей: Идеологически мне импонирует крипта как идея, что ты сам управляешь своими средствами и твой банк всегда в твоем кармане. Я занимаюсь геймдевом в блокчейне, чтобы популяризировать технологию, — это во-первых. Во-вторых, игроки не зависят от крупных платформ, не платят им комиссии. Здесь свободный рынок, практически Дикий Запад: мало регуляций, и из-за этого в индустрии много скама, но зато тебя никто не ограничивает в экспериментах. Из-за открытости смарт-контрактов можно, например, взять и расширить другую игру: допустим, у тебя есть CryptoKitties, и ты с их NFT делаешь какие-нибудь гонки.
ForkLog: А что дает GameFI игрокам?
Андрей: Честные и прозрачные правила. Ты можешь прочитать смарт-контракт и убедиться, что твой шанс на выигрыш равен такому-то значению, в отличие от классических казино, в которых ты понятия не имеешь, что происходит под капотом.
ForkLog: К слову о казино. Есть распространенное мнение, что вся индустрия GameFi — это казино и ничего более. Насколько это так?
Андрей: Я бы поделил проекты на три категории. Первые — это действительно гэмблинг, где нет никаких токенов, люди приходят и играют. Мне это не очень интересно, я туда не лезу. Есть игры, построенные по принципу пирамиды: это яркие проекты, о них больше всего слышно, и они обычно схлопываются через месяца три. И третий тип проектов рассчитан на игру вдолгую, они растут годами. Но пока я не видел игр со сбалансированной экономикой. Проблема GameFi-экономики — в открытом рынке. В обычной игре новичок бы долго качался и развивался, получал бы бонусы за достижения, а в блокчейне топовые геймеры могут просто дать ему готовый стартер-пак, забустить его на, скажем, десять уровней. Если в игре можно разменивать игровое время на ресурсы, то появляются боты, они фармят ресурсы и продают их игрокам, происходит инфляция игрового токена. Придумать интересную игру со сбалансированной экономикой — челлендж на будущее.
ForkLog: А ты можешь себе представить игру на блокчейне с такой же популярностью, как у WoW или, например, Magic: The Gathering, которая, кажется, так и просится, чтобы ее блокчейнизировали?
Андрей: Блокчейн в принципе довольно сложная для входа история. Нужно завести кошелек, зайти на биржу, перевести средства, потом объяснять банку, откуда они у тебя появились. В блокчейне мало людей. То, о чем ты говоришь, — проекты гигантов. А крупные игроки не заходят на рынок из-за отсутствия регуляций: они выпустят продукт, а потом им доступно объяснят, что так делать нельзя. Марку Цукербергу и Павлу Дурову сказали, что нельзя выпускать свои криптовалюты, и они все поняли.
ForkLog: Как, на твой взгляд, будет развиваться индустрия в ближайшие годы?
Андрей: У меня есть скорее не ожидание, а желание — сделать шаг в сторону метаверсов. Не в смысле владения землей, а в смысле единой интересной платформы для разных проектов. В 2018 году компания Engine сделала единый смарт-контракт, в котором можно хранить множество валют и NFT из разных игр, и геймеры могут использовать свое игровое имущество в разных играх. Я бы хотел, чтобы развитие шло в этом направлении: грубо говоря, скрафтил меч в Minecraft, а потом закинул его себе в WoW. В такой системе две игры могли бы договориться между собой о том, какие будут правила переноса вещей, опыта и даже игровых персонажей.
ForkLog: Почему разработчикам стоит идти в GameFi и почему им стоит остаться в классическом геймдеве?
Андрей: Главный плюс GameFi — платежеспособная аудитория. В классической индустрии у тебя платит только один человек из ста. Минус — отсутствие внятных регуляций: всегда есть риск в любой момент попасть под запрет. Если у тебя целый год сто человек пилят проект, который потом идет в корзину, то ты должен хорошо подумать, нужно ли это тебе. Я говорил про высокий порог входа, добавлю к этому сложности с маркетингом: частично рекламироваться на Google разрешили только сейчас.
NFT-таракан бежит к победе. Данные: Roach Racing Club.
ForkLog: Над чем вы сейчас работаете в студии?
Андрей: Мы делаем тараканьи бега на блокчейне — Roach Racing Club. В этой игре с помощью скрещивания можно вывести своего чемпиона. У нас есть несколько оригинальных идей, например, реальной ликвидации NFT-тараканов, если они не бегают.
ForkLog: А как вообще сейчас чувствует себя GameFi на фоне затянувшейся криптозимы?
Андрей: Я бы сказал, если вы думаете что-то запустить в этом сегменте, то сейчас самое время. Готовь телегу криптозимой.