Что нужно знать начинающему блокчейн-разработчику

что нужно знать начинающему блокчейн разработчику

Не стоит повторять, что мы живем в «эпоху блокчейна». Влияние, которое он может иметь на наше будущее, действительно захватывает. Итак, как вы получить пользу от этой популяризации? Если вы претендуете на вакансию блокчейн-разработчика, то для работы с серьезной компанией нужно предпринять определенные шаги.

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

Понимание основ

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

Если вы совсем новичок, есть определенные термины, которые нужно знать:

  • блокчейн — цепочка блоков, где каждый блок содержит неизменные криптографически зашифрованные данные без какого-либо контроля с третьей стороны. Смотрите отличие блокчейна от традиционной базы данных.
  • децентрализация — отсутствие центрального органа управления, который контролирует что-либо, блокчейн является распределенным реестром, то есть децентрализованным.
  • механизм консенсуса — механизм, с помощью которого децентрализованная сеть достигает согласия: PoW и PoSDPoS, PoI.
  • майнинг и майнеры: процесс добычи криптовалюты и пользователи, которые отдают свои вычислительные мощности под это

Естественно, терминов гораздо больше.  Какие-то понятия, в том числе более продвинутого уровня, мы собрали по предыдущей ссылке. Кроме этого поищите в интернете «глоссарий криптовалют», «словарь блокчейна» и даже бесплатные курсы для начинающих: сейчас некоторые компании продвигают свое имя через уроки. Экономите время — смотрите на скорости 2х.

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

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

Если вы хотите углубиться в криптографию, начните с этого и ищите серьезные книги по теме.

После этого рекомендуем узнать, как работает биткоин, «отец криптовалют». Неплохо прочитать технический документ Сатоши Накамото, white paper биткоина. Сейчас много валют и новых особенностей, но это является неким эталоном, первым стандартом.

Что делаем:

знакомимся с терминами,

идем по техническим аспектам,

читаем Белую бумагу Биткоина.

Знакомство с процессом

Многие начинающие «разработчики» не имеют реального опыта в использовании криптовалюты.

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

Также важно познакомиться с кошельками для хранения криптовалюты: горячими и холодными.

Мы вас не призываем вкладываться и рисковать своими деньгами, вместо этого можете почитать, как устроена биржа.

Что делаем:

Узнаем, как работают биржи.
Знакомимся с кошельками.

Кодинг

Создание и поддержание публичного блокчейна — непростая работа по ряду причин:

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

Управление ресурсами — продуктивность кода особенно важна, т.к ваш проект должен выдерживать большую нагрузку.

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

Изоляция — сначала вспомним о детерминированном поведении: Если A + B = C, то независимо от обстоятельств A + B всегда будет равным C. Хэш-функции детерминированы, то есть хэш Х всегда будет H (A). Все транзакции и смарт-контракты должны быть детерминированы, изолированы от недетерминированных элементов.

Этим требованиям соответствуют несколько языков программирования. Если вы разработчик на блокчейне, обязательно иметь базовые знания о C ++ и JavaScript.

Хотя C ++ может показаться устаревшим, но он прекрасно удовлетворяет всем функциям, которые описаны выше. Сатоши Накамото написал исходный код биткоина на C ++.

JavaScript используется для создания высоко интерактивных веб-страниц.

Давайте на практике посмотри, как создать простой блокчейн с использованием JavaScript.

Каждый блок должен иметь:

  • Index (номер блока),
  • Timestamp (время создания),
  • Data (то, что внутри блока),
  • Previous Hash (хэш предыдущего блока),
  • Hash (свой хэш).

Создание блока

В первой строке кода мы подключили библиотеку crypto-js, т. к. хэш-функция sha256 недоступна в JavaScript.

Затем мы вызываем конструктор для присвоения начальных значений свойствам.

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

Когда есть готовый блок, можно соединить их в цепь:

Для удобства анализа рассмотрим код по секциям:

Section 1. Генезис-блок. В момент создания цепи возникает этот блок. Он не ссылается на предыдущий. В функцию createGenesisBlock() данные подставляются вручную: return new Block(0, «01/01/2017», «Genesis block», «0»);

Section 2. Добавление блоков. Чтобы узнать последний блок, мы используем функцию getLatestBlock(). Когда блок добавляется, он проходит проверку: в нем содержится хэш предыдущего блока, и если хэш старого блока совпадает с хэшем внутри нового, блок встраивается в цепь.

Что нужно знать начинающему блокчейн-разработчикуSection 3. Проверка цепи. Мы используем цикл «for» для перехода от блока 1 к последнему блоку. Блок генезиса — это блок 0. Если «previousHash» текущего блока не равен «Hash» предыдущего блока, функция вернет False, если совпадает,  вернет True.

Теперь блокчейн можно использовать для создания токенов.

Вот и вся технология.

Что делаем:

Весьма непросто: нужно знать один из подходящих языков программирования, типа C++, Javascript, C#, Go.

Изучить смарт-контракты

Это тема отдельной статьи. Познакомиться с философией умных контрактов и написать простейший контракт поможет эта статья.

Если вам интересна разработка в экосистеме Ethereum, то важно изучать Solidity (язык для смарт-контрактов Эфириума).

Куда податься

Если вы боитесь претендовать на должности в компаниях (а только на HH вакансий по блокчейну более 300), можно набираться опыта в:

  • форумах на Reddit,
  • страницах проектов на Gitbub,
  • StackExchang,
  • предлагайте выполнить небольшие задачи на UpWork и подобных сервисах.

Главное, быть в курсе новостей технологии и смотреть, какие тенденции есть на этом рынке.

Итоги

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