Я написал этот пост, чтобы задокументировать свой путь изучения концепций блокчейна и технологий Ethereum, не забывая при этом о своих коллегах, «плохо знакомых с блокчейном». Рекомендации по наращиванию мощности основаны на моем свободном обучении, описанном во второй части этой статьи. Используйте это как руководство, чтобы начать работу прямо сейчас, или добавьте в закладки и исследуйте дополнительные темы по мере появления разговоров о блокчейне с нашими клиентами.

Как и многие из вас, занимающихся разработкой и интеграцией корпоративного программного обеспечения, я отказался от концепции блокчейна в качестве темы исследований и разработок или связал ее с темной сетью. Случайное любопытство удовлетворила лента из заголовков о Шелковом пути и Mt.Gox бирже.

Я не помню, какой конкретный катализатор меня зацепил. Возможно, это была поездка в Нью-Йорк, чтобы увидеть, как мой друг начал заниматься наукой о данных и майнингом криптовалют. Или, возможно, это был День Microsoft в Booz Allen в мае, когда они подтвердили Microsoft ♥ Linux и продемонстрировали 7-минутную установку блокчейна в Azure. Как я узнал, я переключил свое внимание на экосистему блокчейна Ethereum и начал смотреть на наш мир через линзу блокчейна с вопросом а что, если? и почему бы нет?" вопросов. Если вы не уверены, что это новый Интернет, прочтите главу 3 книги Отрасли будущего.

Шумиха вокруг блокчейна находится в пузыре. Единственным прибыльным бизнесом на основе блокчейнов пока являются обмены криптовалют. Но парадигма остается. Технология блокчейн представляет собой форму научного прорыва, которая решает проблему доверия между двумя сторонами без привлечения посредников. Я вижу два немедленных воздействия на корпоративное программное обеспечение. Для развития коричневых полей это интеграция Web 2.0 и унаследованных систем с распределенными реестрами и приложениями (dApps) на основе блокчейн. Для разработки с нуля это переход к новой архитектурной парадигме для достижения требований безопасности и конфиденциальности за счет децентрализованного хранения данных и обработки транзакций.

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

Ваш путь обучения

Если вы начинаете с нуля, подумайте о том, чтобы связать парадигму блокчейна с концепциями, которые вы понимаете. По сути, блокчейн - это децентрализованная база данных. Начните с этой серии Forbes« Освобожденные », которую ведет Лаура Шин. Гости эпизода, Аманда Гаттерман (ConsenSys) и Джейми Смит (Bitfury), являются профессиональными коммуникаторами и объясняют ключевые концепции простым языком. Примеры: представьте себе блокчейн как железнодорожный путь между двумя точками. Токен блокчейна - это железнодорожный вагон, в котором перевозятся любые товары, которые вы на него кладете. Другой: думайте о безопасности блокчейна как о хранении фрагментов ваших ценностей в тысячах домов в вашем районе. Чтобы вор мог украсть ваши активы, ему нужно будет ворваться во все дома, чтобы собрать все части.

Подкаст Тима Ферриса с Ником Сабо, который, кстати, придумал термин умный контракт, отлично справляется с разделением и взаимосвязью ключевых концепций блокчейна. Эпизод нацелен на нетехническую, но любопытную интеллектуальную аудиторию и охватывает множество вопросов, включая Биткойн, криптовалюты, Эфириум и его отличия от Биткойн, Первоначальные предложения монет (ICO) и т. Д. .

Я очень рекомендую Цифровое золото Натаниэля Поппера - технологического репортера New York Times. Книга захватывающая. Натаниэль рассказывает захватывающую историю рождения Биткойна, которым руководила небольшая группа шифровальщиков. Переходы плавные, и вы получаете нужный уровень детализации, чтобы ощутить чувство надежды, опасности, волнения, приключений и технологического прорыва. Я слышал, что новая книга Андреаса Антонопулоса Интернет денег может стать хорошим продолжением.

В качестве комплимента Цифровому золоту рассмотрите документальный фильм Netflix Банкинг на биткойнах (трейлер). История кажется немного изменчивой, как если бы фильм был снят в спешке, поэтому я не рекомендую это в качестве отправной точки. Фильм хорошо передает эмоции пионеров биткойнов и агонию первых последователей.

Экосистемы Биткойн и Эфириум изначально предлагают ограниченную ценность для корпоративных клиентов: транзакции в общедоступных блокчейнах видны всем, а характеристики производительности не подходят. Корпоративным клиентам нужна возможность запускать частные или гибридные решения на основе блокчейнов путем создания вычислительных узлов в рамках какого-либо надежного консорциума, защищенного от общедоступных. Я вкратце изучил Hyperledger Fabric (трейлер) и погрузился в Quorum (трейлер) корпоративных блокчейн-решений с открытым исходным кодом. Для Кворума я рекомендую эту колоду в качестве обзора и прочтения проекта Wiki. Захватывающим нововведением в реализации Quorum является интеграция уровня безопасности с нулевым разглашением (ZSL), изначально масштабно используемого Zcash. ZSL позволяет проводить доверенные транзакции без участия третьей стороны, удаляя при этом информацию (а не только шифрование) об отправителе, получателе и сумме транзакции. Это похоже на научную фантастику, и это красноречиво объяснено здесь. Я настоятельно рекомендую этот подкаст с техническим директором Zcash Натаном Уилкоксом, чтобы понять, как транзакции могут быть проверены без публикации информации с помощью zk-SNARK с нулевым разглашением.

На этом завершается нетехническая часть этого поста. Если у вас есть какие-то технические темы, продолжайте читать. Вот тут и становится интересно. Если вы взлетаете, спасибо за чтение, дайте пять и подписывайтесь на меня в Twitter (iFirebrand) за обновлениями.

Немного более технический

Чтобы по-настоящему понять основы протоколов блокчейна, вам необходимо прочитать и понять белую книгу Биткойна и белую / желтую бумагу Ethereum. Это не для всех. Прити Кэсиредди переварил белую и желтую документацию Ethereum вместе с некоторым кодом и написал выдающуюся статью о том, как работает Ethereum. Прочтите, используйте, затем прочтите еще раз.

Недостаточно знать; мы должны подать заявку. Одного желания недостаточно; мы должны сделать. - Иоганн Вольфганг фон Гете

Чтобы понять блокчейн, вы должны повозиться и применить теорию на практике. Это означает настройку ваших собственных частных блокчейнов с использованием различных клиентов, реализующих протокол Ethereum (например, Parity, geth), экспериментирование с различными средами разработки (например, Ethereum Studio, Remix), изучение инструментов ( например, Metamask, TestRPC), кошельки и фреймворки (например, Truffle, web3.js), создание и публикация ваших собственных смарт-контрактов (например, в Solidity) и изучение экосистема распределенных приложений (dApps) (например, распределенный DNS: ENS, распределенное хранилище: Swarm).

Чтобы начать обучение с помощью обучающих колес, я рекомендую курс Ethereum Blockchain Developer на Udemy. Я принял это и узнал достаточно, чтобы получить прочную основу для дальнейшего соло-исследования. Вы можете работать с 1,5-кратной скоростью для практических упражнений и с 2-кратной скоростью для лекций. Сначала я дал курсу 2,5 звезды из-за некоторых неровностей, но после просмотра двух других курсов я вернул свою оценку до 4,5 звезды. Курс уже устарел (например, в фреймворке Truffle теперь есть отладчик, интегрированный TestRPC, клиент Mist теперь называется Ethereum Wallet и т. Д.). Тем не менее, основы остаются неизменными и хорошо подготовят вас к урокам.

Смарт-контракты облегчают транзакции между сторонами. Классическая аналогия - торговый автомат. Ваш денежный депозит сверяется с выбором, сдача возвращается, и продукт раздается. Отправка биткойнов от человека A к B - это пример очень простого смарт-контракта. Официальные руководства по Ethereum - хорошее место, чтобы почувствовать более сложный код и поработать со смарт-контрактами. Я рекомендую их, когда вы ознакомитесь с Автостопом по смарт-контрактам в Ethereum от Мануэля Араоза и узнаете, как взаимодействовать с тестом (например, с сетью Ropsten) или с частным блокчейном. В первых двух уроках вы создадите свою собственную криптовалюту и контракт на краудфандинг. Когда вы будете готовы интегрировать смарт-контракты с веб-приложениями, рассмотрите этот учебник Создание своего первого dApp. Этого достаточно, чтобы вы начали. Используйте это руководство, чтобы помочь вам на этом пути. Далее следует рассказ о том, как я пил из пожарного шланга.

Мой путь обучения

Первоначальный поток знаний исходил от подкастов, информационных бюллетеней, ключевых слов блокчейна Flipboard, некоторых Reddit, Twitter (ручки ниже), Hacker News, досок StackExchange, одержимости Quartz, Meetup Groups, Booz Allen внутренние события и беседы 1: 1 с людьми на местах. Около недели я занялся майнингом криптовалюты. Майнинг - это процесс защиты цепочки блоков путем вычисления и запечатывания блоков, содержащих транзакции. Без специализированного оборудования (ASIC) у меня не было шанса заработать какие-либо вознаграждения (например, биткойны, эфир) за свой вклад в майнинг (в отличие от этих парней). В процессе я загрузил и запустил полный биткойн-узел, играл с различным программным обеспечением для майнинга и участвовал в майнинг-пулах для различных валют. Попробуйте это, если хотите узнать, сколько тепла может выделять ваш компьютер при работе на максимальной мощности. Эти ребята в Сибири отапливают свой коттедж теплом от добычи. Кстати, большинство основных блокчейнов в настоящее время используют метод доказательства работы для запечатывания блоков транзакций. Выполнение proof-of-work требует больших вычислительных ресурсов и выделяет много тепла. Отрасль переходит на энергоэффективные методы консенсуса для проверки транзакций (например, доказательство доли или доказательство доверия).

Я просмотрел несколько видеороликов на YouTube. Есть много объяснений блокчейнов, много способов разбогатеть, но я нашел интервью с Виталиком Бутериным полезным - особенно по более сложным темам, таким как Доказательства с нулевым разглашением.

Курс Udemy, о котором я упоминал ранее, помог мне изучить основы операций с блокчейном и развертывания смарт-контрактов в Ethereum. Я начал писать простые смарт-контракты на языке программирования Solidity. Solidity в некоторой степени основан на JavaScript со многими ключевыми отличиями (например, Solidity статически типизирован), что позволяет запускать его на виртуальной машине Ethereum. Последний раз я умело использовал JavaScript между 1997 и 2000 годами. Этот Курс JavaScript помог мне быстро освоиться и понять разницу между Solidity и JavaScript. Я также уловил важные языковые нюансы, такие как использование обещаний для аккуратной обработки сбоев в асинхронных операциях. По пути я наткнулся на несколько замечательных статей по разработке программного обеспечения, таких как Практическое функциональное программирование Стивена Хайделя.

Изначально я использовал IDE Remix для написания контрактов и экспериментов с ними. Remix предоставляет виртуальную машину Javascript в браузере, или вы можете подключиться к существующему процессу блокчейна через поставщика Ethereum JavaScript API (web3.js). Я развернул и протестировал смарт-контракты с использованием локального узла geth (Ethereum) и развернул через Mist (Ethereum Wallet). Использование клиента с пользовательским интерфейсом для развертывания и вызова методов контракта помогло мне визуализировать поток. Позже я включил развертывание и выполнение из командной строки. Для некоторых задач я начал использовать TestRPC, который имитирует запуск узла блокчейна без фактического майнинга блоков. Затем я перешел к интеграции действий и ответов смарт-контрактов в веб-страницы, используя библиотеку web3.js с надстройкой Metamask для Chrome. Metamask перехватывает трафик Ethereum и позволяет вам взаимодействовать с блокчейном (локальным или внешним) без фактического запуска узла Ethereum. Попутно я обнаружил Truffle Framework: так называемый швейцарский армейский нож Ethereum. Платформа разработки содержит уровень абстракции для облегчения взаимодействия с блокчейном. Теперь у него есть (текстовый) отладчик транзакций, и команда только что выпустила довольно симпатичную личную структуру блокчейна: Ganache. Фреймворк Truffle имеет набор ящиков, при распаковке при запуске проекта они создают структуру проекта с правильно расположенными компонентами разработки (например, Webpack, React, Angular и т. Д.). Это позволяет вам сосредоточиться на написании кода, связанного с блокчейном. К вашему сведению, при распаковке ящиков перезаписываются все файлы в целевом каталоге, поэтому часто git commit.

По мере того, как вы углубляете свое понимание блокчейнов, вы неизбежно начнете рассматривать различные реализации протоколов блокчейнов. Спецификации протоколов часто документируются на белой и желтой бумаге и содержат массу математических выкладок. Чтобы пройти через некоторые из них, мне пришлось вытащить свои книги из аспирантуры и освежить свои знания по теории множеств, операциям над множеством, формальной спецификации и формальной логике, доказательствам и машине Тьюринга (например, Ethereum - это распределенная полная машина по Тьюрингу. ). Спасибо MSE / MSIT-SE в Карнеги-Меллон за эти базовые знания. Поскольку я глубоко погружался в zk-SNARK для Ethereum и Quorum, мне приходилось полагаться на математику, чтобы понять суть этого, этого и этого.

По рекомендации друга я занялся исследованием разрешенной реализации Дж. П. Морганом Ethereum. Это хороший пример реализации блокчейна, подходящий для корпоративных клиентов, которым требуется конфиденциальность транзакций и контрактов. Диаграмма взята с этой страницы вики Quorum. Суть архитектуры - разделение частных контрактов и публичной книги, видимое всем участникам консорциума. Контракты видны только сторонам, участвующим в сделке. Узлы кворума содержат блоки с транзакциями, видимыми для всех участников консорциума, но состояние контракта зашифровано с помощью механизма безопасности Enclave и хранится в виде хэша в цепочке блоков. Только стороны, участвующие в транзакции, могут расшифровать хэш и принять меры в отношении состояния транзакции. В настоящее время ведется доказательство реализации концепции для включения zk-SNARK для полной защиты транзакций и решения проблемы двойных расходов, которая в настоящее время устраняется на уровне приложения, а не на уровне протокола.

Если вы попадаете в это пространство, я рекомендую построить что-нибудь, чтобы ускорить процесс обучения. В моем случае я создаю децентрализованное приложение для облегчения однорангового заимствования. Это применимо к любому предмету, который можно оцифровать, но представим, что у меня есть набор детских книг на украинском языке, которые я готов одолжить другим родителям. Владелец книги заключает смарт-контракт с заемщиком с помощью приложения. Заемщик предоставляет залог и комиссию за заимствование книги на определенный период времени. Затем заемщик может вернуть книгу и получить обратно залог или передать ответственность за книгу другому родителю. Когда совершается эта транзакция, первоначальный заемщик получает назад свое обеспечение, плюс ему выплачивается комиссионный сбор. Новый заемщик берет на себя ответственность за книгу, выставляя залог и уплачивая два сбора: комиссию заемщика владельцу книги и комиссию, которая нашла. Цикл продолжается до тех пор, пока книга не будет возвращена владельцу (и залог не будет возвращен последнему заемщику) или пока в контракте не будет исключения и залог не будет выплачен владельцу книги. Я рекомендую начальные индивидуальные решения с этим уровень сложности, чтобы освоиться с написанием и отладкой контрактов на Solidity. Диаграмма выше представляет конечный автомат решения.

Меня как архитектора решений в области распределенных систем интересуют шаблоны проектирования блокчейнов. На этой странице, посвященной дизайну dApp, перечислены соображения и различные подходы к дизайну. Вот колода некоторых паттернов и связанная с ними беседа (от DevCon One).

Я также рекомендую купить немного криптовалюты, чтобы испытать процесс. Выяснение того, как использовать кошельки и как проводить транзакции, станет жизненным навыком, которому вы должны научить молодое поколение. Или подождите пару лет, и они вас научат. Это может быть Биткойн или что-то еще. Я использовал Близнецы.

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

Куда идти дальше?

Это быстро развивающаяся область. Блокчейны часто разделяются (т. Е. Разветвляются) на иногда несовместимые ветви, чтобы приспособиться к ожидаемым проблемам роста (например, чтобы обрабатывать транзакции быстрее) или непредвиденным разветвлениям (например, когда происходит крупное ограбление криптовалюты или взлом). Инструменты разработки быстро развиваются, и даже меняется терминология. Например, в более позднем выпуске Ethereum встроенная функция удаления контракта из блокчейна была переименована с suicide на самоуничтожение.

В этом сообщении есть хороший источник дополнительных ссылок, по которым можно следить и изучать. Я изменю сообщение, чтобы добавить дополнительные источники. На данный момент я рекомендую следующие учетные записи Twitter:

@ NickSzabo4 | @Bchaininsider | @Lopp | @Twobitidiot | @Iam_preethi | @EthereumJoseph | @IFirebrand

Если вам понравилось читать, я был бы признателен за набор «пятерок» 👏🏼, чтобы помочь другим найти эту статью. Спасибо за ваше время.