7 марта 2018 Криптовалюта.Tech
Криптовалюты, ICO, волшебные интернет-деньги – все это звучит очень привлекательно. И вы, возможно, хотите с головой окунуться во все это безумие. Но с чего начать?
Я рад, что вы, как и я, крайне заинтересованы происходящим в данной области. Но вы, возможно, не знаете, как к ней подступиться. Технология блокчейн развивается семимильными шагами, но четкой методики ее изучения не существует.
С тех пор как я ушел из 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. Блокчейны стоят несколько обособленно, но их архитектура основывается на опыте использования сетей прошлых поколений.
Экономика
Криптовалюты изначально являются междисциплинарной сферой. Во многом, именно это и делает их столь потрясающими. Помимо компьютерных наук, криптографии и сетевых технологий, они тесно взаимосвязаны с экономикой. Криптовалюты способны воспроизвести многие свойства ценных бумаг благодаря своей экономической структуре, которую часто называют криптоэкономикой. И получается, что для изучения криптовалют важно знать и основы экономики.
Теория игр
Наиболее важный раздел экономики, применяющийся в криптовалютах – это теория игр, изучение возможных выигрышей и побудительных стимулов для большого числа участников. Вам не нужно будет погружаться в эту сферу оченьглубоко, но вы должны понимать основы теоретического анализа игр и уметь их применять при изучении возможных исходов в однократных и итерационных играх.
В вашем арсенале должны присутствовать две ключевые концепции: равновесие Нэша и фокальные точки, так как они играют важную роль в криптоэкономическом анализе.
Макроэкономика
Криптовалюты – это не только протоколы, это еще и форма денежных средств. Именно поэтому они подчиняются законам макроэкономики (если их можно назвать законами). Криптовалюты регулируются различными монетарными политиками, а также предсказуемо реагируют на инфляцию и дефляцию. Вы должны понимать эти процессы и их влияние на накопление, потребление и т. д.
Денежное обращение является еще одним важным для нас экономическим понятием, особенно в его связи с определением цены той или иной валюты.
Микроэкономика
Криптовалюты тесно взаимосвязаны с рынками, и, как следствие, требуют понимания микроэкономики. У вас должно быть четкое понимание кривых спроса и предложения. Вы должны уметь рассуждать о конкуренции и альтернативным издержкам (они часто учитываются применительно к майнингу криптовалют). Для многих криптовалютных систем распределения актуальна теория аукциона.
Я подозреваю, что с некоторыми из этих тем вы уже знакомы. В таком случае вы можете смело пропустить эти разделы.
Итак, вы пересмотрели и подтянули свои базовые знания (а может быть, пропустили этот момент – никто ведь не смотрит). Давайте теперь переходить к разработке блокчейнов.
В предыдущей части мы рассказали о причинах, по которым разработка блокчейнов на сегодняшний день является крайне перспективной сферой деятельности, а также поговорили о том, какие базовые знания понадобятся для более глубокого ее изучения.
В этой части мы расскажем о двух самых популярных криптовалютах – Биткоине и Эфириуме.
Теоретические основы Биткоина
В октябре 2008 года Сатоши Накамото опубликовал белую книгу, в которой описал протокол децентрализованной цифровой валюты. Он назвал этот протокол Bitcoin.
Прежде чем приступить к изучению основных идей блокчейнов, вам нужно начать с Биткоина и понять изначальное видение Сатоши.
Для начала я рекомендую познакомиться с протоколом Proof-of-Work и правилом выбора форка (также известном как консенсус Накамото). Начните с этого видео:
Рекомендую посмотреть еще несколько видеоматериалов, чтобы эта идея прочно закрепилась в вашем сознании.
Прекрасно. А эта статья поможет сформировать более глубокое и цельное понимание того, как работают важнейшие компоненты сети Биткоина.
Строим блокчейн
Теперь, когда вы получили нужные знания, можно попробовать собрать собственный блокчейн на основе Proof-of-Work. Не бойтесь, это только звучит страшно. Чуть ниже я перечислю несколько ресурсов, которые смогут вам помочь.
Во-первых, у меня есть видео лекции, в ходе которой я рассматриваю весь процесс разработки блокчейна на Ruby (рекомендую посмотреть, даже если вы не программируете на Ruby):
Источник и слайды лежат здесь.
Вы можете найти еще много примеров реализации блокчейнов на разных языках программирования. Теперь постройте свой блокчейн и порадуйтесь тому, что он в целом работоспособен.
К этому моменту у вас уже должно сложиться некоторое представление о том, как разработать простую платежную систему на основе блокчейна (как Биткоин, например). Кроме того, вашего опыта должно быть достаточно для чтения и понимания белой книги Биткоина в оригинале.
Для того чтобы понять экономику и механику майнинга биткоинов, я рекомендую прослушать соответствующую лекцию из курса Bitcoin and Cryptocurrencies Принстонского университета.
Если вы добрались до этого этапа, вы сможете изучить заголовки блоков Биткоина и понять, что каждый из них означает. Вы также сможете попробовать поработать с программой анализа блоков Биткоина и научиться отслеживать необработанные транзакции.
Это хороший момент, чтобы ознакомиться с историей Биткоина и других криптовалют. В видео ниже, предоставленном UC Berkeley Decal, вы найдете отличный обзор этой темы:
Вот некоторые дополнительные ресурсы:
Научные предшественники Биткоина
Механика Биткоина: Код Биткоина и UTXO (программный код Биткоина не так уж и важен, просто познакомьтесь с его возможностями)
Краткий гид по форкам Биткоина
Софт-форки и сигнализирование майнеров
Двойные траты, атаки 51% и корыстный майнинг
Атаки повторения
Проблема масштабируемости Биткоина, основной источник проблем в экосистеме Биткоина. Вы должны понимать, почему люди в Биткоин-сообществе так ожесточенно спорят по поводу размеров блока.
Segregated witness, он же SegWit – не самое необходимое знание, но очень часто упоминаемая тема.
Lightning Network, одно из наиболее популярных решений проблем масштабируемости для Биткоина, равно как и для многих других блокчейнов.
Полные ноды Биткоина, статистика по комиссиям Биткоина, графики, графики и еще раз графики.
Индекс энергопотребления Биткоина (на момент публикации майнинг биткоинов потребляет столько же энергии, сколько Перу)
Проницательное эссе от Gwern на тему разрозненности и неэлегантности Биткоина.
При желании вы сможете найти множество дополнительных материалов на странице Джеймсона Лоппа (Jameson Lopp).
Эфириум и разработка смарт-контрактов
После того как вы построили блокчейн и поняли динамику сети Биткоин, пришло время вплотную заняться Эфириумом.
Вы уже знаете, как блокчейн и правило Proof-of-Work обеспечивают распределенное решение задачи византийских генералов в peer-to-peer сетях. Но платежная система – это лишь одна из возможных реализаций подобного блокчейна. Виталику Бутерину, создателю Ethereum, в 2013 году пришла в голову идея: что, если использовать блокчейн для создания децентрализованного компьютера?
В сети Эфириум вы платите майнерам за выполнение ваших программ на распределенной виртуальной машине. Это значит, что вы можете производить вычисления любой сложности с помощью Тьюринг-полного (в отличие от кода Биткоина) языка программирования. Очевидно, что с помощью этого метода можно создавать в том числе и платежные системы. Соответственно, Эфириум предоставил расширенную по сравнению с Биткоином функциональность и дал старт новой волне инноваций.
Мы подошли к смарт-контрактам – так называются программы, запускаемые на подобных виртуальных машинах. В ходе выполнения программы смарт-контракт может напрямую взаимодействовать с криптовалютой блокчейна. То есть вы можете создать финансовые контракты, которые автоматически обеспечивают сами себя. Это совершенно потрясающая идея, на основе которой можно реализовать абсолютно футуристические идеи.
Появление Эфириума привело к целой волне ICO и притоку разработчиков приложений на основе блокчейнов. Сегодня Ethereum является второй по популярности криптовалютой после Биткоина, у него сильнейшая команда, в которой более чем в 10 раз больше разработчиков, чем у следующего за ним конкурента, наиболее развитый инструментарий, и поэтому огромное количество проектов и ICO построено именно на основе Эфириума. Также он давно пользуется мощнейшей поддержкой сообщества. Если вы занимаетесь блокчейн-разработкой, вероятнее всего, вы пишете код смарт-контрактов для Ethereum. И даже если это не так, имеет смысл знать, что происходит в этой сфере.
Начнем с более развернутого объяснения Эфириума:
Идеи, лежащие в основе Эфириума, привели к целой волне инноваций в области криптоэкономики. Изучите идеи, послужившие основой для создания децентрализованных автономных организаций (DAO) и сопутствующие им футуристические мечты.
Так, довольно фантазий, вернемся к техническим деталям.
Здесь находится отличный обзор желтой книги Эфириума и его составляющихот Прити Касиреди (Preethi Kasireddy). Эфириум использует учетную модель в отличие от UTXO-модели Биткоина. Вскоре вы поймете, почему эта модель упрощает написание смарт-контрактов.
Лучший способ познакомиться с Эфириумом (как и с любой другой технологией) – реализовать на нем несколько небольших проектов.
Основным языком программирования Эфириума является Solidity – статически типизированный, похожий на jаvascript язык с множеством шероховатостей и спорных решений. Как только более надежные языки – например, Viper – будут готовы к использованию, они смогут заменить Solidity, но сегодня именно он является своеобразным эсперанто при разработке смарт-контрактов. По сути, это jаvascript Эфириума, и вам нужно его изучить (вместе с его подводными камнями).
Я рекомендую вам начать с пособия CryptoZombies. Это очень качественное пособие, похожее на материалы от Codecademy, в котором описаны основы разработки на Solidity.
Теперь, после того как вы немного подогрели свой интерес, приступим к собственно разработке.
Аналогом “hello world” в мире Эфириума является разработка ERC-20 токена. В качестве первой инструкции по этому процессу я рекомендую этот материал.
Remix – это браузерный редактор и компилятор Solidity. По сути, это тренажер разработки в среде Ethereum, поэтому я рекомендую с этого момента все практические занятия выполнять в нем. Вам также стоит поднять локальный блокчейн и опробовать инструментарий Эфириума. Это пособие поможет вам построить блокчейн и расскажет обо всех его компонентах.
На следующем этапе я бы построил систему голосования. Назовем ее Первое Приложение Эфириума. У Карла Флерша (Karl Floersch) есть отличный гайд по разработке безопасной системы голосования по схеме «коммит-раскрытие».
Отлично, теперь небольшая проверка: смоделируйте безопасную игру, в которой два игрока смогут безопасно сделать ставки на результат подбрасывания монетки. На этот раз я не даю вам инструкций, реализуйте ее самостоятельно. Подумайте о том, каким образом участники могут мошенничать? Какие могут быть атаки на эту игру? Можете ли вы обеспечить добросовестное поведение обоих игроков? Здесь вы найдете несколько ценных советов.
Безопасность смарт-контрактов
В разработке блокчейнов важнейшую роль играет безопасность. Смарт-контракты несколько раз подвергались разрушительным взломам, таким как взлом DAO, взлом Parity, и последующий взлом Parity 2 (на этот раз даже с фирменной футболкой). Если вы хотите писать смарт-контракты, то вам обязательно нужно изучить аналитику по всем этим случаям взлома.
Дело в том, что смарт-контракты крайне сложно правильно реализовать. Несмотря на то что инструменты разработки улучшаются, устраняя возможность атак данных типов, все эти атаки стали возможны из-за ошибок в программном коде. Смарт-контракты являются также причиной появления многих труднонаходимых ошибок, таких как фронтраннинг или безопасная генерация случайных значений.
Как у разработчика смарт-контрактов, ваше стремление к безопасности должно граничить с паранойей. Здесь не подходит правило Кремниевой долины “move fast and break things” (“действуй быстро и ломай все, что мешает”). Это значит, что код, обрабатывающий денежные потоки, должен быть вначале обработан статическими анализаторами типа Oyente или Securify, затем тщательно протестирован, и в конце отправлен на проверку опытному аудитору в области смарт-контрактов. Вам также стоит ориентироваться на уже проверенные программные компоненты, например, открытые контракты OpenZeppelin.
Для развития навыков в области безопасности, пройдите The Ethernaut, игру от OpenZeppelin, в которой нужно отыскать и устранить уязвимости в смарт-контрактах. Многие из описанных уязвимостей привели к реальным атакам на смарт-контракты.
У Фила Дайана (Phil Daian) тоже есть отличный набор заданий на взлом смарт-контрактов под названием Hack This Contract.
После этого, я крайне советую вам полностью прочитать Лучшие практики смарт-контрактов (Smart Contract Best Practices), собранные ConsenSys. Вам еще не раз придется возвращаться к этому документу в своей карьере разработчика смарт-контрактов. Экспертам в области безопасности стоит ознакомиться с материалами из этой подборки.
Часть 3
В этой части мы расскажем о том, как стать профессиональным разработчиком блокчейнов, приведем список полезных материалов, а также компаний, в которых можно получить работу.
Переходим к профессиональной разработке
На этом этапе вам стоит отказаться от Remix и перейти на серьезные инструменты разработки Solidity.
Большинство разработчиков рекомендуют использовать текстовые редакторы VSCode или Atom, так как в них есть неплохие плагины для Solidity. Для взаимодействия с локальным блокчейном вы можете использовать Ganache (бывший TestRPC), а также Truffle framework для запуска jаvascript тестов и настройки взаимодействия.
Самое время обратить внимание на IPFS, который можно использовать в качестве полностью децентрализованного файлового хранилища, гораздо более дешевого, чем блокчейн Эфириума. Вот небольшое описание проекта от его создателя, Хуана Бенета (Juan Benet):
Для работы с полными нодами Эфириума и IPFS большинство разработчиков советуют использовать Infura. Etherscan и ETH Gas Station предоставляют полезную статистику работы сети Эфириума.
После того как у вас полностью собраны Web3 инструменты, попробуйте запустить Dapp (децентрализованное приложение). Это пособие дает отличный обзор применения Node в связке с Postgres на стороне сервера, а здесь вы узнаете, как создать полностью децентрализованное приложение с использованием IPFS в качестве слоя хранения данных.
Реализация собственных проектов
Сейчас вы должны уже неплохо разбираться в технических особенностях. Пора переходить к фактической разработке и реальному участию в жизни блокчейн-сообщества.
Начните разрабатывать собственные проекты. Если у вас есть какая-то захватывающая идея, реализуйте ее, и убедите остальных присоединиться к вам. Если у вас еще нет идеи, или вы просто не хотите этим заниматься, есть много качественных проектов с открытым кодом, которые приветствуют любую помощь. Хорошим местом для первых шагов в самостоятельной разработке смарт-контрактов может стать OpenZeppelin.
Но я бы все-таки порекомендовал найти активно развивающийся проект, поклонником которого вы являетесь. Зайдите к ним в Slack или Rocketchat – обычно, разработчики охотно там отвечают. Предложите помощь и попросите себе несколько небольших задач (или поищите нерешенные задачи в их Github).
Учтите, что хоть я и делаю основной упор на разработку протоколов и смарт-контрактов, в блокчейн-компаниях часто требуются и веб-разработчики для настройки основного функционала. Эти роли часто пересекаются с блокчейнами, поэтому важно понимать, как они работают. Однако, работа большинства инженеров в блокчейн-стартапах заключается в поднятии веб-сервера Python, создании интерфейса на React, а взаимодействие с блокчейном может составлять лишь небольшую ее часть. Вам необязательно нужно специализироваться на разработке смарт-контрактов – на самом деле, это лишь часть работы над блокчейном.
Помимо проектов с открытым кодом, постоянно проводится большое количество блокчейн-хакатонов. У многих проектов есть открытый Slack, а у самого Эфириума – очень активный канал Gitter, в котором постоянно сидит много разработчиков. По мере погружения в эту сферу, вы найдете единомышленников с опытом, сопоставимым с вашим – неважно, в Slack, Telegram или Gitter. Ищите своих людей и продолжайте учиться.
Как ориентироваться в блокчейн-сообществе
Лучший способ узнать блокчейн – это самостоятельно погрузиться в этот мир. Читайте и слушайте самых умных людей, особенно прошлые их материалы. Когда я хотел узнать что-то новое, я всегда действовал по этому сценарию и добивался успеха.
В сети есть и много хорошего контента по блокчейну, и много плохого. Ниже приведен список ресурсов, которые я рекомендую изучить.
Информационные каналы
Есть три прекрасных подкаста: Software Engineering Daily Blockchain interviews, в которых есть много технической информации начального уровня по разным темам, в том числе и криптовалютам. Также я могу посоветовать Epicenter и Unchained – думаю, вам будет интересно прослушать немало предыдущих эпизодов. Conspiratus – еще один интересный технический подкаст. На вашем месте я бы подписался на них все.
Есть несколько приличных Youtube каналов (хотя много и мусора). Ethereum Foundation публикует презентации с Devcon3. Blockchain at Berkeley выкладывает записи многих своих лекций, в которых можно найти отличные технические обзоры. Decypher Media размещает обсуждения и обзоры белых книг и пособий. Jackson Palmer выпускает отличные еженедельные обзоры, они содержат меньше технических подробностей, но сделаны очень качественно.
Чтение и общение онлайн
Онлайн-общение на тему блокчейнов ведется, преимущественно, в двух местах: Reddit и Twitter. Большинство сабреддитов содержит множество бесполезной информации плохого качества. На r/Ethereum поддерживается стабильно высокое качество информации (есть еще несколько неплохих сабреддитов для отдельных криптовалют). Большинство же сабреддитов по преимуществу оккупированы болтунами, и не стоят вашего внимания. Держитесь подальше от сабреддитов, посвященных Биткоину. У Биткоина на данный момент одно из наиболее токсичных сообществ, и Reddit – не исключение.
В Twitter намешано много всего. Хорошо это или плохо, но большинство представителей блокчейн-сообщества обитают именно там. Твиттер блокчейн-сообщества для меня – загадка, но со временем я выработал некую стратегию в его отношении. С моей точки зрения, в блокчейн-сообществе присутствует 5 типов людей: разработчики, предприниматели, журналисты, трейдеры, и «лидеры мнений».
Любой ценой избегайте «лидеров мнений». Предприниматели могут быть полезными, но в основном они заняты продвижением собственных проектов. Инвесторы обычно говорят о ценах и популярных проектах. Возможно, это именно то, что вам нужно. Журналисты обычно говорят об основных событиях дня, и я бы советовал держаться от них подальше – вряд ли вам нужен анализ всех актуальных событий в реальном времени. Это может быть полезно в том случае, если вы активно заняты трейдингом, но если вы собираетесь стать блокчейн разработчиком, большая часть информации в реальном времени только отвлекает.
Уделите наибольшее внимание разработчикам. Сейчас они – самые важные люди. Именно они двигают технологию вперед.
Вот несколько представителей каждой категории (если хотите заполнить свою ленту новостей, посмотрите, на кого подписаны эти люди в Twitter):
Разработчики:
Виталик Бутерин, Эфириум
Зуко Уилкокс (Zooko Wilcox), Zcash
Ник Сабо (Nick Szabo), изобретатель смарт-контрактов
Влад Замфир (Vlad Zamfir), Эфириум
Марко Сантори (Marco Santori), Cooley LLP
Риккардо Спаньи (Riccardo “fluffypony” Spagni), Monero
Мэтт Листон (Matt Liston), Gnosis
Предприниматели
Баладжи Шринивасан (Balaji Srinivasan), Earn.com
Эрик Вурхис (Erik Voorhees), Shapeshift
Инвесторы
Наваль Равикант (Naval Ravikant), MetaStable
Ари Пол (Ari Paul), Blocktower Capital
Линда Сье (Linda Xie), Scalar Capital
Крис Барниск (Chris Burniske), Placeholder
Журналисты
Туур Демеестер (Tuur Demeester), Adamant Research
Лора Шин (Laura Shin), Forbes
С учетом всего сказанного, я бы посоветовал вам минимизировать свое присутствие на Reddit и в Twitter. Если вы журналист или дейтрейдер, есть шанс найти что-то полезное, но чаще всего лента новостей и чат вам не пригодятся. Важная информация будет приходить к вам в свое время. Есть несколько хороших новостных журналов, которые собирают самые важные новости за день или неделю, которые вы сможете изучать в относительно свободное время.
Я советую подписаться на Inside Bitcoin. В нем публикуются самые важные новости из мира криптографии (не только из Биткоина). Token Economy публикует прекрасные еженедельные материалы по токен-проектам, а Week in Ethereum описывает ориентированные на разработчиков события в экосистеме Эфириума.
Скорее всего, вам не потребуется искать новости где-то еще. Сконцентрируйтесь на обучении и практической разработке.
Вам определенно нужно подписаться на лучшие блоги. Большие материалы обычно оказываются самыми стоящими. Из блогов, я рекомендую следующие:
Виталик Бутерин публикует отличные аналитические материалы по блокчейну и криптоэкономическому анализу (также изучите посты его старого блога, Виталик не зря считается одним из лучших умов своего поколения)
Hacking, Distributed публикует аналитику по безопасности блокчейнов от компании Cornell.
Unenumerated — отличный блог Ника Cабо, в котором есть вызывающие и эклектичные эссе о роли криптовалют в обществе.
Money Stuff — дочернее СМИ Bloomberg под руководством Мэтта Левина с четкими и важными аналитическими материалами, затрагивающими рынки, финансовую сферу и новости блокчейнов.
Влад Замфир публикует взвешенные и выдержанные прогнозы по частным и публичным блокчейнам.
Крис Барниск выложил серию отличных постов о методах оценки криптографических активов.
Джеймсон Лопп (Jameson Lopp) публикует прекрасные технические посты об экосистеме Биткоина с точки зрения разработчика программного обеспечения.
Great Wall of Numbers от Тима Суонсона (Tim Swanson), с его твердыми и рассудительными разоблачениями биткоин-мании, особенно в корпоративной сфере.
Книги и курсы
Если вы хотите придерживаться более структурированного подхода при изучении данного материала, я могу порекомендовать несколько качественных книг и курсов.
Лучшая книга на тему блокчейнов в целом – это Bitcoin and Cryptocurrency Technologies (с дополнениями из курса Princeton Coursera). Я посоветую еще одну книгу, Mastering Bitcoin от Андреаса Антонопулоса, а также планируемую к выходу Mastering Ethereum в соавторстве с сооснователем Ethereum Гэвином Вудом (обе выйдут в издательстве O’Reilly). Единственная не-техническая книгая, которую я могу посоветовать, это Digital Gold от Натаниэла Поппера (Nathaniel Popper). Вся остальная достойная прочтения информация находится в блогах, а не в книгах. Эта сфера меняется с такой скоростью, что ее ключевые участники редко могут выделить время на написание книги, а сами книги к моменту выхода, скорее всего, уже устареют.
Также есть несколько приличных курсов (и множество некачественных). Чуть раньше я уже давал ссылки на пару хороших лекций из Princeton Coursera Course (их видеоверсии есть на YouTube) и из UC Berkeley Decal. Также я слышал, что в Consensys Academy есть несколько хороших материалов для тех, что хочет изучить разработку смарт-контрактов.
Как получить работу
Как я уже говорил, блокчейн стартапы отчаянно нуждаются в сотрудниках. Если вы дошли до этого этапа и выполнили хотя бы половину предложенных заданий, то вы, скорее всего, уже сможете получить работу в этой области. AngelList написали отличную статью о том, как получить работу в сфере криптографии.
Существует несколько хороших агрегаторов публикуемых вакансий в этой сфере:
AngelList crypto startups
BlockchainJobz
Ethereum Jobs
Be in Crypto
Blockchain Job Board
Crypto Jobs List
Google jobs (запрос по блокчейну)
ConsenSys jobs (венчурная студия разработки в среде Ethereum с огромным количеством проектов)
Несколько известных мне перспективных блокчейн стартапов ищут разработчиков:
0x
Dharma Labs
Civic
Также на рынке крипто-вакансий присутствуют несколько крупных компаний:
Coinbase – Google в криптомире – всегда нуждается в сотрудниках.
Stellar и Ripple, если вы хотите работать над криптовалютами, ориентированными на использование корпорациями.
Square внедрил некий блокчейн, но я неуверен, ищут ли они в данный момент сотрудников.
IBM, Visa, или JP Morgan, если вас привлекают традиционные компании
Однако, лучший способ получить работу в компании, на мой взгляд – это найти интересующий вас проект и обратиться к ним напрямую. Большинство блокчейн-команд не против нанять правильного сотрудника на удаленную работу. Многие разработчики доступны в Twitter, Github или в своих открытых каналах Slack. Если у вас есть хорошее портфолио и/или вы способны продемонстрировать свои технические навыки, вы сможете произвести впечатление на многих – надо лишь проявить инициативу.
И это все, что я могу вам рассказать. Если вы выполнили все вышеописанное, то должны быть уже неплохо подготовлены. Возможно, даже лучше, чем я в свое время.
Кроличья нора
То, что я вам показал – лишь начало. Криптовалюты по-прежнему находятся на ранних этапах развития, и я абсолютно убежден, что это самая быстрорастущая сфера, в которой только можно работать. Я уверен, что этот гайд устареет через год и что я не смог рассказать об огромном количестве потрясающих проектов. Но если вы решите работать и развиваться в этой сфере, то со временем вы найдете эти проекты самостоятельно.
Не останавливайтесь на достигнутом. Не переставайте учиться. Растите над собой.
https://cryptocurrency.tech/ (C)
Не является индивидуальной инвестиционной рекомендацией | При копировании ссылка обязательна | Нашли ошибку - выделить и нажать Ctrl+Enter | Отправить жалобу
Я рад, что вы, как и я, крайне заинтересованы происходящим в данной области. Но вы, возможно, не знаете, как к ней подступиться. Технология блокчейн развивается семимильными шагами, но четкой методики ее изучения не существует.
С тех пор как я ушел из 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. Блокчейны стоят несколько обособленно, но их архитектура основывается на опыте использования сетей прошлых поколений.
Экономика
Криптовалюты изначально являются междисциплинарной сферой. Во многом, именно это и делает их столь потрясающими. Помимо компьютерных наук, криптографии и сетевых технологий, они тесно взаимосвязаны с экономикой. Криптовалюты способны воспроизвести многие свойства ценных бумаг благодаря своей экономической структуре, которую часто называют криптоэкономикой. И получается, что для изучения криптовалют важно знать и основы экономики.
Теория игр
Наиболее важный раздел экономики, применяющийся в криптовалютах – это теория игр, изучение возможных выигрышей и побудительных стимулов для большого числа участников. Вам не нужно будет погружаться в эту сферу оченьглубоко, но вы должны понимать основы теоретического анализа игр и уметь их применять при изучении возможных исходов в однократных и итерационных играх.
В вашем арсенале должны присутствовать две ключевые концепции: равновесие Нэша и фокальные точки, так как они играют важную роль в криптоэкономическом анализе.
Макроэкономика
Криптовалюты – это не только протоколы, это еще и форма денежных средств. Именно поэтому они подчиняются законам макроэкономики (если их можно назвать законами). Криптовалюты регулируются различными монетарными политиками, а также предсказуемо реагируют на инфляцию и дефляцию. Вы должны понимать эти процессы и их влияние на накопление, потребление и т. д.
Денежное обращение является еще одним важным для нас экономическим понятием, особенно в его связи с определением цены той или иной валюты.
Микроэкономика
Криптовалюты тесно взаимосвязаны с рынками, и, как следствие, требуют понимания микроэкономики. У вас должно быть четкое понимание кривых спроса и предложения. Вы должны уметь рассуждать о конкуренции и альтернативным издержкам (они часто учитываются применительно к майнингу криптовалют). Для многих криптовалютных систем распределения актуальна теория аукциона.
Я подозреваю, что с некоторыми из этих тем вы уже знакомы. В таком случае вы можете смело пропустить эти разделы.
Итак, вы пересмотрели и подтянули свои базовые знания (а может быть, пропустили этот момент – никто ведь не смотрит). Давайте теперь переходить к разработке блокчейнов.
В предыдущей части мы рассказали о причинах, по которым разработка блокчейнов на сегодняшний день является крайне перспективной сферой деятельности, а также поговорили о том, какие базовые знания понадобятся для более глубокого ее изучения.
В этой части мы расскажем о двух самых популярных криптовалютах – Биткоине и Эфириуме.
Теоретические основы Биткоина
В октябре 2008 года Сатоши Накамото опубликовал белую книгу, в которой описал протокол децентрализованной цифровой валюты. Он назвал этот протокол Bitcoin.
Прежде чем приступить к изучению основных идей блокчейнов, вам нужно начать с Биткоина и понять изначальное видение Сатоши.
Для начала я рекомендую познакомиться с протоколом Proof-of-Work и правилом выбора форка (также известном как консенсус Накамото). Начните с этого видео:
Рекомендую посмотреть еще несколько видеоматериалов, чтобы эта идея прочно закрепилась в вашем сознании.
Прекрасно. А эта статья поможет сформировать более глубокое и цельное понимание того, как работают важнейшие компоненты сети Биткоина.
Строим блокчейн
Теперь, когда вы получили нужные знания, можно попробовать собрать собственный блокчейн на основе Proof-of-Work. Не бойтесь, это только звучит страшно. Чуть ниже я перечислю несколько ресурсов, которые смогут вам помочь.
Во-первых, у меня есть видео лекции, в ходе которой я рассматриваю весь процесс разработки блокчейна на Ruby (рекомендую посмотреть, даже если вы не программируете на Ruby):
Источник и слайды лежат здесь.
Вы можете найти еще много примеров реализации блокчейнов на разных языках программирования. Теперь постройте свой блокчейн и порадуйтесь тому, что он в целом работоспособен.
К этому моменту у вас уже должно сложиться некоторое представление о том, как разработать простую платежную систему на основе блокчейна (как Биткоин, например). Кроме того, вашего опыта должно быть достаточно для чтения и понимания белой книги Биткоина в оригинале.
Для того чтобы понять экономику и механику майнинга биткоинов, я рекомендую прослушать соответствующую лекцию из курса Bitcoin and Cryptocurrencies Принстонского университета.
Если вы добрались до этого этапа, вы сможете изучить заголовки блоков Биткоина и понять, что каждый из них означает. Вы также сможете попробовать поработать с программой анализа блоков Биткоина и научиться отслеживать необработанные транзакции.
Это хороший момент, чтобы ознакомиться с историей Биткоина и других криптовалют. В видео ниже, предоставленном UC Berkeley Decal, вы найдете отличный обзор этой темы:
Вот некоторые дополнительные ресурсы:
Научные предшественники Биткоина
Механика Биткоина: Код Биткоина и UTXO (программный код Биткоина не так уж и важен, просто познакомьтесь с его возможностями)
Краткий гид по форкам Биткоина
Софт-форки и сигнализирование майнеров
Двойные траты, атаки 51% и корыстный майнинг
Атаки повторения
Проблема масштабируемости Биткоина, основной источник проблем в экосистеме Биткоина. Вы должны понимать, почему люди в Биткоин-сообществе так ожесточенно спорят по поводу размеров блока.
Segregated witness, он же SegWit – не самое необходимое знание, но очень часто упоминаемая тема.
Lightning Network, одно из наиболее популярных решений проблем масштабируемости для Биткоина, равно как и для многих других блокчейнов.
Полные ноды Биткоина, статистика по комиссиям Биткоина, графики, графики и еще раз графики.
Индекс энергопотребления Биткоина (на момент публикации майнинг биткоинов потребляет столько же энергии, сколько Перу)
Проницательное эссе от Gwern на тему разрозненности и неэлегантности Биткоина.
При желании вы сможете найти множество дополнительных материалов на странице Джеймсона Лоппа (Jameson Lopp).
Эфириум и разработка смарт-контрактов
После того как вы построили блокчейн и поняли динамику сети Биткоин, пришло время вплотную заняться Эфириумом.
Вы уже знаете, как блокчейн и правило Proof-of-Work обеспечивают распределенное решение задачи византийских генералов в peer-to-peer сетях. Но платежная система – это лишь одна из возможных реализаций подобного блокчейна. Виталику Бутерину, создателю Ethereum, в 2013 году пришла в голову идея: что, если использовать блокчейн для создания децентрализованного компьютера?
В сети Эфириум вы платите майнерам за выполнение ваших программ на распределенной виртуальной машине. Это значит, что вы можете производить вычисления любой сложности с помощью Тьюринг-полного (в отличие от кода Биткоина) языка программирования. Очевидно, что с помощью этого метода можно создавать в том числе и платежные системы. Соответственно, Эфириум предоставил расширенную по сравнению с Биткоином функциональность и дал старт новой волне инноваций.
Мы подошли к смарт-контрактам – так называются программы, запускаемые на подобных виртуальных машинах. В ходе выполнения программы смарт-контракт может напрямую взаимодействовать с криптовалютой блокчейна. То есть вы можете создать финансовые контракты, которые автоматически обеспечивают сами себя. Это совершенно потрясающая идея, на основе которой можно реализовать абсолютно футуристические идеи.
Появление Эфириума привело к целой волне ICO и притоку разработчиков приложений на основе блокчейнов. Сегодня Ethereum является второй по популярности криптовалютой после Биткоина, у него сильнейшая команда, в которой более чем в 10 раз больше разработчиков, чем у следующего за ним конкурента, наиболее развитый инструментарий, и поэтому огромное количество проектов и ICO построено именно на основе Эфириума. Также он давно пользуется мощнейшей поддержкой сообщества. Если вы занимаетесь блокчейн-разработкой, вероятнее всего, вы пишете код смарт-контрактов для Ethereum. И даже если это не так, имеет смысл знать, что происходит в этой сфере.
Начнем с более развернутого объяснения Эфириума:
Идеи, лежащие в основе Эфириума, привели к целой волне инноваций в области криптоэкономики. Изучите идеи, послужившие основой для создания децентрализованных автономных организаций (DAO) и сопутствующие им футуристические мечты.
Так, довольно фантазий, вернемся к техническим деталям.
Здесь находится отличный обзор желтой книги Эфириума и его составляющихот Прити Касиреди (Preethi Kasireddy). Эфириум использует учетную модель в отличие от UTXO-модели Биткоина. Вскоре вы поймете, почему эта модель упрощает написание смарт-контрактов.
Лучший способ познакомиться с Эфириумом (как и с любой другой технологией) – реализовать на нем несколько небольших проектов.
Основным языком программирования Эфириума является Solidity – статически типизированный, похожий на jаvascript язык с множеством шероховатостей и спорных решений. Как только более надежные языки – например, Viper – будут готовы к использованию, они смогут заменить Solidity, но сегодня именно он является своеобразным эсперанто при разработке смарт-контрактов. По сути, это jаvascript Эфириума, и вам нужно его изучить (вместе с его подводными камнями).
Я рекомендую вам начать с пособия CryptoZombies. Это очень качественное пособие, похожее на материалы от Codecademy, в котором описаны основы разработки на Solidity.
Теперь, после того как вы немного подогрели свой интерес, приступим к собственно разработке.
Аналогом “hello world” в мире Эфириума является разработка ERC-20 токена. В качестве первой инструкции по этому процессу я рекомендую этот материал.
Remix – это браузерный редактор и компилятор Solidity. По сути, это тренажер разработки в среде Ethereum, поэтому я рекомендую с этого момента все практические занятия выполнять в нем. Вам также стоит поднять локальный блокчейн и опробовать инструментарий Эфириума. Это пособие поможет вам построить блокчейн и расскажет обо всех его компонентах.
На следующем этапе я бы построил систему голосования. Назовем ее Первое Приложение Эфириума. У Карла Флерша (Karl Floersch) есть отличный гайд по разработке безопасной системы голосования по схеме «коммит-раскрытие».
Отлично, теперь небольшая проверка: смоделируйте безопасную игру, в которой два игрока смогут безопасно сделать ставки на результат подбрасывания монетки. На этот раз я не даю вам инструкций, реализуйте ее самостоятельно. Подумайте о том, каким образом участники могут мошенничать? Какие могут быть атаки на эту игру? Можете ли вы обеспечить добросовестное поведение обоих игроков? Здесь вы найдете несколько ценных советов.
Безопасность смарт-контрактов
В разработке блокчейнов важнейшую роль играет безопасность. Смарт-контракты несколько раз подвергались разрушительным взломам, таким как взлом DAO, взлом Parity, и последующий взлом Parity 2 (на этот раз даже с фирменной футболкой). Если вы хотите писать смарт-контракты, то вам обязательно нужно изучить аналитику по всем этим случаям взлома.
Дело в том, что смарт-контракты крайне сложно правильно реализовать. Несмотря на то что инструменты разработки улучшаются, устраняя возможность атак данных типов, все эти атаки стали возможны из-за ошибок в программном коде. Смарт-контракты являются также причиной появления многих труднонаходимых ошибок, таких как фронтраннинг или безопасная генерация случайных значений.
Как у разработчика смарт-контрактов, ваше стремление к безопасности должно граничить с паранойей. Здесь не подходит правило Кремниевой долины “move fast and break things” (“действуй быстро и ломай все, что мешает”). Это значит, что код, обрабатывающий денежные потоки, должен быть вначале обработан статическими анализаторами типа Oyente или Securify, затем тщательно протестирован, и в конце отправлен на проверку опытному аудитору в области смарт-контрактов. Вам также стоит ориентироваться на уже проверенные программные компоненты, например, открытые контракты OpenZeppelin.
Для развития навыков в области безопасности, пройдите The Ethernaut, игру от OpenZeppelin, в которой нужно отыскать и устранить уязвимости в смарт-контрактах. Многие из описанных уязвимостей привели к реальным атакам на смарт-контракты.
У Фила Дайана (Phil Daian) тоже есть отличный набор заданий на взлом смарт-контрактов под названием Hack This Contract.
После этого, я крайне советую вам полностью прочитать Лучшие практики смарт-контрактов (Smart Contract Best Practices), собранные ConsenSys. Вам еще не раз придется возвращаться к этому документу в своей карьере разработчика смарт-контрактов. Экспертам в области безопасности стоит ознакомиться с материалами из этой подборки.
Часть 3
В этой части мы расскажем о том, как стать профессиональным разработчиком блокчейнов, приведем список полезных материалов, а также компаний, в которых можно получить работу.
Переходим к профессиональной разработке
На этом этапе вам стоит отказаться от Remix и перейти на серьезные инструменты разработки Solidity.
Большинство разработчиков рекомендуют использовать текстовые редакторы VSCode или Atom, так как в них есть неплохие плагины для Solidity. Для взаимодействия с локальным блокчейном вы можете использовать Ganache (бывший TestRPC), а также Truffle framework для запуска jаvascript тестов и настройки взаимодействия.
Самое время обратить внимание на IPFS, который можно использовать в качестве полностью децентрализованного файлового хранилища, гораздо более дешевого, чем блокчейн Эфириума. Вот небольшое описание проекта от его создателя, Хуана Бенета (Juan Benet):
Для работы с полными нодами Эфириума и IPFS большинство разработчиков советуют использовать Infura. Etherscan и ETH Gas Station предоставляют полезную статистику работы сети Эфириума.
После того как у вас полностью собраны Web3 инструменты, попробуйте запустить Dapp (децентрализованное приложение). Это пособие дает отличный обзор применения Node в связке с Postgres на стороне сервера, а здесь вы узнаете, как создать полностью децентрализованное приложение с использованием IPFS в качестве слоя хранения данных.
Реализация собственных проектов
Сейчас вы должны уже неплохо разбираться в технических особенностях. Пора переходить к фактической разработке и реальному участию в жизни блокчейн-сообщества.
Начните разрабатывать собственные проекты. Если у вас есть какая-то захватывающая идея, реализуйте ее, и убедите остальных присоединиться к вам. Если у вас еще нет идеи, или вы просто не хотите этим заниматься, есть много качественных проектов с открытым кодом, которые приветствуют любую помощь. Хорошим местом для первых шагов в самостоятельной разработке смарт-контрактов может стать OpenZeppelin.
Но я бы все-таки порекомендовал найти активно развивающийся проект, поклонником которого вы являетесь. Зайдите к ним в Slack или Rocketchat – обычно, разработчики охотно там отвечают. Предложите помощь и попросите себе несколько небольших задач (или поищите нерешенные задачи в их Github).
Учтите, что хоть я и делаю основной упор на разработку протоколов и смарт-контрактов, в блокчейн-компаниях часто требуются и веб-разработчики для настройки основного функционала. Эти роли часто пересекаются с блокчейнами, поэтому важно понимать, как они работают. Однако, работа большинства инженеров в блокчейн-стартапах заключается в поднятии веб-сервера Python, создании интерфейса на React, а взаимодействие с блокчейном может составлять лишь небольшую ее часть. Вам необязательно нужно специализироваться на разработке смарт-контрактов – на самом деле, это лишь часть работы над блокчейном.
Помимо проектов с открытым кодом, постоянно проводится большое количество блокчейн-хакатонов. У многих проектов есть открытый Slack, а у самого Эфириума – очень активный канал Gitter, в котором постоянно сидит много разработчиков. По мере погружения в эту сферу, вы найдете единомышленников с опытом, сопоставимым с вашим – неважно, в Slack, Telegram или Gitter. Ищите своих людей и продолжайте учиться.
Как ориентироваться в блокчейн-сообществе
Лучший способ узнать блокчейн – это самостоятельно погрузиться в этот мир. Читайте и слушайте самых умных людей, особенно прошлые их материалы. Когда я хотел узнать что-то новое, я всегда действовал по этому сценарию и добивался успеха.
В сети есть и много хорошего контента по блокчейну, и много плохого. Ниже приведен список ресурсов, которые я рекомендую изучить.
Информационные каналы
Есть три прекрасных подкаста: Software Engineering Daily Blockchain interviews, в которых есть много технической информации начального уровня по разным темам, в том числе и криптовалютам. Также я могу посоветовать Epicenter и Unchained – думаю, вам будет интересно прослушать немало предыдущих эпизодов. Conspiratus – еще один интересный технический подкаст. На вашем месте я бы подписался на них все.
Есть несколько приличных Youtube каналов (хотя много и мусора). Ethereum Foundation публикует презентации с Devcon3. Blockchain at Berkeley выкладывает записи многих своих лекций, в которых можно найти отличные технические обзоры. Decypher Media размещает обсуждения и обзоры белых книг и пособий. Jackson Palmer выпускает отличные еженедельные обзоры, они содержат меньше технических подробностей, но сделаны очень качественно.
Чтение и общение онлайн
Онлайн-общение на тему блокчейнов ведется, преимущественно, в двух местах: Reddit и Twitter. Большинство сабреддитов содержит множество бесполезной информации плохого качества. На r/Ethereum поддерживается стабильно высокое качество информации (есть еще несколько неплохих сабреддитов для отдельных криптовалют). Большинство же сабреддитов по преимуществу оккупированы болтунами, и не стоят вашего внимания. Держитесь подальше от сабреддитов, посвященных Биткоину. У Биткоина на данный момент одно из наиболее токсичных сообществ, и Reddit – не исключение.
В Twitter намешано много всего. Хорошо это или плохо, но большинство представителей блокчейн-сообщества обитают именно там. Твиттер блокчейн-сообщества для меня – загадка, но со временем я выработал некую стратегию в его отношении. С моей точки зрения, в блокчейн-сообществе присутствует 5 типов людей: разработчики, предприниматели, журналисты, трейдеры, и «лидеры мнений».
Любой ценой избегайте «лидеров мнений». Предприниматели могут быть полезными, но в основном они заняты продвижением собственных проектов. Инвесторы обычно говорят о ценах и популярных проектах. Возможно, это именно то, что вам нужно. Журналисты обычно говорят об основных событиях дня, и я бы советовал держаться от них подальше – вряд ли вам нужен анализ всех актуальных событий в реальном времени. Это может быть полезно в том случае, если вы активно заняты трейдингом, но если вы собираетесь стать блокчейн разработчиком, большая часть информации в реальном времени только отвлекает.
Уделите наибольшее внимание разработчикам. Сейчас они – самые важные люди. Именно они двигают технологию вперед.
Вот несколько представителей каждой категории (если хотите заполнить свою ленту новостей, посмотрите, на кого подписаны эти люди в Twitter):
Разработчики:
Виталик Бутерин, Эфириум
Зуко Уилкокс (Zooko Wilcox), Zcash
Ник Сабо (Nick Szabo), изобретатель смарт-контрактов
Влад Замфир (Vlad Zamfir), Эфириум
Марко Сантори (Marco Santori), Cooley LLP
Риккардо Спаньи (Riccardo “fluffypony” Spagni), Monero
Мэтт Листон (Matt Liston), Gnosis
Предприниматели
Баладжи Шринивасан (Balaji Srinivasan), Earn.com
Эрик Вурхис (Erik Voorhees), Shapeshift
Инвесторы
Наваль Равикант (Naval Ravikant), MetaStable
Ари Пол (Ari Paul), Blocktower Capital
Линда Сье (Linda Xie), Scalar Capital
Крис Барниск (Chris Burniske), Placeholder
Журналисты
Туур Демеестер (Tuur Demeester), Adamant Research
Лора Шин (Laura Shin), Forbes
С учетом всего сказанного, я бы посоветовал вам минимизировать свое присутствие на Reddit и в Twitter. Если вы журналист или дейтрейдер, есть шанс найти что-то полезное, но чаще всего лента новостей и чат вам не пригодятся. Важная информация будет приходить к вам в свое время. Есть несколько хороших новостных журналов, которые собирают самые важные новости за день или неделю, которые вы сможете изучать в относительно свободное время.
Я советую подписаться на Inside Bitcoin. В нем публикуются самые важные новости из мира криптографии (не только из Биткоина). Token Economy публикует прекрасные еженедельные материалы по токен-проектам, а Week in Ethereum описывает ориентированные на разработчиков события в экосистеме Эфириума.
Скорее всего, вам не потребуется искать новости где-то еще. Сконцентрируйтесь на обучении и практической разработке.
Вам определенно нужно подписаться на лучшие блоги. Большие материалы обычно оказываются самыми стоящими. Из блогов, я рекомендую следующие:
Виталик Бутерин публикует отличные аналитические материалы по блокчейну и криптоэкономическому анализу (также изучите посты его старого блога, Виталик не зря считается одним из лучших умов своего поколения)
Hacking, Distributed публикует аналитику по безопасности блокчейнов от компании Cornell.
Unenumerated — отличный блог Ника Cабо, в котором есть вызывающие и эклектичные эссе о роли криптовалют в обществе.
Money Stuff — дочернее СМИ Bloomberg под руководством Мэтта Левина с четкими и важными аналитическими материалами, затрагивающими рынки, финансовую сферу и новости блокчейнов.
Влад Замфир публикует взвешенные и выдержанные прогнозы по частным и публичным блокчейнам.
Крис Барниск выложил серию отличных постов о методах оценки криптографических активов.
Джеймсон Лопп (Jameson Lopp) публикует прекрасные технические посты об экосистеме Биткоина с точки зрения разработчика программного обеспечения.
Great Wall of Numbers от Тима Суонсона (Tim Swanson), с его твердыми и рассудительными разоблачениями биткоин-мании, особенно в корпоративной сфере.
Книги и курсы
Если вы хотите придерживаться более структурированного подхода при изучении данного материала, я могу порекомендовать несколько качественных книг и курсов.
Лучшая книга на тему блокчейнов в целом – это Bitcoin and Cryptocurrency Technologies (с дополнениями из курса Princeton Coursera). Я посоветую еще одну книгу, Mastering Bitcoin от Андреаса Антонопулоса, а также планируемую к выходу Mastering Ethereum в соавторстве с сооснователем Ethereum Гэвином Вудом (обе выйдут в издательстве O’Reilly). Единственная не-техническая книгая, которую я могу посоветовать, это Digital Gold от Натаниэла Поппера (Nathaniel Popper). Вся остальная достойная прочтения информация находится в блогах, а не в книгах. Эта сфера меняется с такой скоростью, что ее ключевые участники редко могут выделить время на написание книги, а сами книги к моменту выхода, скорее всего, уже устареют.
Также есть несколько приличных курсов (и множество некачественных). Чуть раньше я уже давал ссылки на пару хороших лекций из Princeton Coursera Course (их видеоверсии есть на YouTube) и из UC Berkeley Decal. Также я слышал, что в Consensys Academy есть несколько хороших материалов для тех, что хочет изучить разработку смарт-контрактов.
Как получить работу
Как я уже говорил, блокчейн стартапы отчаянно нуждаются в сотрудниках. Если вы дошли до этого этапа и выполнили хотя бы половину предложенных заданий, то вы, скорее всего, уже сможете получить работу в этой области. AngelList написали отличную статью о том, как получить работу в сфере криптографии.
Существует несколько хороших агрегаторов публикуемых вакансий в этой сфере:
AngelList crypto startups
BlockchainJobz
Ethereum Jobs
Be in Crypto
Blockchain Job Board
Crypto Jobs List
Google jobs (запрос по блокчейну)
ConsenSys jobs (венчурная студия разработки в среде Ethereum с огромным количеством проектов)
Несколько известных мне перспективных блокчейн стартапов ищут разработчиков:
0x
Dharma Labs
Civic
Также на рынке крипто-вакансий присутствуют несколько крупных компаний:
Coinbase – Google в криптомире – всегда нуждается в сотрудниках.
Stellar и Ripple, если вы хотите работать над криптовалютами, ориентированными на использование корпорациями.
Square внедрил некий блокчейн, но я неуверен, ищут ли они в данный момент сотрудников.
IBM, Visa, или JP Morgan, если вас привлекают традиционные компании
Однако, лучший способ получить работу в компании, на мой взгляд – это найти интересующий вас проект и обратиться к ним напрямую. Большинство блокчейн-команд не против нанять правильного сотрудника на удаленную работу. Многие разработчики доступны в Twitter, Github или в своих открытых каналах Slack. Если у вас есть хорошее портфолио и/или вы способны продемонстрировать свои технические навыки, вы сможете произвести впечатление на многих – надо лишь проявить инициативу.
И это все, что я могу вам рассказать. Если вы выполнили все вышеописанное, то должны быть уже неплохо подготовлены. Возможно, даже лучше, чем я в свое время.
Кроличья нора
То, что я вам показал – лишь начало. Криптовалюты по-прежнему находятся на ранних этапах развития, и я абсолютно убежден, что это самая быстрорастущая сфера, в которой только можно работать. Я уверен, что этот гайд устареет через год и что я не смог рассказать об огромном количестве потрясающих проектов. Но если вы решите работать и развиваться в этой сфере, то со временем вы найдете эти проекты самостоятельно.
Не останавливайтесь на достигнутом. Не переставайте учиться. Растите над собой.
https://cryptocurrency.tech/ (C)
Не является индивидуальной инвестиционной рекомендацией | При копировании ссылка обязательна | Нашли ошибку - выделить и нажать Ctrl+Enter | Отправить жалобу