Blockchain-разработчик

[REMOTE]

07 Jan 2022

Карьера в IT: должность Blockchain-разработчик

Продолжаем серию «Карьера в IT»: на этот раз поговорим о разработке технологий Blockchain. Об этой предметной области нам рассказали специалисты из компаний BlockSoftLab, Dev-Pro и Titanium.

Особенности направления

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

Соответственно, Blockchain-разработчик создает программные приложения, которые будут выполняться узлами, входящими в цепочку блоков. Также он настраивает взаимодействие «классического» программного обеспечения, или DApp (Distributed application), с этими приложениями.

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

В то же время технология Ethereum позволяет реализовывать достаточно сложные алгоритмы и смарт-контракты, написанные на высокоуровневом языке Solidity. Он поддерживает принципы ООП и позволяет решать существенные вычислительные задачи, хотя максимальная сложность реализуемых алгоритмов остается ограниченной.

«Так как Blockchain-разработка имеет очень много ограничений, связанных с природой технологий, нам приходится постоянно объяснять заказчикам, что некоторый функционал не может работать так, как они предполагают» (Алекс Кучер, CTO Titanium).

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

«Работа Blockchain-разработчика отчасти похожа на работу системного программиста. Необходимо „выдавать“ оптимизированный код как по количеству операций, так и по используемому объему памяти. Соответственно, необходимо хорошо изучить, как работает Blockchain „под капотом“, чтобы при оптимизации учитывать не только количество операций, но и особенности их реализации на низком уровне» (Blockchain Developer в BlockSoftLab).

Задачи и обязанности

Главная задача Blockchain-разработчика — разработка цифровых «соглашений» (смарт-контрактов). Условия в них описываются программно, а полученный смарт-контракт располагается в цепочке блоков. Это предотвращает вмешательство в его работу или изменение его содержания. А значит, отвергается и возможность отклонения от правил, заложенных в «соглашении».

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

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

«Кроме непосредственно смарт-контрактов мы также разрабатываем веб-страницы или мобильные приложения, через которые будет происходить взаимодействие с Blockchain. Для этого используем JavaScript, Java и Swift» (Игорь Ермаков, Blockchain Engineer в Dev-Pro).

Типичный рабочий день Blockchain-разработчика проходит по-разному в зависимости от этапа разработки продукта.

«На этапе проектирования большая часть времени у меня уходит на разработку архитектуры, участие в „мозговых штурмах“, определении инструментов и техник разработки, выделении и распределении задач. На этапе разработки 6-7 часов в 8-часовом рабочем дне занимает программирование. В оставшееся время я исследую новые технологии, участвую с командой в митингах, посещаю образовательные семинары. Во время тестирования мы создаем юнит-тесты для смарт-контракта и занимаемся мануальным тестированием интерфейса взаимодействия» (Blockchain Developer в BlockSoftLab).

Принцип работы технологии Blockchain (image source)

Преимущества и недостатки

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

«Каждый человек в какой-то момент жизни хочет заниматься чем-то полезным для общества и чувствовать вовлеченность в его развитие. Инструментарий, который можно разработать с помощью технологии Blockchain, способствует созданию гражданского общества и прозрачности власти, в том числе и в Украине, а также прозрачности сделок во взаимодействии людей друг с другом. Причем если в классических сделках некоторые вещи можно трактовать двусмысленно, то в программировании смарт-контрактов такие неоднозначности отсутствуют» (Blockchain Developer в BlockSoftLab).

«Привлекает прозрачность и неизменяемость данных. При открытом исходном коде и полном доступе к серверу, на котором он выполняется, его не взломать. Конечно, при условии, что программист не допустит ошибку» (Игорь Ермаков, Blockchain Engineer в Dev-Pro).

«Блокчейн предполагает собой обещание децентрализованного будущего, где не будет игроков, которые будут контролировать большую часть чего-либо. Эта специализация молодая, но многообещающая. Мне интересно, в какую сторону будет развиваться эта технология и что можно будет оптимизировать и децентрализовать с ее помощью» (Алекс Кучер, CTO Titanium).

Среди недостатков — незрелость технологии и высокая цена ошибки.

«Пока что основной минус — молодость технологий и инструментов. Значительная их часть еще даже не дошла до продакшена и находится в фазах тестирования. Во-первых, это порождает наличие ошибок в архитектурах продуктов. Во-вторых, из-за периодических изменений в инструментах учебный материал или инструкция к какой-то библиотеке часто совсем не соответствует фактическому положению вещей. Это повышает стресс во время разработки и ставит под угрозу сроки выполнения задания.
Также разработка требует постоянного внимания к требованиям ИБ. В случае с Blockchain продукт уже невозможно будет изменить после запуска. А значит, не получится и исправить ошибку или ликвидировать уязвимость патчем» (Blockchain Developer в BlockSoftLab).

«Поскольку технология молода, инструменты, которые используются для ее разработки, еще не полностью отлажены. Поэтому иногда могут возникать проблемы, пути решения которых не очевидны. Также, поскольку не все заказчики понимают лимитированность и специфичность этой технологии, иногда бывает трудно объяснить, почему она работает так или иначе» (Алекс Кучер, CTO Titanium).

«Пожалуй, недостаток заключается в том, что полученные навыки сложно или невозможно применить в других сферах» (Игорь Ермаков, Blockchain Engineer в Dev-Pro).

Mid-Senior Level

Full Time

[REMOTE]


Share Job Opening