Содержание
- Теоретические основы Биткоина
- Строим блокчейн
- Эфириум и разработка смарт-контрактов
- Безопасность смарт-контрактов
В предыдущей части мы рассказали о причинах, по которым разработка блокчейнов на сегодняшний день является крайне перспективной сферой деятельности, а также поговорили о том, какие базовые знания понадобятся для более глубокого ее изучения.
В этой части мы расскажем о двух самых популярных криптовалютах – Биткоине и Эфириуме.
Теоретические основы Биткоина
В октябре 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 – статически типизированный, похожий на 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. Вам еще не раз придется возвращаться к этому документу в своей карьере разработчика смарт-контрактов. Экспертам в области безопасности стоит ознакомиться с материалами из этой подборки.
Источник: cryptocurrency.tech