Кто такой блокчейн-разработчик и как им стать
Чем занимается блокчейн-разработчик, какие навыки от него требуются и какое будущее у криптовалют. Продолжение интервью с Давидом Григоряном.
Иллюстрация: Colowgee для Skillbox Media
Давид Григорян
CTO и сооснователь французской компании Dfns, инвестор и советник в банках. Восемь лет опыта разработки в финтехе, среди прочего в Deutsche Bank.
Работал в Сан-Франциско, Стокгольме, Лондоне, Франкфурте, Куала-Лумпуре, а сейчас — в Париже. За свою жизнь основал четыре компании, одну из которых продал Ubisoft.
Чем занимаются блокчейн-разработчики
— Давид, чем занимаются блокчейн-разработчики и какие направления есть в этой сфере?
— Самое базовое направление — разработка новых блокчейнов, которые выходят ежемесячно или хотя бы ежеквартально. Кроме того, уже существующие нужно оптимизировать, делать новые протоколы — например, для биткоина недавно анонсировали протокол Lightning, ускоряющий маленькие транзакции в Ethereum.
То есть разработчики создают децентрализованные сети — обычно на С, С++, Go или Rust. Это относительно низкоуровневые языки, поэтому там участвует много людей с опытом работы над обычными email-серверами или телекомом.
Ещё одно направление — умные контракты, smart contracts. Чтобы этим заниматься, нужно понимать, как работает блокчейн, и разбираться в финансах: у человечества тысячелетний опыт работы с облигациями, акциями и различными инструментами, и сейчас мы их перепридумываем на блокчейне.
— Ты сказал, что каждый месяц выходит новый блокчейн. Что там ещё можно изобретать и в чём между ними разница?
— Бывает всякое. Например, Билли Маркус из IBM и Джексон Палмер придумали Dogecoin просто по приколу, но люди не поняли шутки и решили вложиться серьёзно.
Опять же — ты, наверное, слышал о форках, когда один блокчейн разветвляется на несколько. Это случается, если нет консенсуса и какая-то группа майнеров говорит: «Мы с вами не согласны, поэтому уходим».
Есть так называемое confirmation time — время подтверждения: я отправил тебе деньги, но мы ждем ещё десять блоков, чтобы никто никуда не ушёл. После подтверждения мы знаем, что у тебя точно есть деньги, не было форка.
Надо понимать, что децентрализованные системы — это колоссальная бюрократия. Они даже медленнее государств. Чтобы их создать, нужно согласие огромного количества людей, у которых совершенно разные интересы. Иногда люди устают ждать и спорить, поэтому говорят: «Fuck it. Я сделаю собственный коин, с блэкджеком и куртизанками».
Так что большинство блокчейнов созданы на базе других, с добавленными или, наоборот, устранёнными фичами. Часто они появляются по принципу «я тоже хочу». Так родился, например, PolkaDot.
Stellar сделали, потому что у создателей есть концепт Oracles — внешнего финансового института, который может публиковать свои продукты на блокчейне. То есть ты можешь поставить его в custody и сказать: «У меня есть 10 тысяч акций Amazon и Apple, я хочу легко их вам пихнуть». Причём Stellar очень быстрый: мы делали свой совместимый со Stellar форк, выкинули всё лишнее и добились скорости в районе полутора миллионов транзакций в секунду.
Ещё сейчас в большой моде ESG, потому что многие начали думать об экономии электричества. В последнее время появляется много идей в этой сфере.
Думаю, большинство из этих блокчейнов умрёт, но я не удивлюсь, если через десять лет у нас будет 50 разных блокчейнов.
Как разрабатывают блокчейны
— Кто имеет право контрибьютить в биткоин? Как принимаются окончательные решения об изменении технологии?
— Когда ты подсоединяешься к блокчейну, это означает, что у тебя есть какое-то приложение, которое умеет делать три вещи: майнить валюту, совершать и валидировать транзакции. Допустим, ты придумал новую идею и закоммитил код. Кому-то твоя идея понравилась, и он откомпилировал майнер-версию 1.1. Но тебе нужно, чтобы остальные майнеры согласились работать именно с твоей версией. То есть коммитить код недостаточно: требуется консенсус в остальных приложениях, чтобы все сказали: «да, мы хотим работать с этим».
Отправлять транзакции легко: это всего лишь текст. Проблема в том, как эту транзакцию потом будут записывать в кошелёк, как — майнить следующий блок и как ты будешь получать деньги за майнинг блоков с транзакциями других людей. Сейчас, например, идут дебаты насчёт Ethereum 2.0, в котором меняют логику майнинга с proof of work на proof of stake. Закоммитить код недостаточно — нужно, чтобы большинство майнеров, которые инвестировали деньги в видеокарты, согласились с изменениями.
— А какие языки программирования используются в блокчейне? Какие-то предметно-ориентированные или общего назначения?
— Если ты работаешь с Ethereum Virtual Machine — это в основном Solidity, к сожалению. Вообще, у меня есть теория о мазохизме программистов. Когда-то мы выбрали JavaScript, чтобы с ним мучиться. В 1970-е были нормальные языки программирования, но для работы на Linux выбрали Bash. То же самое и с Solidity — это достаточно хреновый язык, чтобы программисты продолжали его использовать.
Я бы посоветовал учить Wasm — по сути, это тот же Rust. Его поддерживают всё больше блокчейнов — например, PolkaDot и Cosmos.
Опять же, Ethereum — конечно, крупнейший блокчейн, но есть и другие. Например, Tezos, в который я по ошибке вложил слишком много денег. На нём писали контракты на С++. А в Stellar придумали собственный язык, который позволяет достаточно легко создавать смарт-контракты.
— В блокчейн-разработке используют какие-нибудь проприетарные решения?
— Да, не так много, но их используют. В первую очередь это R3 Corda и Hyperledger. Если говорить о фреймворках, есть Trufflesuite от ConsenSys. Это фреймворк для теста твоих контрактов. У них есть тулзы, которые позволяют тестировать и разрабатывать контракты вне блокчейна, потому что у блокчейна своя скорость. Не всегда хочется ждать две минуты, пока опубликуешь свой контракт, и это стоит денег: даже для теста нужны виртуальные деньги, их тоже нужно как-то майнить.
Например, на Rinkeby нужно затвиттить свой адрес, поставить ссылку на твит, и тебе дадут 18 виртуальных Ethereum. Но иногда заканчиваются даже виртуальные Ethereum, а тебе нужно публиковать контракт.
Как стать блокчейн-разработчиком
— Какие навыки требуются программисту, который хочет войти в блокчейн-разработку?
— Самое важное — умение проводить аудит безопасности. Когда ты публикуешь свой контракт, там всегда есть специальные паттерны программирования, чтобы клиенты пользовались последней версией твоего приложения.
Нужно понимать, что, если мы делаем банковское приложение, в худшем случае мы можем сказать: «Ой, у нас дыра в безопасности, выключаем все серверы». С блокчейнами такой номер не пройдёт. Так что всегда полезно иметь в штате человека, который понимает, как делать infosec audit своего кода или своей команды. Например, в прошлом месяце кто-то потерял 120 миллионов из-за ошибки в контракте, и такое происходит сплошь и рядом.
Помимо этого, нелишним будет представление, как всё тестировать и как вообще работает RESTful-интерфейс. Любая операция чего-то кому-то стоит, даже если это просто вознаграждение майнерам. Поэтому от людей требуется намного больше ответственности. Я вижу небольшой откат к 1990-м, когда программисты были ещё и немного аналитиками. Это потом начали распределять: «У нас будет аналитик, будет бизнес-аналитик, ты делаешь только бэкенд, ты делаешь только фронтенд».
Но в целом всё несложно. Большинство смарт-контрактов и DeFi намного легче, чем любой фронтенд-сайт с какой-нибудь анимацией.
Я бы ещё, наверное, посоветовал чуть-чуть подучиться финансам, понять, как они работают. Хотя, конечно, это то ещё удовольствие. Есть книжки от Financial Times, которые даже в руки брать страшно. Но что делать.
Хотя можно создавать приложения в интернете, которые подсоединяются к блокчейну. Надо просто понимать, как он работает, познакомиться с теорией. Можно пойти, например, на SushiSwap: у них есть какой-то бэкенд, можно сделать что-нибудь для аналитики. У тебя есть приложение-кошелёк MetaMask, которое встраивается в браузер Chrome, ты приходишь на SushiSwap, коннектишься, и всё работает.
Отдельная тема — NFT. Это те же коины, которые присоединяются к каким-то off-chain assets. Я вижу интересные вещи в играх. Можно купить у Ubisoft NFT на оружие в играх: в Call of Duty — на автомат, в Warcraft — на супермеч и так далее.
Но ещё хочу предупредить: в 1960-е было такое понятие, как database company. То есть когда базы данных были новыми, некоторые компании говорили: «Мы поставили себе базу данных, теперь мы database company». Нечто подобное теперь с блокчейном: «О, мы запихнули где-то блокчейн, поэтому мы — blockchain company» :)
— На взгляд тебя как СТО, станут ли в будущем востребованы разработчики, специализирующиеся именно на блокчейнах?
— Думаю, да. Скорее всего, сфера вырастет раз в пять в следующие несколько лет. Между 2017-м и 2020-м был период Crypto Winter, когда всё упало. Мы его пережили. Если посмотреть на валовой продукт блокчейна Европы и Америки, ты можно увидеть, что мы ещё много можем съесть. В коммерческом секторе развитие будет колоссальным.
С чего начать изучение блокчейн-разработки
— Какие книги или видеокурсы ты бы посоветовал тем, кто хочет познакомиться с темой блокчейна и криптовалют?
— Я сделаю рекламу своему другу Роберту Эллису. Он написал книжку, которая называется Blockchain Maturity. Там рост блокчейна сравнивается с ростом интернета и на основании этого делаются прогнозы. Эта книжка 2017 года, вроде бы: можно посмотреть, где Роберт оказался неправ, будет интересно.
Есть ресурс Crypto Zombies, сделанный по образцу CryptoKitties. Был в 2017-м такой публичный NFT, когда ты мог купить котёнка, потом скрестить его с другим и получить новых котят. А здесь ты сам делаешь зомби, потом скрещиваешь их с котятами, и у тебя получается зомби-версия котят. Онлайн-туториал там прикольный, называется Crypto Zombies Loom Network.
Можно посмотреть, чем занимается ConsenSys. У A16z есть крипторесурсы. Её создатели Andreessen Horowitz — одна из самых известных американских инвестиционных компаний. Это чуваки, которые сделали Netscape и первый cloud.
Есть хороший подкаст Blockchain Insiders. Он выходит раз в две-три недели, в нём говорят о применении блокчейна в разных индустриях. Это может быть интересно, особенно если человек ищет работу. Ещё беседуют с технарями, которые рассказывают о конкретных имплементациях контрактов или блокчейнов. И у этих же авторов есть подкаст Fintech Insider — для тех, кому интересен финтех.
По технической части у ConsenSys есть куча библиотек и для теста, и для разработки смарт-контрактов Ethereum. Но я бы советовал не затачиваться только на блокчейн, а посмотреть, как он работает со всем остальным. Потому что на самом деле блокчейн — очень абстрактная вещь, как и вообще фондовый рынок. Поди пойми, что там происходит. На это люди жалуются со времён «тюльпаномании» в Амстердаме. Ничто не ново, этого не нужно стыдиться.