• bitcoinBitcoin$5,089.360.34%
  • ethereumEthereum$163.29-0.98%
  • bitcoin-cashBitcoin Cash$278.07-1.66%
Главная - Блокчейн - О программировании и разработке на блокчейне

О программировании и разработке на блокчейне

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

Широкое распространение требует наличия квалифицированных сотрудников, которые смогут разрабатывать новые проекты и внедрять их в жизнь. Так, в 2017 году число вакансий «программист блокчейна» выросло в три раза по сравнению с предыдущими годами. В 2018 это число увеличилось еще больше, обеспечив профессии звание самой востребованной.

Что нужно, чтобы стать блокчейн-разработчиком:

  • понимание принципа работы блокчейна;
  • владение одним из языков программирования (подходит ОО-язык, например, JavaScript, Perl, PHP);
  • знание основ криптографии;
  • умение анализировать уязвимости и защищать систему от атак;
  • желание постоянно обучаться, совершенствовать знания;
  • постоянная практика.

Обучение программированию на блокчейне

Программирование на блокчейне

Выучить программирование на блокчейне в государственных учебных заведениях России сегодня почти невозможно. Хотя стоит отметить, что основы технологии преподаются в Московском физико-техническом институте, Санкт-Петербургском государственном экономическом университете, Московском университете им. Ломоносова.

Внимание: технология блокчейна, которая изучается в государственных университетах и институтах, показана с точки зрения экономики и финансов. Поэтому полученных знаний недостаточно для написания программ на блокчейне.

Альтернатива ВУЗам – частные онлайн и оффлайн-курсы, предлагающие знания и даже трудоустройство. В 2017 году образовательный курс для сотрудников запустил Сбербанк. В ходе обучения компания предлагает рассмотреть все аспекты системы, узнать о применении блокчейна, заняться разработкой кейсов, смарт-контрактов.

Программирование EthereumСреди самых известных общедоступных курсов выделяются Ethereumworks.com, B9Lab Academy (academy.b9lab.com). Первый ресурс предлагает платные онлайн-уроки (есть бесплатные пробные), в ходе которых начинающий специалист познакомится с основами шифрования, понятием криптовалют, майнинга, ICO, создаст умный контракт, свою валюту. Компания предлагает несколько курсов на выбор, в зависимости от начальных знаний и целей. Каждый ученик получает сертификат.

В англоязычном сегменте курсов намного больше, примеры тому – Blockgeeks, DeveloperWorks, B9Lab Academy. Последний базируется в Лондоне и Гамбурге, работает в 112 странах, выдает сертификаты и открывает доступ к материалам из прошлых курсов. Среди государственных университетов, обучающих технологии, отметим:

  • Корнеллский университет (США);
  • Дюкский университет (США);
  • Джорджтаунский университет (США);
  • Принстонский университет (США);
  • Никосийский университет (Кипр).

У большинства блокчейн-энтузиастов нет возможности обучаться в одном из вышеперечисленных университетов, поэтому мы советуем присмотреться к таким источникам информации:

  • книги по блокчейну (многие англоязычные издания переведены на русский язык);
  • «Белые Бумаги» Биткоин и Эфириум;
  • официальная документация Solidity (поможет узнавать о блокчейн-проектах на базе Ethereum);
  • статьи и блокчейн-коды на GitHub и Habr;
  • видеоматериалы на YouTube.

И даже обучающие блокчейн-игры, такие как CryptoZombies (позволяет учиться писать на Solidity).

Выбор языка программирования

Теоретически, блокчейн может быть написан на чем угодно из объектно-ориентированных языков программирования: C, C+, C#, Java, Python, PHP, Perl и т. д.

На практике основная масса проектов создается не с нуля, а реализуются на блочной платформе. Поэтому и блокчейны пишутся на языке, который применялся в написании платформы. Например, приложения, реализованные на платформе Ethereum, пишутся на Solidity или GO.

Создание сети

Создание блокчейн-сети

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

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

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

Блокчейн на платформе

Для разработки блокчейн-приложений чаще всего используются такие платформы:

Самая часто используемая платформа – Ethereum – позволяет создавать приложения и смарт-контракты, владея минимальными знаниями программирования (используется язык Solidity) и при наличии криптовалюты ETH для оплаты услуг. Ее преимущества: гибкость и универсальность, простота вхождения и высокая скорость разработки. Недостаток в обязательстве оплачивать комиссии майнерам, которые меняются пропорционально количеству участников-разработчиков. С помощью этой платформы можно создать собственную DAO – автономную организацию.

HyperLedger FabricHyperledgerFabric – более новая и реже используемая платформа, которая позволяет создавать приватные блокчейн-приложения. Ее преимущество в постоянном усовершенствовании и сотрудничестве с ведущими компаниями мира. Для работы нужно умение программировать на одном из языков: GO, Java, JavaScript.

Hyperledger отличается отсутствием своей криптовалюты и полной концентрацией на создании блокчейн-проектов. Смарт-контракты присутствуют и называются чейн-кодами.

Так как HyperledgerFabric не поддерживает создание публичных блокчейнов, создана платформа HyperledgerSawtoothLake. С ее помощью можно реализовать открытый или закрытый блокчейн-проект, при этом используется любой высокоуровневый язык программирования, хотя модуль платформы реализован на Python.

Cardano – интересная площадка, позволяющая пользоваться криптовалютой ADA, разрабатывать смарт-контракты и блокчейн-приложения (например, DAO). За основу выбран язык Haskell, который обеспечивает высокий уровень безопасности. Разработчики платформы считают Cardano представителем блокчейна 3.0, в то время как Ethereum – 2.0.

Кроме этих opensource-платформ, использовать можно и другие, например, HydraChain (Python), EOS, Corda, ErisIndustries (позволяет запускать небольшие частные проекты), Waves (для тех, кого интересует выпуск токенов и реализация ICO).

Блокчейн с нуля

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

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

Пример кода

Пример кода на блокчейне

Код полноценного приложения занимает не одну строчку, поэтому рассмотрим лишь примерную архитектуру выполненного на языке Python-кода:

  • импортируем нужные библиотеки;
  • прописываем первый блок:

class Block:

def __init__(self, index, data, timestamp, hash_two)

self.index = index

self.data = data

self.timestamp = timestamp

self.hash_two = hash_two

self.hash = self.hash_block()

Что мы сделали? Создали класс «Блок», вызвали метод (__init__), добавили атрибуты, которые будут наполнением нашего блока. Обратите внимание на «hash_two» – так мы обозначили хеш предыдущего блока. Наполнение блока можно менять, добавляя другие, необходимые вам атрибуты.

  • добавляем криптографический алгоритм (будем использовать sha256):

defhash_block(self):

sha = hasher.sha256()

sha.update(str(self.index) +

str(self.data) +

str(self.timestamp) +

str(self.hash_two))

returnsha.hexdigest()

  • прописываем Генезис;
  • создаем цикл из n-ного количества блоков с помощью «for».

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

Создание смарт-контрактов

Создание «умного» контракта

Смарт-контракты – это программы, содержащие некие условия и гарантирующие их выполнение. Их написание – сравнительно легкая задача, если делать это на базе готовой блокчейн-платформы. Единственный недостаток – за использование умных контрактов придется платить внутренней криптовалютой (это касается самой популярной площадки – Ethereum).

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

Внимание: перед внедрением смарт-контракта проводится тестирование, проверка на безопасность и уязвимость.

Создание криптовалюты

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

Практика и портфолио

Программист блокчейна

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

  • Используйте фриланс. Лучше всего для получения опыта подойдут англоязычные площадки: UpWork, Fiverr и другие.
  • Напишите собственный смарт-контракт, электронный кошелек, блокчейн-игру или запустите собственную криптовалюту на блокчейне.

Английское слово «блокчейн», означающее «цепочка блоков», прочно вошло в нашу жизнь, ведь технология вышла за рамки криптовалютных проектов. Она позволила усовершенствовать банковскую, юридическую и финансовую системы. Нашла применение в медицине, регистре интеллектуальной собственности, недвижимости, земельном кадастре.

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

о Дмитрий Шустов

Автор популярных материалов на различных криптовалютных и блокчейн площадках. Интересуюсь данной сферой с 2015 года. Трейдер-аналитик. Junior-программист. Окончил Московскую школу экономики. Работаю в АНО "Рейтинговое агентство оценки проектов цифровой экономики".