Авторитетное руководство по разработке блокчейнов (часть 2)

Авторитетное руководство по разработке блокчейнов

Криптовалюты, ICO, волшебные интернет-деньги – все это звучит очень привлекательно. И вы, мой любознательный разработчик, конечно же, хотите с головой окунуться во все это безумие. Но с чего начать?

В предыдущей части мы рассказали о причинах, по которым разработка блокчейнов на сегодняшний день является крайне перспективной сферой деятельности, а также поговорили о том, какие базовые знания понадобятся для более глубокого ее изучения.

В этой части мы расскажем о двух самых популярных криптовалютах – Биткойне и Эфириуме.

Теоретические основы Биткойна

В октябре 2008 года Сатоши Накамото опубликовал белую книгу, в которой описал протокол децентрализованной цифровой валюты. Он назвал этот протокол Bitcoin.

Прежде чем приступить к изучению основных идей блокчейнов, вам нужно начать с Биткойна и понять изначальное видение Сатоши.

Для начала я рекомендую познакомиться с протоколом Proof-of-Work и правилом выбора форка (также известном как консенсус Накамото). Начните с этого видео:

Рекомендую посмотреть еще несколько видеоматериалов, чтобы эта идея прочно закрепилась в вашем сознании.

Прекрасно. А эта статья поможет сформировать более глубокое и цельное понимание того, как работают важнейшие компоненты сети Биткойна.

Строим блокчейн

Теперь, когда вы получили нужные знания, можно попробовать собрать собственный блокчейн на основе Proof-of-Work. Не бойтесь, это только звучит страшно. Чуть ниже я перечислю несколько ресурсов, которые смогут вам помочь.

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

Источник и слайды лежат здесь.

Вы можете найти еще много примеров реализации блокчейнов на разных языках программирования. Теперь постройте свой блокчейн и порадуйтесь тому, что он в целом работоспособен.

К этому моменту у вас уже должно сложиться некоторое представление о том, как разработать простую платежную систему на основе блокчейна (как Биткойн, например). Кроме того, вашего опыта должно быть достаточно для чтения и понимания белой книги Биткойна в оригинале.

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

Если вы добрались до этого этапа, вы сможете изучить заголовки блоков Биткойна и понять, что каждый из них означает. Вы также сможете попробовать поработать с программой анализа блоков Биткойна и научиться отслеживать необработанные транзакции.

Это хороший момент, чтобы ознакомиться с историей Биткойна и других криптовалют. В видео ниже, предоставленном UC Berkeley Decal, вы найдете отличный обзор этой темы:

Вот некоторые дополнительные ресурсы:

Эфириум и разработка смарт-контрактов

После того как вы построили блокчейн и поняли динамику сети Биткойн, пришло время вплотную заняться Эфириумом.

Вы уже знаете, как блокчейн и правило Proof-of-Work обеспечивают распределенное решение задачи византийских генералов в peer-to-peer сетях. Но платежная система – это лишь одна из возможных реализаций подобного блокчейна. Виталику Бутерину, создателю Ethereum, в 2013 году пришла в голову идея: что, если использовать блокчейн для создания децентрализованного компьютера?

В сети Эфириум вы платите майнерам за выполнение ваших программ на распределенной виртуальной машине. Это значит, что вы можете производить вычисления любой сложности с помощью Тьюринг-полного (в отличие от кода Биткойна) языка программирования. Очевидно, что с помощью этого метода можно создавать в том числе и платежные системы. Соответственно, Эфириум предоставил расширенную по сравнению с Биткойном функциональность и дал старт новой волне инноваций.

Мы подошли к смарт-контрактам – так называются программы, запускаемые на подобных виртуальных машинах. В ходе выполнения программы смарт-контракт может напрямую взаимодействовать с криптовалютой блокчейна. То есть вы можете создать финансовые контракты, которые автоматически обеспечивают сами себя. Это совершенно потрясающая идея, на основе которой можно реализовать абсолютно футуристические идеи.

Появление Эфириума привело к целой волне ICO и притоку разработчиков приложений на основе блокчейнов. Сегодня Ethereum является второй по популярности криптовалютой после Биткойна, у него сильнейшая команда, в которой более чем в 10 раз больше разработчиков, чем у следующего за ним конкурента, наиболее развитый инструментарий, и поэтому огромное количество проектов и ICO построено именно на основе Эфириума. Также он давно пользуется мощнейшей поддержкой сообщества. Если вы занимаетесь блокчейн-разработкой, вероятнее всего, вы пишете код смарт-контрактов для Ethereum. И даже если это не так, имеет смысл знать, что происходит в этой сфере.

Начнем с более развернутого объяснения Эфириума:

Идеи, лежащие в основе Эфириума, привели к целой волне инноваций в области криптоэкономики. Изучите идеи, послужившие основой для создания децентрализованных автономных организаций (DAO) и сопутствующие им футуристические мечты.

Так, довольно фантазий, вернемся к техническим деталям.

Здесь находится отличный обзор желтой книги Эфириума и его составляющих от Прити Касиреди (Preethi Kasireddy). Эфириум использует учетную модель в отличие от UTXO-модели Биткойна. Вскоре вы поймете, почему эта модель упрощает написание смарт-контрактов.

Лучший способ познакомиться с Эфириумом (как и с любой другой технологией) – реализовать на нем несколько небольших проектов.

Основным языком программирования Эфириума является Solidity – статически типизированный, похожий на JavaScript язык с множеством шероховатостей и спорных решений. Как только более надежные языки – например, Viper – будут готовы к использованию, они смогут заменить Solidity, но сегодня именно он является своеобразным эсперанто при разработке смарт-контрактов. По сути, это JavaScript Эфириума, и вам нужно его изучить (вместе с его подводными камнями).

Я рекомендую вам начать с пособия 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. Вам еще не раз придется возвращаться к этому документу в своей карьере разработчика смарт-контрактов. Экспертам в области безопасности стоит ознакомиться с материалами из этой подборки.

(Продолжение следует)

Источник



Рубрики:Анализ, Важное, Новичкам, Теория, смарт-контракты

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s