Я рад, что вы, как и я, крайне заинтересованы происходящим в данной области. Но вы, возможно, не знаете, как к ней подступиться. Технология блокчейн развивается семимильными шагами, но четкой методики ее изучения не существует.
С тех пор как я ушел из Airbnb и стал работать с блокчейнами, я получил много вопросов о том, как можно научиться профессионально их разрабатывать. Что ж, перед вами мое авторитетное (но далеко не всеобъемлющее) руководство по основам разработки блокчейнов.
Оно состоит из 10 частей:
- Зачем учиться разработке блокчейнов
- Необходимые условия
- Теоретические основы Биткоина
- Строим блокчейн
- Ethereum и разработка смарт-контрактов
- Безопасность смарт-контрактов
- Переходим на профессиональную разработку
- Реализуем свои проекты
- Как ориентироваться в блокчейн-сообществе
- Как получить работу
Зачем учиться разработке блокчейнов
Прежде чем я отвечу на этот вопрос, позвольте кое-что уточнить: сейчас блокчейн крайне переоценен. Сегодняшние цены очень нестабильны, и с уверенностью можно сказать, что их обвал неизбежен. Подобное уже случалось раньше, и, скорее всего, произойдет снова. Но если вы собираетесь работать в этой области достаточно долго, то со временем вы перестанете обращать внимание на цены. Как сказал Эмин Гюн Сирер (Emin Gun Sirer), цена – это наименее интересный аспект криптовалют. Технологии же обладают огромной важностью, и они необратимо изменят наш мир.
Я не могу с уверенностью сказать, стоит ли вам погружаться в эту область, но я могу перечислить 5 причин, которые побудили к этому меня самого:
- Технология все еще находится на ранних стадиях развития.
Биткоин был изобретен 10 лет назад, но лишь в последние 2 года темп инноваций в этой сфере значительно ускорился, особенно с запуском Ethereum в 2015 году. Основная часть новых идей и компаний построены на базе Ethereum – технологии, которая сама еще является очень незрелой.
Начав сегодня, вы уже через несколько лет вполне сможете стать экспертом мирового класса. Большинство людей работают в этой сфере не так долго, и вам будет легко их нагнать. Это как если бы вы начали изучать технологии глубокого обучения в конце 2000-х и стали экспертом в этой области к сегодняшнему дню.
- Отсутствие серьезного кадрового резерва.
Лучшие студенты вузов обычно занимаются машинным обучением, веб-программированием или разработкой игр. Конечно, шумиха сделала блокчейн-технологии более привлекательными, но они до сих пор воспринимаются как довольно странное и рискованное направление для построения карьеры.
В самом начале криптовалютами занимались только киберпанки, параноики и другие чудаки. И лишь недавно эта ситуация начала меняться. Так что если вы любознательный и открытый новым идеям разработчик, вы уже сможете принести большую пользу в этой сфере.
- Большая часть инноваций происходит вне академических кругов.
Как мы знаем, Сатоши Накамото (Satoshi Nakamoto) не обладал ученой степенью. На данный момент нет ни одного высшего учебного заведения, которое бы предлагало серьезное изучение блокчейн-технологий. Авторами большей части инноваций становились энтузиасты, предприниматели и независимые разработчики. Почти все, что вам нужно знать, содержится в Белых книгах, записях блогов, публичных каналах Slack и программах с открытым кодом. Вам остается лишь засучить рукава и взяться за изучение всех этих материалов.
- Спрос на талантливых сотрудников намного превосходит предложение.
Этой сфере банально не хватает разработчиков, и их невозможно быстро обучить. За каждого талантливого разработчика блокчейнов разворачивается нешуточная борьба, и многие проекты испытывают нехватку человеческих ресурсов. Даже лучшие компании не всегда способны предложить достаточное вознаграждение – слишком много на рынке других возможностей. Если вы обладаете нужными навыками, то вам легко будет найти работу.
- Криптовалюты — это круто!
Где еще вы сможете разрабатывать научно-фантастические штуковины вроде защищенных криптографией децентрализованных денег? Мир криптографии сейчас напоминает дикий запад, и в этом есть свои плюсы и минусы. Ему явно не хватает прозрачности. Уверен, что в ближайшее время будут введены механизмы регулирования криптовалют. Но они, без сомнения, являются одной из самых продвинутых областей, в которой вы можете сейчас действовать.
В своем недавнем интервью Наваль Равикант (Naval Ravikant) сказал:
“Ключ к успеху заключается в том, чтобы предложить обществу то, что оно хочет, но не знает, как этого достичь. И вас не научат этому в школе, иначе этого «что-то» было бы уже достаточное количество”.
Делайте то, что никто, кроме вас, делать не умеет. Блокчейн – это новая технология, и ее еще предстоит серьезно доработать. Если у вас получится построить свою карьеру на децентрализованной технологии, она вас щедро вознаградит.
Итак, вы готовы попробовать? Но давайте сперва обсудим, что вам нужно знать прежде, чем бросаться в бой.
Необходимые условия
Прежде чем погружаться в изучение блокчейн-технологий, я бы посоветовал вам повторить основы. Блокчейны появились в результате десятилетий развития информатики, криптографии и экономики. Сатоши Накамото был бунтарем, но он хорошо знал историю. Для того чтобы разобраться в том, как блокчейны работают, вам нужно понять, из чего они состоят, что предшествовало появлению блокчейнов, и почему предшествующие решения не работали так, как нужно.
Вот список тем, с которыми вам стоит познакомиться, в порядке убывания важности.
Учтите, что эти ссылки являются лишь отправной точкой, и, возможно, вы захотите изучить многие из этих тем поглубже.
Информатика
Структуры данных
Вам нужно будет познакомиться с характеристиками и параметрами безопасности следующих структур данных: связанные списки, двоичные деревья поиска, хэш-таблицы и графы (в особенности, направленные ациклические графы, имеющие большое значение для блокчейнов). Лучше всего попытаться с нуля построить эти структуры – это поможет вам глубже понять их свойства и принципы их работы.
Криптография
Криптография – краеугольный камень криптовалют. Все криптовалюты для идентификации применяют криптографические алгоритмы с использованием открытых и закрытых ключей. Я бы порекомендовал начать их изучение с алгоритма RSA (он довольно простой и не требует серьезной математической подготовки), а затем переходить к ECDSA. Эллиптическая криптография требует понимания значительно более абстрактной математики. Знать все нюансы не столь важно, но надо понимать, что этот алгоритм используется в большинстве криптовалют, включая Биткоин.
Другим важным примитивом криптографических алгоритмов является криптографическая хэш-функция. Она используется для создания схем обязательств, а также является составной частью деревьев Меркла. Деревья Меркла позволяют применять доказательства Меркла – одну из ключевых возможностей оптимизации, обеспечивающих масштабируемость блокчейнов.
Распределенные системы
Есть несколько приличных книг по распределенным системам, однако это очень большая и сложная тема. Тем не менее без понимания распределенных систем вы не сможете разобраться в блокчейнах. Вам стоит получить хотя бы базовые знания о них прежде, чем приступать к практической разработке блокчейнов.
Как только вы выходите за рамки одной машины, вы должны позаботиться о согласованности данных и консенсусе. Вы должны понимать разницу между линеаризуемой моделью и моделью согласованности в конечном счете. Также желательно знать особенности отказоустойчивых алгоритмов консенсуса, таких как Paxos и RAFT. Понимать сложности временных конфликтов в распределенных системах. Понимать компромисс между безопасностью и удобством.
Изучив это, вы сможете понять сложность решения задачи византийских генералов – основного требования безопасности публичных блокчейнов. Также вы, наверное, захотите узнать о PBFT, одном из первых масштабируемых алгоритмов, обеспечивающих решение задачи византийских генералов. На основе PBFT созданы большинство блокчейн алгоритмов коненсуса помимо proof-of-work. Вам опять-таки не нужно понимать все детали строения и работы PBFT – нужно лишь понять его основную идею и уровень безопасности.
Кроме того, очень полезно будет знать основные методы распределения баз данных (по сути своей, блокчейны – это не что иное, как базы данных). Почитайте о шардинге (например, через консистентное хеширование), однонаправленной репликации и согласованных коммитах. Просмотрите информацию о распределенных хэш-таблицах (DHT), таких как Chord и Kademlia.
Организация сетей
Децентрализация блокчейнов в значительной степени происходит из их сетевой peer-to-peer топологии. То есть, блокчейны являются прямыми потомками P2P сетей.
Для того чтобы понять модель коммуникации блокчейнов, вы должны знать основы построения компьютерных сетей, а именно протоколы TCP и UDP, пакетную модель, структуру IP пакетов, а также примерно представлять себе принципы интернет-маршрутизации.
Публичные блокчейны обычно распространяют сообщения на основе gossip-протоколов лавинным методом. Полезно будет знать историю разработки архитектуры P2P сетей, от Napster и Gnutella до BitTorrent и Tor. Блокчейны стоят несколько обособленно, но их архитектура основывается на опыте использования сетей прошлых поколений.
Экономика
Криптовалюты изначально являются междисциплинарной сферой. Во многом, именно это и делает их столь потрясающими. Помимо компьютерных наук, криптографии и сетевых технологий, они тесно взаимосвязаны с экономикой. Криптовалюты способны воспроизвести многие свойства ценных бумаг благодаря своей экономической структуре, которую часто называют криптоэкономикой. И получается, что для изучения криптовалют важно знать и основы экономики.
Теория игр
Наиболее важный раздел экономики, применяющийся в криптовалютах – это теория игр, изучение возможных выигрышей и побудительных стимулов для большого числа участников. Вам не нужно будет погружаться в эту сферу оченьглубоко, но вы должны понимать основы теоретического анализа игр и уметь их применять при изучении возможных исходов в однократных и итерационных играх.
В вашем арсенале должны присутствовать две ключевые концепции: равновесие Нэша и фокальные точки, так как они играют важную роль в криптоэкономическом анализе.
Макроэкономика
Криптовалюты – это не только протоколы, это еще и форма денежных средств. Именно поэтому они подчиняются законам макроэкономики (если их можно назвать законами). Криптовалюты регулируются различными монетарными политиками, а также предсказуемо реагируют на инфляцию и дефляцию. Вы должны понимать эти процессы и их влияние на накопление, потребление и т. д.
Денежное обращение является еще одним важным для нас экономическим понятием, особенно в его связи с определением цены той или иной валюты.
Микроэкономика
Криптовалюты тесно взаимосвязаны с рынками, и, как следствие, требуют понимания микроэкономики. У вас должно быть четкое понимание кривых спроса и предложения. Вы должны уметь рассуждать о конкуренции и альтернативным издержкам (они часто учитываются применительно к майнингу криптовалют). Для многих криптовалютных систем распределения актуальна теория аукциона.
Я подозреваю, что с некоторыми из этих тем вы уже знакомы. В таком случае вы можете смело пропустить эти разделы.
Итак, вы пересмотрели и подтянули свои базовые знания (а может быть, пропустили этот момент – никто ведь не смотрит). Давайте теперь переходить к разработке блокчейнов.
(Продолжение следует)