Мы продолжаем серию интервью с докладчиками конференции DUMP, которая пройдёт 14 апреля в Екатеринбурге. Готовы интервью с программистом JetBrains Андреем Акиньшиным о том, как начать выступать на конференциях, и разработчиком Dropbox Леонидом Васильевым о жизни и работе в Ирландии.
Под катом — интервью c Александром Чепурным, научным сотрудником в компании IOHK, где он разрабатывает библиотеки с открытым кодом, например, Scorex — библиотеку для построения блокчейн-систем. Александр с 2013 года занимается блокчейн-проектами, разрабатывал ядро платформы Nxt, был одним из основателей smartcontract.com.
Александр рассказал, чем разработка криптовалют отличается от разработки другого ПО, как начать программировать деньги и когда произойдет массовое внедрение блокчейна.
— Чем ты занимаешься? Как это связано с криптовалютой? Над чем сейчас вы работаете?
В данный момент я работаю в компании IOHK, занимаюсь написанием кода и статей заодно. В частности, фреймворков Scorex и Scrypto. С конкретными криптовалютами в данный момент не работаю. До этого был разработчиком NXT и одним из основателей smartcontract.com.
— Чем разработка криптовалют отличается от разработки другого ПО?
C одной стороны, сообщество требует новых функций и релизов как можно скорее, ведь ситуация на рынке меняется очень быстро, и внимание пользователей переключается тоже. С другой, требования по качеству кода в некоторых аспектах приближены к критическим системам (разработчики которых имеют привилегию сидеть в кабинетной тишине годами). Плюс приходится постоянно смотреть, как работает сеть, почему от нее могут отваливаться узлы пользователей, какие сейчас идут атаки на сеть (на более-менее популярные криптовалюты атаки осуществляются регулярно).
Программировать криптопротоколы — непростое занятие, достаточно посмотреть на пример OpenSSL и его уязвимостей. Пиринговые сети тоже уязвимы, даже если мотивации для атак может быть и немного. В популярных криптовалютах сильное желание найти уязвимость или грубо «положить» значительную часть системы обычно есть много у кого :)
Несколько лет назад многие вещи были непонятны никому в мире из-за недостатка наблюдений. Для меня лично очень многое открылось после изучения списка уязвимостей Биткойна и осенних атак на Ethereum, не говоря о собственных многочисленных ошибках, как в дизайнах, так и в реализации.
— Чтобы программировать криптовалюту, нужна какая-то особая подготовка?
Всегда пригодятся предельная аккуратность и щепетильность. Из практических навыков полезно понимать базовые вещи из криптографии, иметь за плечами опыт разработки распределенных систем и оптимизации производительности, уметь писать качественный код. Также очень полезно уметь показывать свой код максимальному числу людей вокруг и работать над критикой.
— Что бы ты посоветовал программистам, которые хотят попробовать себя в сфере криптовалют?
Для начала, думаю, стоит попробовать разобраться и сделать что-нибудь полезное (хотя бы тест написать) для уже существующего фреймворка или клиента на любимом языке программирования. Практически всем им нужны разработчики-энтузиасты.
— Какие на сегодня самые большие проблемы у криптовалют? Как вы их решаете?
Безусловно, масштабируемость. В тематических медиа упор делается на пропускную способность, выражаемую в числе условных транзакций в секунду. Конечно, всегда хочется писать больше в блокчейн, но он совсем не резиновый, точнее, есть весьма строгие лимиты памяти и дисковое пространство для его хранения и получаемого из него состояния (которое должно целиком или наиболее часто запрашиваемой частью помещаться в RAM).
Это, кстати, один из аргументов против увеличения размера блока в Биткойне. Изменить константу — не самая большая проблема. Сложнее потом решить, что делать с ускоренно растущим размером множества неизрасходованных монет (UTXO set) и числом узлов сети, хранящих у себя лишь ограниченное число последних блоков (режим pruning).
В качестве решения хотелось бы хранить меньше данных или хранить не всем, а гарантии безопасности иметь такие же. В качестве первой работы в данном направлении я и мои коллеги в эти дни презентуем на Financial Cryptography’17 решение, позволяющее узлам сети (за исключением майнеров) не держать у себя состояния системы совсем, но иметь гарантии его целостности. Надо также уходить от загрузки блокчейна новыми нодами целиком и, соответственно, от необходимости обязательного его хранения (кем бы то ни было, за исключением заголовков, но они маленькие). Фактически после осенних атак Ethereum к этому приходит. Необходимо, однако, добиться того же уровня безопасности (и для начала сформулировать, что это может значить формально). В ближайшее время будет и про это выпущена работа.
— Будет ли Биткойн когда-нибудь замещён другой криптовалютой?
Весьма вероятно. На данный момент Биткойн является уникальным случаем экосистемы, которая выросла до достаточных размеров, чтобы стать практически неспособной к изменениям из-за политических причин. Между тем изменения в Биткойне нужны, но разным фракциям разные.
Из-за последних конфликтов внутри сообщества начали говорить о возможном разделении Биткойна на Core и Unlimited. Думаю, это вряд ли произойдет, слишком большой урон могут понести обе стороны. Хотя много маловероятных событий уже успело произойти, так что исключать ничего нельзя.
— Существуют сотни блокчейн-валют со странными названиями. Как отличить перспективные от жульнических?
Весьма сложно без знания области. Перспективный продукт должен иметь сильную команду, внятный whitepaper и постоянное развитие. Но даже это может не помочь.
— Как ты считаешь, через сколько произойдет массовое внедрение блокчейна в банковской среде? И произойдет ли?
Несколько лет назад разговоры были о том, что Биткойн сделает банки ненужными. Сегодня принято продавать банкам блокчейны. Я надеюсь, модификация финансовой среды все же пойдет дальше внедрения блокчейна куда бы то ни было внутри банков.
— Как тебе кажется, в каких прикладных сферах в ближайшем будущем блокчейн будет работать и станет нам привычен?
Блокчейн и криптовалюты удобны для облегчения платежей, ведения реестров, создания финансовых инструментов (особенно краткосрочных) и коллективной деятельности с финансовой составляющей.
Надеюсь, что краудфандинг и благотворительность уйдут в криптовалюты, как и реестры прав собственности (если позволит технология, в данный момент — нет), голосов. Современные технологии, впрочем, не позволяют пока проводить голосования по критическим для общества вопросам в электронном виде, даже если не брать в расчет проблемы блокчейнов. Хотелось бы видеть больше финансовых инструментов под конкретные нужды (таких, как уткотокены), это может серьезно оживить экономическую деятельность за пределами мегаполисов.
14 апреля Александр выступит на конференции DUMP в Екатеринбурге. Расскажет о возможностях новых парадигм и языков, работающих в новых условиях, поверх блокчейна. Кроме этого, Александр осветит работы последних лет в теории языков программирования и криптографии, которые способны решить имеющиеся проблемы.
Спасибо нашим спонсорам: генеральному спонсору — компании E-Soft, партнёрам конференции — СКБ Контур, Naumen, Сбербанк-Технологии.
Автор: IT-People