«Ультимативная цель Parity — перестать быть центром комьюнити»
Денис Писарев, Parity Technologies
2 марта
«Ультимативная цель Parity — перестать быть центром комьюнити»
Про бэкграунд
Раньше занимался тестированием. На предыдущей работе начал с джуна и закончил лидом тестовой команды.
Живу в Германии и работаю в Parity Technologies уже больше 4 лет. Я сорок второй сотрудник. Сейчас с нами уже 350 человек. Моя официальная должность — «Do not release manager», а на деле я CI/CD Team Lead.
Сначала моей задачей было тестирование клиента Parity Ethereum. Спустя примерно год мы стали сворачивать активности по нему, и я перешел в DevOps. Еще через полгода мы создали для него DAO на 8 команд-разработчиков, активных в сообществе, чтобы они его поддерживали. Переименовали — в итоге я его переводил в отдельно созданную организацию GitHub, OpenEthereum. Жаль, но не взлетело. В итоге сейчас Geth снова по праву самый популярный клиент Ethereum.
Моя команда занимается CI/CD, целиком: хосты, кластеры, провижининг, деплоймент, безопасность, алертинг, мониторинг — все на нас. И есть бóльшая DevOps команда, которая занимается всем остальным.
Собираюсь поменять направление деятельности. У меня много идей для новых проектов. Выдумал и собираюсь стать «DevOps relations» — это как DevRel. Буду заниматься воркшопами, документацией и продуктами для девопсов.
У нас есть интересный проект: универсальный конфиг для запуска валидатора. Он будет включать в себя наши Substrate + Sidecar. Это валидатор для наших чейнов в комплекте с API. Цель проекта — улучшение UX — так, чтобы любой мог запустить этот валидатор. Идеально, чтобы он запускался в один клик. Клиентом будет любой, кто захочет себе валидатор. Одна из важнейших задач сейчас — снизить порог входа в сообщество.
Про Parity Technoligies
Компания основана в 2015-м. Тогда она называлась EthCore. Ее фаундер Гэвин Вуд — один из основателей Ethereum Foundation. Основным продуктом был клиент Parity Ethereum. В комьюнити Ethereum он стал де-факто клиентом по умолчанию. Имя как-то приклеилось — в итоге переименовались. Потом написали еще несколько клиентов на Rust для Zcash, Bitcoin и еще пары блокчейнов. Позже родились собственные блокчейны — Polkadot и Kusama.
Ультимативная цель Parity — перестать быть центром комьюнити, отойти на второй план. А еще достигнуть честной децентрализации, довести Polkadot до того момента, когда другие компании и сообщества смогут регулярно и консистентно контрибьютить в ядро проекта. Как только это произойдет, можно считать, что компания выполнила цель и может закрываться. И это не вполне шутка — очень откликается в нашей инженерной культуре. Сотрудникам с этим нормально живется, кстати. Есть классная идея — Polkadot Fellowship: новая модель найма, так сказать. Советую почитать.
Про DevOps-специалистов
Около 3 лет назад Parity еще нанимала технарей с обязательным знанием блокчейнов. В том числе DevOps. Позже мы, конечно, на это забили, потому что они закончились. 90% работы — вполне обычная работа DevOps, которая не особо отличается от работы в любой другой компании.
Специалистам DevOps в блокчейн-сфере платят в полтора-два раза больше. Я долго нанимал себе в команду, много времени провел «на рынке». В блокчейн сфере очень ценят DevOps-специалистов, но они «эти ваши» блокчейны не особо жалуют. Поэтому этим специалистам платят больше обычного. По европейскому рынку, по крайней мере.
Тестирование в блокчейнах — это прям огромная и нерешенная проблема. Там нужен тяжелый бэкграунд блокчейнов. Таких инженеров пока в принципе нет, а блокчейн-рисерчеры не особо рвутся тестировать релизы за разрабами. Поэтому в блокчейнах функция QA смещена к девелоперам — они делают тесты. Это их ответственность. Ну и, конечно, сторонний аудит.
Про CI/CD
Я знал и немного занимался CI/CD еще до Parity. На предыдущей работе занимался тестированием и умел, как минимум, добавлять новые тесты в конфиг CI.
В то же время есть отдельные системы, которые занимаются только CI, и отдельные только для СD. Но если брать современные GitHub actions, Gitlab, Circle CI, Drone CI и прочие — они все полного цикла и практикуют обе схемы.
CI — continuous integration (непрерывная интеграция) вашего кода. Грубо говоря, у вас есть smoke, юнит, модульные, интеграционные, end-to-end, UI тесты — неплохо бы всё это дело прогонять перед тем, как релизить.
Когда проект большой, тестов будет куча. Они могут занимать часы. Не хочется так долго ждать, пока каждый коммит сможет смержиться в свою ветку. Поэтому существуют разные пайплайны — как линии в сборочных конвейерах. Это, собственно, и есть конфиги CI/CD. В начале пайплайна идут простые тесты. Всё должно дизайниться по принципу Fail Fast — то есть если что-то работает ошибочно, то оно затрачивает не так много времени. Сначала мы запускаем какие-то линтеры кода, которые проверяют наличие опечаток и структуру кода. Для этого обычно используют встроенные инструменты компилятора. Потом запускаются быстрые тесты — юниты. Если и после них ничего не падает, то дальше идут end-to-end тесты, которые требуют собранного продукта.
Мы повышаем сложность и длительность тестов при углублении в пайплайн. Собираем бинарник (того самого Polkadot-клиента). Если нужно мобильную аппликацию, то собираем аппликацию, если сайт, то собираем сайт и деплоим его, потом прогоняем остальные тесты.
Допустим, мы деплоим в кластер с другими валидаторами на тестовый блокчейн. Там запускаем тесты, которые можно проверить только при запущенном блокчейне, то есть проверки всевозможных атак, смарт-контрактов, интринсик и также транзакций — правильно они исполняются или нет.
CD, или continuous deployment (delivery) — непрерывная доставка. Тут работает тот же принцип ленты производственного конвейера. Полностью протестированный код можно мержить в master ветку.
Когда команда считает, что пора, — из master выделяют новую релизную ветку с номером версии. Она проходит всевозможные тесты и бенчмарки, потом останавливается и ждет ручного аудита. После собранные бинарники, веса и сгенерированный changelog публикуются на GitHub. Новая версия заменяет старые в продакшн-блокчейне. Создается оповещение и, например, отправляется пуш в Telegram и Matrix о необходимости обновиться всем, кто хостит свои валидаторы. Почти всё это автоматизировано и требует минимального участия инженеров.
CD может идти в стороне от CI. Совершенно необязательно, что перед CD будут тесты. Это обычно что-то нужно задеплоить и что-то куда-то доставить. Будь то бинарник — вот мы хотим его положить, довести до места, откуда он будет работать, и запустить его там с нужными параметрами. Так он будет задеплоен в блокчейн или, в случае сайта, в продакшн. А в случае приложения оно будет задеплоено, например, в Google Play.
Про Polkadot
Обрисую архитектуру. Сами блокчейны Polkadot и Kusama — это, как мы их называем, Relay Chain. Получается, Polkadot предоставляет услугу «blockchain as a service». Для простоты представим, что это выглядит как master бранч в Git, а блоки — это коммиты в master. Таким образом, нам нужно мейнтейнить и авторить блоки только в Relay Chain, и весь наш Nominated Proof-of-Stake крутится на нем. Все валидаторы работают на Relay Chain. Это обеспечивает безопасность всей экосистемы.
И примерно так же, как и с веткой в Git, парачейн не закончится, пока ты сам этого не захочешь и пока будут соблюдены условия. Все твои блоки синхронизируют метаданные с блоками на Relay Сhain с помощью коллаторов. Такая информация хранится на Relay Chain на самом Polkadot и Kusama.
Парачейнов может быть до ста — и то это искусственное ограничение. Капабилити уже сейчас больше. Это скорее экономические ограничения, так как наши алгоритмы построены на теории игр и экономике.
Есть еще паратред — это как бы один парачейн на несколько бизнесов. Если им всем не нужны целые парачейны, они могут асинхронно делиться местом в одном блокчейне. Коллаторы — это как валидаторы обычных блокчейнов.
Они собирают транзакции парачейнов от пользователей и создают доказательства перехода состояния (transition proofs) для валидаторов релейной цепочки. Другими словами, коллаторы поддерживают парачейны, объединяя транзакции парачейна в блоки-кандидаты парачейна и создавая доказательства перехода состояния (Proof-of-Validity, PoV) для валидаторов. Но им не нужно предоставлять гарантии безопасности, потому что их предоставляет Polkadot.
Про юзкейсы в Web3
Сначала опишу общие проблемы.
Например, нашим родителям и бабушкам они не уперлись — никто для них юзкейсов не придумал. UI и UX должны работать как понижение входного барьера. Это основные темы, о которых знают все блокчейн компании. По-моему, единственный валидный юзкейс — это существование уже готовых сервисов и сайтов на web3.
Что такое web3? Privacy и you own your data. Это новые модели заработка на контенте, новые модели предприятий и типы трудоустройства — всё это будет привлекать людей в web3, но не к блокчейнам. Экономика на блокчейнах, возможность владеть финансами, с которыми не могут так просто играться правительства стран. Это всё проблемы всех блокчейн-экосистем. Кто следующий появится с новым прорывным юзкейсом — выиграет себе рывок рынка.
Мне кажется, полезнее продвигать web3, а не блокчейн. Если человек заинтересуется блокчейн с технической точки зрения — отлично, появился новый разработчик. Но всё-таки никто не придумал еще годных юзкейсов для большинства обычных людей. Я думаю, что блокчейны должны превратиться в бэкенд-инфраструктуру для web3. При этом, понятное дело, блокчейны с плохими юзкейсами и слабыми сообществами отомрут.
Блокчейн в целом для девелоперов, и пусть таким и останется. Вся токеномика как механизм, который поддерживает безопасность блокчейнов, — тоже не для простых людей. Ну если только для рисковых инвесторов.
Про отличие Polkadot от других блокчейнов
Корневые преимущества Polkadot — наше классное большое и живое комьюнити, причем ни о каких фризах на найм я ни от кого не слышал, централизованная безопасность — но не в кастодиальном смысле, уже вполне взрослая децентрализация, возможность на ходу менять такие корневые вещи, как, например, алгоритм консенсуса. У нас есть гаверненс, где члены распределенного сообщества голосуют за изменения и предлагают свои. У нас уже есть хорошие юзкейсы.
А еще Polkadot — технологически самый продвинутый блокчейн. Чтобы запустить свой парачейн, можно просто прийти с идеей и реализовать только свою бизнес-логику. Соответственно, когда у тебя есть какой-то юзкейс для блокчейна, в нашей экосистеме тебе не нужны будут для этого блокчейн-разработчики, аудиторы и безопасники. Также не обязательно иметь и девопсов, которые будут содержать валидаторы.
Мы активно работаем над снижением порога входа: проводим много конференций, воркшопов и митапов, записываем ролики для любого уровня начинающего. В прошлом году мы запустили Polkadot Academy и обкатали ее на старейшем факультете Кембриджа. Это месячный курс глубокого погружения в разработку блокчейнов на Rust. Большую часть выпускников сразу же наняли мы и другие проекты сообщества.
У нас всё готово для того, чтобы можно было прийти, представить свою идею и получить всё необходимое: грант на развитие, помощь и поддержку от экосистемы. Если нужно, всё остальное можно собрать на Substrate — фреймворке для нашей экосистемы. Но вместе с этим можно и кастомизировать: если ты хочешь на своем парачейне хоть второй уровень консенсуса — пожалуйста, есть инструменты и поддержка. На нем твои правила. Можешь делать что угодно, но в рамках приличия.
Мы, в частности Ютта Штайнер, сооснователь компании, — активно консультируем немецкое правительство и институты в сферах блокчейн и криптоэкономики. Во многом нынешняя вменяемая налоговая политика по крипте в Германии — это заслуга Ютты.
DotSama, кстати, совсем недавно были признаны SEC как Software. Теперь у нас развязаны руки в плане маркетинга. До этого мы откровенно осторожничали, чтобы не последовать в лету по следам TON и, конечно, чтобы нас случайно не сочли очередным скамом. Теперь мы меняем стратегию. Новый CEO компании, Бьорн Вагнер, плотно занимается этим.
Незаслуженно редко упоминают совместный проект Parity и United Nations — World Food Programme. Это приватный блокчейн для поддержки беженцев, им пользуются более миллиона человек! Лауреат Нобелевской Премии Мира 2020. Дело в том, что государства UN не вправе выдавать паспорта беженцам, не могут платить им деньги, брать с них налоги. Всё это стало возможным с помощью блокчейна. Для беженцев выпустили ID и медицинские карты, они получили возможность нормально работать, получать зарплаты и целевую гуманитарную помощь, совершать покупки on-chain. А логинятся они с помощью сетчатки глаза. Киберпанк? Киберпанк. Вскоре они перейдут на Substrate.
Про Zero Knowledge
У нас есть несколько проектов с хорошими ZK идеями. Лично я считаю, что ZK должно быть еще больше. Это очень классное и пока неизведанное поле юзкейсов для блокчейн.
Наши рисерчеры очень серьезно подходят к ZK. Джефф Бёрджес, например, рассказывал недавно на ZK8 про роллапы и прорывную оптимизацию. Просто дело в другом: в Polkadot Relay Сhain для новых ZK-юзкейсов нет места by design. Как парачейн — прекрасно, в этом и суть! Как системный-парачейн (бесплатные, мейнтейнятся из трежери, нужны для целостности системы) — тоже вполне годится. Эта вещь нужна, но она точно не должна забивать основные блоки.
Это хорошая база для запуска роллапов, когда есть децентрализация, высокий уровень количества доверия и в который раз уже упомянутая централизованная безопасность. Как база — оно уже заложено в архитектуру.