Блокчейн – инновационная технология, которая стремительно развивается благодаря функциональности, универсальности и потенциалу применения в различных областях жизни. Растет и спрос на специалистов, которые способны написать качественный код и реализовать целую сеть.
С чего начать изучение блокчейна
Новая технология давно вышла за рамки криптовалютных проектов и имеет широкое применение. Особенно это касается приватного блокчейна, который заинтересовал бизнес-компании. Он позволил им расширить функционал, избежать ошибок из-за человеческого фактора, сократить расходы. Внедряются технологии и в государственные проекты разных стран. Так, в Швейцарии с помощью блокчейна было проведено пробное муниципальное голосование, в Грузии технология внедрена в сферу земельных кадастров, а в Эстонии – в экономику.
Изучение технологии интересует большое количество людей, которые условно разделяются на три лагеря:
- те, кто интересуются для создания собственных проектов;
- те, кто желает заработать с помощью написания блокчейна для клиентов;
- энтузиасты, желающие находиться в курсе новой технологии.
В любом случае изучить принципы блокчейна и понять его структуру – значит, шагать в ногу со временем, открывать для себя новые возможности и расширять кругозор.
Создание собственного блокчейна стоит начать с изучения основ криптографии, чтобы развить понимание общих понятий технологии. Блокчейн можно самостоятельно рассмотреть на примере Биткоина (или Эфириума, но он сложнее): открыть кошелек, сделать транзакции, чтобы понять работу изнутри. Стоит дополнительно изучить находящуюся в открытом доступе документацию. Для понимания целостной картины после изученных материалов мы советуем самостоятельно написать простой код-пример, ведь практика – лучший способ изучения.
Руководство по блокчейну
Начать работу с технологией стоит с понимания основ, принципов, концепций и парадигм. И если говорить простыми словами, то блокчейн – это защищенная база данных, которая многократно копируется и хранится на многочисленных узлах по принципу P2P.
Принцип работы
Представьте блокчейн как длинную цепочку, что состоит из блоков, хранящих информацию (например, запись транзакций, как в криптовалюте). Между собой блоки надежно соединены с помощью хеша.
Блокчейн хранится на каждом устройстве, подключенном к сети. Эти устройства называются нодами (узлами), что синхронизируются друг с другом, постоянно обновляют блокчейн. Узлы имеют равные права (одноранговая сеть) и регулируются консенсусным механизмом. Одни из наиболее часто используемых консенсусов – доказательство работы PoW и доказательство владения PoS.
Консенсус определяет:
Проверяют новые блоки и отклоняют недействительные другие участники сети – майнеры. После добавления блоков синхронизируются узлы и блокчейн обновляется. Каждый новый блок вмещает зашифрованные данные предыдущего. Кроме данных, он обязательно содержит цифровую подпись (без нее невозможно записать новые транзакции) и информацию о сделке.
Также консенсус помогает при возникновении спорных ситуаций. Один из самых часто возникающих конфликтов – создание непреднамеренного деления (форка), которое возникает в случае одномоментного добавления двух разных транзакций из одного кошелька майнерами при условии, что транзакции противоречат друг другу. Такие ситуации чаще происходят с Биткоин-кошельками, обусловлено это длительным подтверждением транзакций в сети.
При возникновении ошибочного разветвления в сети Биткоин происходит следующее: ветка, которая развивается активнее, остается, другая же отмирает. Подтверждаются транзакции только в оставшейся ветке. Это происходит примерно за 6 блоков, что продиктовано консенсусом (его можно сравнить с Конституцией или сводом правил блокчейна).
Как создать свою сеть блокчейна
Разобравшись с основами, переходим к созданию блочных сетей. Нужны будут знания азов программирования и желание обучаться. Написать блокчейн можно на основе существующих платформ, например, Эфириума. Другой путь – использование своих навыков в программировании для создания проекта с нуля.
Блокчейн на Ethereum
Создание сети на основе уже существующей платформы – лучшее решение, если вы новичок и мало знакомы с блокчейном. Для этого скачивается GoEthereum (geth) – исходная реализация Ethereum-протокола, что написана на языке GO.
Внимание: чтобы создать свой блокчейн на Ethereum, вам также понадобятся знания программирования, поэтому если вы «чайник» или же ваши познания на уровне школьной программы, для начала изучите кодинг. Полезны будут знания любого объектно-ориентированного языка, например, JavaScript, PHP, Perl, С или C++.
После установки geth создаем новый каталог и заполняем JSON-файл Генезис-блоком. Как это сделать, можно посмотреть на GitHub, где в открытом доступе есть весь код и примеры для написания от руки, или на других специализированных интернет-ресурсах, например, на Хабре.
С помощью geth можно добавлять нужные блоки, кошелек или майнеров, внедрять смарт-контракты, установив SolidityCompiler.
Смарт-контракты
Смарт-контракты, или умные контракты, – это инструмент для заключения коммерческих контрактов на основе блокчейна. Они записываются и остаются в системе навсегда (можно создать и останавливаемый контракт). Их цель – автоматизация процесса, обеспечение безопасности, проверка и исключение ошибок.
Первый и самый главный шаг в создании – выбор платформы. Можно писать их на основе Биткоин (ограниченный функционал), NXT (отличается набором шаблонов для написания, но создать оригинальный продукт на платформе пока невозможно), Ethereum.
При выборе Эфириума готовьтесь писать контракты на языке Solidity, который напоминает JavaScript. Вам потребуется найти или скачать компилятор языка (можно использовать онлайн-версии). Также за создание контрактов придется заплатить токенами ETH, но большие возможности делают эту платформу передовой.
Писать контракты можно несколькими способами, например, используя локальный MyEtherWallet и Ganache (инструмент создания приватного блокчейна). Или же с помощью фреймворка Truffle, библиотеки OpenZeppelin (этот метод легче, так как мы используем уже созданные и протестированные разработчиками контракты).
Для тестирования созданного смарт-контракта можно выбрать клиент testrpc на Ethereum (почитать можно на https://github.com/ethereumjs/testrpc).
Применение смарт-контрактов
Смарт-контракты помогают в работе с приватным и публичным блокчейном, широко применяются в управлении бизнес-проектами. Многие страны рассматривают применение компьютерных алгоритмов в сфере финансов, медицины, недвижимости. С их помощью проводились пробные голосования в Швейцарии и Японии.
Язык программирования для написания сети
Написать свой полноценный блокчейн с нуля намного сложнее. Тем не менее, выбирая этот вариант, вы не ограничены функционалом платформы. Для написания подходит любой язык объектно-ориентированного программирования. Разработчики чаще предпочитают Python, PHP, Java, C++, GO.
Рассмотрим некоторые криптовалюты и блокчейны:
- Биткоин написан на С++;
- Эфириум – на С++, Solidity (смарт-контракты) и Python;
- Стратис – С#;
- NEM – Java.
Помните: язык программирования – лишь инструмент, который не имеет большого значения при написании блокчейн-проектов. Поэтому выбирайте тот, которым владеете или который легче освоить.
Кроме языка программирования, вам необходимо понимать, как работают HTTP-запросы. Для углубления в тему пригодятся знания HTML, CSS, а также понимание фреймворков и библиотек.
Инструкция по написанию кода блокчейна
Чтобы написать ваш первый, пробный блокчейн на любом выбранном языке, можно (но вовсе не обязательно), следовать представленному ниже пошаговому плану, краткой инструкции:
- В зависимости от выбранного языка подключаем библиотеку. Например, crypto-js для JavaScript или Flask и Request для Python.
- Пишем GenesisBlock или первичный блок, который не ссылается на предыдущий и не содержит его хеша. Прописываем начальные параметры: время создания, данные и т. д. Генезис добавляется вручную или методом написания дополнительной функции.
- Пишем функцию для генерации блоков. В каждом хранится index, timestamp, список транзакций и все, что вы посчитаете нужным в рамках этого блока. Для защиты сети функция должна содержать хешированную информацию предыдущего блока. На этом моменте стоит немного остановиться. Мы используем SHA256, хешируем всю информацию генезис блока, в дальнейшем эта строка входит в следующий за ней блок, плюс информация самого блока (назовем его вторым). В третьем блоке опять формируется хеш, но уже из новых данных и хеша второго блока. И так до последнего звена цепи. Таким образом, каждый блок несет в себе зашифрованную информацию о каждом своем предшественнике, начиная из Генезиса. Данным обязательно распространяться на весь блокчейн – это исключает возможность взломов и подмены информации.
- Дальше можно углубиться, добавить работу с узлами, доказательства работы и т. д. Но наша цель – пример, поэтому заканчиваем, добавив определение количества блоков и запустив цикл «for» (Python).
Использовать блокчейн, написанный таким образом, вряд ли получится, тем не менее на этом примере можно понять, как работает система и какой принцип хранения данных. Для полноценного функционирования системы нужно добавить функции обработки транзакций и работы с узлами.
Блокчейн-приложения
Изучая создание блокчейна, уделим внимание и блокчейн-приложениям, которые отличаются от других использованием новой технологии, а значит – большим функционалом и усиленной безопасностью.
Создать их можно либо на основе уже работающего блокчейна, либо используя открытые коды платформ для создания приложений. Возможна и разработка на основе собственных сетей, но для этого нужны глубокие познания криптографии и программирования.
Написав полезное или интересное приложение, применив менеджмент и фантазию, можно отлично заработать. Примеры – BitcoinCrane и CryptoKitties.
Дополнительные руководства по технологии
Написать простой код – еще не значит овладеть необходимыми знаниями. Начинающим блокчейн-разработчикам стоит обратить внимание на такие источники информации:
- книги авторов: Лоран Лелу, Мелани Свон, Андреас Антонопулос или Роджер Воттенхофер. В книгах вы найдете описание технологии, ее возможностей, а также полезные руководства по ее созданию;
- тематические форумы, где часто выкладываются полезные статьи и примеры кода (GitHub, Habr, социальная сеть Reddit, BlockchainCommunity);
- видеоуроки на YouTube;
- белые бумаги криптовалютных проектов и другая техническая документация. Их исследование позволяет лучше понять работу системы.
Площадка Ethereum создает собственные обучающие программы, помогающие делать разработки на основе их блокчейна. О криптографии подробно описано в книге «Mastering Ethereum».
Блокчейн-команды
Обучаясь через книги, просматривая блокчейн-инструкции и тренируясь в написании программного кода, можно выучить основы и даже написать простую сеть. Тем не менее для создания серьезных проектов или полного перехода бизнеса на новую технологию нужны доскональные знания языка, понимание законов криптографии и веб-разработки.
В таких случаях правильное решение – создание блокчейн-команды из профильных специалистов. Широкомасштабные проекты проходят в несколько этапов:
- Подготовительный. Собирается команда, проводится анализ, определяются цели и задачи проекта.
- Рабочий. Происходит написание программного кода, тестирование и пробный запуск.
- Представление проекта.
Работа в блокчейн-команде позволяет наработать практический опыт, перенять знания от других разработчиков, получить отклики и портфолио.
Чтобы стать хорошим разработчиком блокчейн-проектов, нужны навыки программирования и желание постоянно учиться, ведь молодая технология развивается стремительно.
И хотя в некоторых учебных заведениях уже проводится обучение основам блокчейна, издаются обучающие книги, пишутся туториалы, разработчиков катастрофически не хватает. Поэтому мы считаем, что сейчас – лучшее время для освоения технологии.
Смотрите это видео на YouTube
Смотрите это видео на YouTube