ИНТЕРВЬЮ

Профессия «Блокчейн-разработчик»
Примерное время просмотра и прочтения — 60 минут
    На вопросы Криптокадемии отвечает Антон Буков
    Более 15 лет опыта в разработке программных продуктов.

    Получил высшее техническое образование
    по специальности криптография в Академии ФСБ РФ.
    Ведущий преподаватель Криптокадемии.

    Опыт работы в международных
    инфраструктурных блокчейн-проектах
    MultiToken
    Ведущий блокчейн-разработчик
    BitClave
    Ведущий блокчейн-разработчик

    Финалист международных блокчейн-хакатонов
    До того блокчейн-разработки занимался
    iOS-приложениями в компаниях Acronis
    и Machine Learning Works
    Смотрите видео-интервью на YouTube-канале Криптокадемии
    Текст интервью
    Привет, представься, пожалуйста и расскажи о том, чем ты занимаешься в крипто-экономике?

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

    Расскажи, как пришел в блокчейн-разработку, то есть чем занимался до этого?

    Где-то последние пять лет до того, как заняться блокчейном, я занимался разработкой под Apple-платформы — под iOS, MacOS, мне это дело очень нравилось. Потому что инструменты разработки под эти платформы — они очень хорошие, очень качественные. И когда ты решаешь какую-то продуктовую задачу, запиливаешь какую то очень крутую фичу, ты занимаешься конкретно этой проблемой, у тебя нету сложностей со средой разработки, с отладчиком. Все просто работает отлично. И ты занимаешся конкретной проблемой. Вот это мне очень нравилось. Ты мог сфокусироваться на самой задаче, не отвлекаясь на какие-то проблемы. Именно среды и чего-то еще. Вот, после этого я переключился на блокчейн-разработку, то есть где-то в течение года я почитывал различные проекты, вайтпейперы проектов. То, как они работают. Пытался понять, как работает Биткоин, как работает Эфириум — это наиболее базовые вещи, которые точно нужно знать. И в какой-то момент мне предложили поговорить с одним крипто-стартапом, на предмет того, чтоб пойти туда разработчиком. Я считал, что моих знаний и навыков на тот момент было недостаточно, чтоб прям разработчиком идти. Ну да, я знаю, как работает Биткоин, как Эфириум, что они из себя представляют, что там майнеры делают, почему они это делают и так далее. Понимание всего этого было, но разработчиком на тот момент я себя не ощущал, на блокчейне. Так получилось, что мы созвонились в фаундером того проекта, и выяснилось, что знаю я довольно много уже. В этой индустрии, скажем так, была огромная нехватка кадров на тот момент. Да, я думаю, и сейчас нехватка.

    А можешь сказать, о каком времени идет речь? Какой это год?

    Это середина 2017 года. На тот момент в индустрии, да и сейчас, очень мало людей, которые прям понимают, как это все работает. И которые могут создавать что-то новое.

    А ты согласен, что примерно в три раза недостает квалифицированных кадров в блокчейн-разработке?

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

    Про зарплаты тоже интересно, по крайней мере, мне со стороны кажется (я совсем не разработчик), что зарплаты под конец 2017 года были достаточно большие. Превышали зарплаты разработчиков с такими же навыками, но не в блокчейн-экономике. А сейчас просели, и уровень зарплат примерно на 40% стал ниже.

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

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

    Ну я не думаю, что это связано, что я из iOS перешел в крипту. Тут, скорее, важен переход к крипте, потому что у меня в ВУЗе была криптография, то есть мне она нравилась. Это была Академия ФСБ РФ. Специальность была — информационная безопасность. У нас была там криптография, она мне очень нравилась, но она была не на слишком глубоком уровне, на уровне того, что бы мы именно понимали все эти взаимоотношения (что такое симметричное и ассиметричное шифрование и так далее). Вот эти все базовые знания, с пониманием всего этого они должны присутствовать у разработчика, который хочет как-то в тему крипты войти, в тему децентрализации, блокчейнов. Потому что там это очень важно. Фактически, мне так кажется, что эта чуть ли не единственная область, которая прям пронизана криптографией насквозь.

    Согласен. Можешь примерно представить, как разделяются разработчики в крипто-экономике, по типу задач, которые они решают (какие типы разработчиков, какие типы приложений, их навыков)?

    Тут, в принципе, можно как-то их кластеризовать, этих разработчиков. Например, отделить тех, кто занимается смарт-контрактами на блокчейнах, которые поддерживают смарт-контракты. Тут, наверное, самое обширное сообщество разработчиков приходится на сеть Эфириум и другие EVM-подобные. Например ETC, QTUM, ну вообщем их довольно много, POA Network еще. Их немалое количество уже — сетей, которые чуть-чуть по разному работают в плане блокчейна. Но у них одинаково работают виртуальные машины. Внутри которых работают смарт-контракты. Во всех этих проектах суть EVM одинаковая, и когда ты пишешь смарт-контракт, тебе, в принципе, все равно, в какой их этих сетей он будет исполняться.

    Есть разработчики, которые занимаются именно блокчейнами, то есть они пытаются самый нижний уровень вывести на какой-то новый результат. То есть они пытаются консенсусы новые реализовать, еще что-то. Вот эти вот Proof-of-Space и другие темы.

    Есть разработчики, которые занимаются проблемами скорости и масштабирования со стороны офчейна. Они пытаются вынести различные операции, транзакции за блокчейн. То, как работают Lightning Network, Raiden Network и ему подобные. В принципе, и Plasma туда же можно отнести. Это когда люди какую-то сумму денег отправляют в тот же смарт-контракт, потом они офчейном просто на подписях друг с другом общаются. И в конце, когда им нужно прекратить обмены деньгами, они сообщают смарт-контракту, что вот мы тут долго долго общались и пришли к какому-то результату, и они не все свои транзакции в блокчейн сообщают, а только финальное состояние, подписанные ими обоими. И у них нет возможности жульничать, ни одного из них, потому что их жульничество, как бы, доказывается другим участником.

    Я сейчас выделил смарт-контракты, блокчейны, офчейны. В принципе, не напрямую с криптой связанные разработчики различных explorers. То есть, сейчас некоторое количество разработок ведется в этой теме, и open source-разработки ведутся, тот же Etherscan как бы уже существует, но не open source. Вот это всё тоже относится к крипте, но это не про децентрализацию, а те, что я назвал, они, в принципе, про децентрализацию как раз.

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

    Мне кажется, вилки — они всё равно привязаны к твоей геолокации, к городам и странам. В том числе, если ты в Америке, это одни суммы, но, в том числе, из-за налогов различных. Если ты в России, это другие суммы, в Москве — третьи суммы. Я видел недавно, полгода назад, статью на VC про вилку зарплат, что в Москве это, наверное, был конец 2017 года, когда зарплаты были пиковые. Информация была о том что вилка была от 200 000 до 400 000 руб. в Москве у разработчиков в сфере крипты. Ну не знаю, по-моему ощущением, она такая, довольная завышенная была вилка, есть ощущение, что если ты разбираешься в том, как писать смарт-контракты, ты понимаешь, как они будут работать, что их будет выполнять и почему это происходит. То есть у тебя есть какие-то базовые понимания консенсусов от того же самого PoW, PoS, и ты можешь писать смарт-контракты. Не просто писать, чтобы они работали, а можешь писать их, учитывая различные угрозы и атаки, которые на них существует. Ты можешь написать смарт-контракт который не облажается. То есть ты должен знать десяток видов возможных атак на смарт-контракты и учесть их все при разработке смарт-контракта. Я думаю, что не меньше 150 000 руб. ты спокойно можешь просить. От 150 000 до 200 000 руб. в Москве, например, вполне.

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

    А что знаешь про заработок в токенах? Получают ли разработчики? Об этом так много говорится, но всё-таки люди у меня постоянно спрашивают. Действительно ли так? В России это ещё пока никак не разрешено, но в других юрисдикциях возможно.

    Мне кажется, тут ситуация ровно такая же как с опционами. То есть можно договориться какую-то часть зарплаты получать, фиксированную, токенами. Обычно это, ну как и с опционом: происходит вестинг/клиф, когда у тебя, например, через год после начала работы ты сможешь забрать их на руки, но первый год они у тебя копятся ежемесячно (фиксированная сумма в токенах). Вот и у тебя есть мотив делать свою компанию лучше. Повышать ценность токена. Очевидно, если твой токен подорожает в 10 раз, то и твоя прибыль — она вырастет в 10 раз.

    Смысл в том, что у всех проектов есть какое-то количество своих токенов, которые они оставили для себя. Начиная с того, что обычно это около 50% токенов не продано, заканчивая тем, что порядка 15–20–25 процентов токенов положены команде. И вот эта сумма — она делится на команду или на команду в перспективе ее роста. Эти токены — они уже есть, и ты просто договариваешься о том, чтобы получать фиксированную сумму токенов ежемесячно. Вестинг — на несколько лет. Ну там 2–3 года — зависит от условий в данном случае. Рост курса этого токена напрямую скажется на твоем благосостоянии. И у тебя будет мотивации работать над проектом во внеурочное время в том числе.

    Ты мне говорил про участие в различных хакатонах. То есть как вообще разработчик себя может еще показать, кроме как результатом внутри своего проекта, на который он работает?

    Ну я вообще очень люблю хакатоны. Это такое место, где ты можешь прийти, не разбираясь вообще, как писать смарт-контракты. Там ты сможешь пообщаться с людьми, которые тебе быстро покажут, что и как. Вот ты можешь быстро именно так интенсивно разобраться в какой-то теме. В том числе, пообщаться со специалистами, которые там уже собаку съели. Если у вас есть возможность сходить на хакатон, обязательно идите. В любом случае, эти сутки или больше, сколько вы там потратите, они не пройдут даром. У вас точно будет больше шансов. Потому что если вы дома просто читаете про крипту, работаете на работе (разработчиком или не разработчиком), а дома читаете про крипту несколько часов в день (1−2 часа) вы всё равно не так сильно въедете даже за месяц, чем просто сходите на хакатон. Ну и вообще там такая атмосфера рабочая, все работают сидят. Ты там можешь в очень сжатые сроки реализовать какую то очень крутую идею.

    За последнее время я участвовал в 2 хакатонах. Один был в мае. Его проводили Bankex Foundation. Он вообще в очень интересном формате проводился — по сути, это был их первый хакатон. Вот они сейчас, видимо, планируют еще проводить хакатон (он назывался Proof of Skill). Вот там организация хакатона была на высшем уровне. Он был очный, там обязательно было физическое присутствие. Мне понравилось, что у них было значительное количество специалистов, у которых можно было получить помощь, проконсультироваться. То есть даже несмотря на то, что я в мае этого года уже был таким матерым разработчикам смарт-контрактов. У меня всё равно возникали проблемы со смарт-контрактами, в том числе с дебагом транзакции. Чтобы понять, почему транзакция упала там в мэйннете в том же самом. Ну на тот момент мне нужно было потратить кучу сил и времени. И вот мы там совместно со специалистами дебажили это всё. Вот сейчас я уже делаю это намного проще. Ну блин, прошло полгода. Теперь эту задачу я недавно научился решать другим способом. И, собственно, на этом хакатоне я реализовал идею MultiToken.

    То есть идея была написать такой смарт-контракт, в который люди могут вкладывать другие токены. Они в нём лежат, и там вот ключевая идея была в том, что смарт-контракт мог автоматически ребалансировать токены, которые в него входят. То есть ты мог создать смарт-контракт из токенов ABC и указать что хочешь, чтобы пропорции ценности этих токенов удерживались в каком-то фиксированном соотношении — 1 к 2, к 3… Вот после чего смарт-контракт с помощью своих функций обеспечивал поддержку этих ценностей. То есть, курсы токенов меняются, а он меняет их количество на балансе таким образом чтобы ценности остались. Работало это аналогично тому, как работает Banсor.

    Banсor — это обменник на смарт-контрактах, и вот любой крупный блокчейн проект — он базируется на какой-то довольно-таки простой идее, которую кто-то в свое время придумал, она неочевидная, но она простая, и когда ты в него въезжаешь, ты такой «вот почему этот проект существует». Я тогда въехал в то, как работает Banсor, и мне захотелось их идею прокачать дальше. У них фактически на смарт-контракте лежат два токена — это их токен BNT и любой другой токен, который нужен. Вот и их смарт-контракт — он находится в режиме такой суперпозиции. Он считает, что ценности обоих токенов на нём находятся в сбалансированном состоянии. Вот и он позволяет любому участнику, любому кошельку, кто захочет, через него производить обмен одного токена на другой. И вот и формула по которой он это делает — она не включает цены токена. То есть сам смарт-контракт, он не знает сколько токен, А стоит на бирже. Но знает, что сейчас у него ценности токена, А и ценности токена Б равны. А это значит, что если кто-то захочет там 100 монет поменять, он знает также баланс, А и Б, он может понять, сколько ему монет B надо отдать в ответ. Это такая просто формула, не зависящая от цен.

    Мне на хакатоне захотелось усилить эту идею. Сделать контракт не только с двумя токенами, а прокачать ее до нескольких токенов. Идея MultiToken состоит в том, что ты загружаешь некоторое количество в него, указываешь желаемые пропорции, и он удерживает их. Точно так же любой токен позволяет менять на любой. На хакатоне я сделал какую-то первую версию-демонстрацию, с какими-то тестами, которые показывали работоспособность с контрактами. Запускал и видел, что контракт ведет себя ожидаемым образом. Тесты показывали, что он может. После этого где-то в течение нескольких недель мы раскачивались и решили сделать из него проект.

    Продолжаете работать над проектом? С той же командой с хакатона?

    Работать над самим проектом мы стали со своей текущей командой. Мы просто взяли и решили сделать этот проект в режиме внутреннего хакатона компании за месяц. То есть за сутки я реализовал MVP. Но это такая штука: она вроде работает, но чтобы его запускать и показывать людям, чтобы они могли ей пользоваться, там нужно ещё море работы сделать. Вот и мы решили за месяц устроить такой хакатон в компании — сделать несколько разных проектов. Мы разбились на группы по 6-7 человек и делали несколько различных проектов про децентрализацию. И один из них был MultiToken (я как раз им занимался). Еще у нас были проекты, посвященные пуллингу для ICO на смарт-контрактах. То есть сейчас те, кто собирают пулы — они рискуют держать деньги на своих собственных кошельках. Во-первых, потому что у них могут их украсть, а во-вторых, потому что им просто не слишком удобно потом делить токены. Ну это же всё вручную делаешь. И совсем другое дело, когда все люди скидываются на смарт-контракт, менеджер, например, решает, куда эти деньги перевести, и полученные токены автоматически делятся правильным образом. Каждый может их забрать. При этом смарт-контракт учитывает комиссию пуловика, который, собственно, организовывал сам этот вход там в приватный раунд, не приватный и так далее. Вот, и в том числе, у нас была идея поддержать режим, когда никто никому не доверяет, люди могут в каком-то рандомном телеграм-канале объединиться, скинуть деньги все вместе, а потом каждый из них должен проголосовать. 100% участников должны решать, куда именно отправить деньги. Тогда адрес, например, ICO известен, они просто дружно решают отправить деньги. Зачем это может быть нужно? А затем, что каждый из них может войти там на $ 100-$ 1000. А когда они там в 100 человек объединяются, суммы у них значительные, и бонусы значительные. Очень многие ICO предлагают значительные бонусы. Если ты войдешь на несколько десятков или сотен тысяч долларов, ты можешь получить на несколько десятков процентов больше токенов. Вот это и есть определяющий фактор. Но если тебе придется деньги скидывать как будто на кошелёк для этого, то это не очень хорошая идея. Начиная с того, что они могут соскамиться сами, их могут просто украсть. Но не хотелось бы с такими историями вообще связываться. Мы придумали сделать смарт-контракт, который как раз позволяет 100% участников проголосовать за то, куда отправлять деньги. Вот попутно решали проблему того, как избавляться от участников, которые не голосуют, потому что они могут все 100% проголосовать, где-то что-то пропадёт, куда-то уедет, вне зоны доступа и так далее. Но мы тогда просто решили, чтобы какой-то весомый, процент чуть ли не 50% могут голосовать за исключение любого участника из пула. Исключается, ему деньги возвращаются. Не голосуешь? До свидания!

    В скольких компаниях, в скольких проектах ты успел поработать (в блокчейн-экономике). С чего ты начал? Чем сейчас занимаешься? Сколько примерно было внутри этого пути проектов?

    Да, за полтора года года где-то, я поработал в двух компаниях. Но количество проектов, над которыми я успел поработать, оно намного больше, то есть мы в первой компании работали над open source различными небольшими проектами. А какие-то такие MVP… Ты просто придумываешь какую-то оригинальную идею, запиливаешь ее, пишешь к ней тесты. Выкладываешь ее на GitHub, пишешь статейку на Medium. Ее заценивают какие-то люди. Просто приобретаешь такой актив и для компании, для себя, потому что сейчас вся эта тема только развивается. Если ты какое-то прикольное решение придумываешь, в течение следующих нескольких месяцев/лет его находят другие разработчики, начинают им пользоваться, у тебя там и звёздочки на GitHub, и всё. Ну такая социальная развивающая тема для разработчиков. Что мне очень нравится в теме именно блокчейнов и вообще крипто-разработки — это то, что вся эта разработка — она ведётся открыто. То есть ты работаешь над кодом, который все видят. А вот это очень важно, потому что какие-то крутые вещи, которые ты можешь придумать и предложить всем остальным, их видят все остальные, они могут их оценить. Ну и ты можешь получить какой-то профессиональный фидбэк. От каких-то разработчиков. Придумываешь какую-то штуку, выкладываешь ее. И какие-то профессионалы, которых ты не знаешь и никогда не списался бы с ними, они могут оценить тебя и дать какой-то фидбэк: что бы тут можно было сделать лучше, а вот тут хорошо, и так далее.

    Я работал над самим продуктом и запилил некоторое количество MVP, например мультисиг-кошелек был с бесконечным количеством владельцев. То есть у него было ограничено только количество незавершенных голосований на одного человека. Число порядка нескольких десятков можно было выставить. То есть в перспективе этот смарт- контракт — он позволял бы сделать, например, токен с голосованием, где каждый участник, каждый владелец токена, может голосовать своей долей, например. Если это был такой базовый контракт, который можно было использовать как угодно, можно было сделать кошелёк с мультисигом, можно было сделать токен с мультисигом и так далее. А вот это был такой базовый именно контракт, предоставляющий дочерним контрактам возможности мультисига.

    Вот там было некоторое количество различных проектов, были различные истории как мы деньги восстанавливали, отправленные не туда. Там было не очень много, несколько тысяч долларов отправили. Дело было так: завели смарт-контракт в тестовой сети и тестировали. И в какой-то момент какой-то из членов команды сказал, чтобы кто-то другой из команды закинул туда денег, и он закинул на этот адрес в мейннете эфира. И мы такие: «Блиин, что делать?». Ну мы где-то денёк или два подумали-потужили, но ничего не поделать пока. После чего я обнаружил, что адреса смарт-контрактов, когда ты заливаешь, они выбираются не случайным образом, они фактически являются хэш-функцией от адреса того, кто заливает, и номера транзакции nonce. После чего мы быстренько поняли, что по тому адресу, в который мы залили в тестовой сети, можно по этому же адресу залить в основной сети смарт-контракт. Мы быстренько написали смарт-контракт, который позволяет все деньги с него достать и сделали там десяток транзакции, чтобы nonce поднять, и залили этот смарт-контракт, и получилось что залили в тот же самый адрес. Потом мы вызвали функцию «забрать оттуда деньги». Вот кейс очень успешный получился.

    Мы написали на его основе статью она называлась как-то «Как мы спасли деньги, спасли эфиры, отправленные не туда». В общем, с тех пор я получил порядка уже больше сотни различных комментариев этой статье на Medium. Где люди пишут, как они потеряли деньги, и они спрашивали могу ли я, как разработчик, помочь им вернуть? Там различные способы совершенно были потери денег — 101 способ потерять деньги, начиная с того, что люди не в ту сеть пытались послать. То есть пытались послать эфиры в адрес, который находится в ETC. Это еще такие приемлемые варианты, которые можно как-то восстановить. Заканчивая тем, что люди отправляли деньги на смарт-контракты в какие-то пирамиды. И говорили, что «ну там же смарт-контракт — мне сказали, это безопасно». А там смарт-контракт, даже без исходников залитый. Ну чтоб вы понимали: если у смарт-контракта не залит исходник, то там нечего делать. Ничего хорошего не будет. Вот потому что, начиная c того, что там могут быть баги, закачивая тем, что там может быть специально не очень хороший код, который сделает что-нибудь не очень хорошее с вашими деньгами. Смарт-контракты — это атмосфера абсолютной прозрачности. Все исходники должны быть залиты, ты можешь доверять смарт-контракту только тогда, когда ты прочитал его исходный код, понял все особенности его работы и, в том числе, прочитал возможные варианты угроз для него, то есть различные возможности атак разработчики должны учитывать. Чтоб их смарт-контракт под этими атаками не лег.

    Расскажи: ты до интервью говорил мне про свой драйв в профессии. Вот как раз про отношение к смарт-контрактам, как к посреднику, которого можно контролировать?

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

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

    А вот когда ты пытаешься повзаимодействовать с блокчейном биткоина, с сетью Bitcoin, тут майнеры взаимодействуют с нодами и так далее. Ты создаешь транзакцию, которая пытается перевести какое-то количество биткоинов откуда-то куда-то. Фактически, блокчейн биткоина — он проверяет, во-первых, являешься ли ты владельцем (цифровую подпись транзакций). Потом он проверяет, достаточное ли у тебя средств на счету, чтобы этот перевод совершать. Если всё OK, он совершает перевод. А если всё не OK он тебе скажет «извини». Он именно активный участник, который может сделать, а может сказать нет. А вот Bitcoin в данном случае, если сравнить его с Эфириумом, он вообще простой.

    Эфириум — это улучшенная идея биткоина. Идея состоит в том, что Bitcoin — это просто балансы и возможности их изменять путем транзакции. Абстракция биткоина выглядит так. А если посмотреть на Эфириум, люди подумали, Виталик Бутерин подумал и сказал «а давайте не просто баланс хранить, а хранить по адресам программы". И ты можешь путём транзакций запускать эту программу, загружать в виртуальную машину, вызывать метод, и состояние меняется. Ты сохраняешь обратно. То есть в биткоине у тебя балансы и транзакции изменяют балансы. А тут у тебя состояние программы, транзакции изменяют состояние программ. Это такой шаг вперед по сравнению с биткоином. И получается, что у тебя есть тьюринг-полный язык программирования смарт-контрактов, и ты можешь запрограммировать практически любое поведение. То есть если Bitcoin — это просто про перевод денег, то сеть Эфириум — это про совершенно любой вид взаимодействия. Там, конечно, существует множество ограничений по смарт-контракту. Он не может лазить никуда наружу доверенно. То есть он не может нам узнать температуру на улице просто так. Для этого нужны какие-то способы организации, чтобы кто-то туда эти данные представлял. Они каким-то образом верифицировались и так далее. Вот это всё уже не так просто. Но на уровне каких-то взаимодействий он может быть очень полезен. И я так представляю, что сейчас очень малое количество этих возможных взаимодействий реализовано или начата реализация.

    У человечества никогда не было алгоритмически запрограммированного честного посредника, причём честность здесь в данном случае, гарантируется огромным числом майнеров, которые желают зарабатывать деньги. Вот это вот желание майнеров зарабатывать деньги — только оно гарантирует безопасность в сети. То есть тебе, фактически, чтобы скомпрометировать сеть Bitcoin или Эфириум, надо уговорить большую часть майнеров не деньги зарабатывать, а заниматься какой-то фигнёй с тобой, сеть атаковать, ещё что-то. Вот о том, что даже, возможно, атаки — они в целом не так страшны. Максимум, что можно сделать, имея там 51% хешрейта сети Bitcoin, можно откатить какую-то старую транзакцию, но нельзя ни у кого похитить какие-то деньги, которые не переводил и так далее. То есть ты можешь просто создать блок, исключающий какую-то транзакцию, которая была вот недавно. Вот это всё равно не слишком страшно. На мой взгляд оно не всем угрожает, а угрожает кому-то конкретному одному в худшем случае.

    Если вот технически взять несколько проектов, по твоему мнению, какие самые крутые на данный момент? К чему стоит присмотреться, например, разработчику? Мы сейчас не говорим об инвесторах, которые хотят выбрать ICO топовые. Вот именно технически самые классные проекты, на твой взгляд, какие были и есть?

    Ну я не то, чтобы слежу. Я каждый раз, когда в поле моего зрения попадает в какой-то интересный проект, ну то есть который кажется интересным, я читаю его вайтпепер. Обычно не целиком. Обычно ищу в вайтпепере ту часть, которая касается каких-то технических деталей в принципе. Из описания проекта на главной странице мне должна быть понятна их цель, и что они делают. Но тут сразу появляются вопросы: а как они решают такие и такие такие проблемы, которые первыми приходят на ум фактически. Но если ты приблизительного в этой теме уже разбираешься, ты можешь предположить, какие проблемы у них возникают. Заходишь на вайтпепер, и когда ты находишь ответы на эти вопросы, ты говоришь — «а, понятно, вот так вы сделали». И ты оцениваешь это решение, либо оно тебе нравятся: «прикольно придумали, молодцы» — тогда проект хороший. Либо ты говоришь «блин, вы тут муть написали что-то, увиливаете». То есть проблема всё ещё не решена, а вы хотите ее как-то решить потом. Да-да, но лучше бы ее было решить до того, как вы в вайтпепер написали. Потому что это очень хорошо, когда ты читаешь вайтпепер и видишь в нем решение проблемы.

    Я сейчас смотрю за тем, как Эфириум решает проблему масштабирования. Они делают шардинг и переход на Casper. Это новый алгоритм консенсуса, там несколько имплементаций есть. Вот это очень интересно сейчас, потому что довольно часто бывает такое (раз в несколько месяцев такое бывает), что сеть Эфириум оказывается довольно-таки заспамленной, и транзакции стоят довольно дорого. То есть в целом никакой проблемы нет, она работает, и все хорошо. Но транзакции стоят дорого, для кого-то. Для кого-то это нормально, для кого-то — нет. То есть вот эта вот цена газа, она. Майнеры делают очень просто: они видят все транзакции, которые хотят попасть в блокчейн, и говорят: «ну мы выберем самые дорогие и их включим в блок». И если ты готов заплатить, чтоб попасть в блок, то OK. Если ты готов подождать час, ты платишь чуть пониже. Есть различные сайты которые рассчитывают эти эстимейты, сколько ты хочешь ждать. Если ты хочешь мгновенно, то такая цена. Если ты хочешь в течение нескольких минут, то такая цена. Если тебе за те несколько часов надо попасть, то цена будет другой. Есть способы заплатить поменьше, но ты будешь ждать, то есть проблемы на самом деле никакой нет. Но кажется субъективно, что цены дорогие, все плохо, сеть заспамлена. Но на самом деле, если у тебя корректно написанный софт, который цену газа берет не из головы, не из константы, а запрашивает у какого-нибудь источника, который вот так вот оценивает газпрайсы. То у тебя будет работать. Просто для каких-то задач цены комиссии могут оказаться непосильными. То есть ты смотришь на транзакцию: она сложная (так миллион газа требует, и у тебя это будет там за 5 долларов). Ты такой: «но это задача не может стоить 5 долларов». Типа то, что ты получишь в результате транзакции, оно может быть меньше 5 долларов, и тебе тогда это невыгодно. А может быть и больше там — 100 долларов. Тогда тебе в принципе 5 долларов не очень важны — тоже зависит от ситуации, от того, кто транзакции выполняет и зачем ему это.

    Мне очень интересны проблемы консенсусов, того, как работают консенсусы Накамото PoW, PoC. А вот чуть настороженнее я отношусь консенсусам BFT — мне кажется, там возможны какие-то проблемы в будущем. Меня вдохновляют консенсусы на Proof-of-Space, Proof-of-Replication, касающиеся объемов данных. Это очень интересные вещи. Например, есть монетка Birds, которая майнится майнерами на жестких дисках, то есть люди генерируют, генерируют — не скачивают, генерируют огромные файлы, и потом, раз в несколько минут в процессе майнинга, они что-то порядка 1,004 части со всего хранилища рассчитывают для них быстренько хэши. Они не очень быстро, не очень долго читаются. Там дольше времени занимает само считывание. Вот и это есть процесс майнинга. Они все ищут псевдослучайно, получить там некоторое количество нулей в начале, точно также как в PoW. Просто здесь отличия в том, что они, эти файлы, они создаются путем последовательного вычисления хэшей, и ты не можешь считать их на лету. Тебе нужно прочитать 4 миллиона кусок, 8 миллионов кусок. И ты не можешь на лету до него досчитать. Это очень тяжело, тебе проще записать их в файл, а потом быстренько считать. Поэтому это есть Proof-of-Сapacity (PoC) — они его называют. Мне в целом кажется очень интересным, он, в принципе, как PoW работает. Тоже накамотовский, можно считать, консенсус. Но он по энергоэффективности очень хорош — там в десятки тысяч раз более энергоэффективный, потому что жесткие диски сейчас жрут порядка 10 Ватт (диодная лампочка какая-то). Ты можешь 8-террабайтный жесткий диск включить (10 Ватт жрет — ни о чем).

    А можешь сказать, что не нравится в профессии?

    Мне иногда не нравится, когда какие-то, проекты претендующие на децентрализацию, совсем не децентрализованы. То есть они претендуют на децентрализацию, но у них там нету ее. А вот есть некоторое количество проектов которые как-то пытаются сковать вопросы децентрализации, при этом делают вид, что у них всё децентрализованное. Но это не очень хорошо. Я не буду называть конкретных названий. Мне нравится, когда децентрализация, когда огромное количество компьютеров по всему миру, они приходят какому-то соглашению — о том, как должны какие-то транзакции куда-то попасть. И как бы среди них нет лидера, и нет возможности их остановить Если кто-то сделал транзакцию и послал нам там даже с большой комиссией сети Эфириум, как бы она кому-то не нравилась, какой-нибудь из майнеров ее возьмет и включит в блок. Потому что она дорогая, она выгодна, она ему там пол эфира принесет.

    Очень нравится и идея того что весь веб движется к Web 3.0 Мне тоже очень нравится, потому что Web 2.0 — это когда у тебя есть пользователи, у тебя есть сервера, есть компании-владельцы этих серверов, которые, собственно, владеют этим софтом: крупные социальные сети, почтовые программы, сервисы. И они владеют не только софтом, они владеют контентом. Весь этот контент, который ты туда дружно заливаешь, он тебе принадлежит, но они используют. В том числе, для того, чтобы на тебя рекламу таргетировать. Еще бог знает для чего. Вот, а Web 3.0 — это идея очень крутая. Идея в том, что есть пользователи, есть сервисы которые работают где-то не на конкретном железе, а где-то вот в блокчейнах. И есть разработчики этих систем. И есть твои данные, лежащие в этих системах, и разработчики этих систем — они не имеют доступа к твоим данным. Ты не даёшь доступ к своим данным, какой-то компании. Ты доверяешь свои данные какой-то системе, которую обслуживают какие-то разработчики. Они не имеют доступа к твоим данным. Ну то есть, не знаю, различные сервисы там, типа того же Steam. Они начинают вот это — блогинг-платформа Steam. Где ты можешь писать статьи, за лайки получать вознаграждение. И, в том числе, вознаграждаются те, кто промоутят статьи, которые потом собирают много лайков. То есть если ты нашел какую-то крутую статью, но не оцененную сообществом. Ты можешь ее запромоутить, и потом от того сколько там будет лайков от неё собрано, ты тоже получишь вознаграждение. Если ты такой молодец, нашел какую-то крутую статью и продвинул ее в сообществе, тебе за это тоже будут деньги капать. Потому что ты — молодец.

    И тут получается, что в принципе возможно… Ну не то, что возможно, а планируется, я так понимаю, создание и социальных сетей, различных существующих на данный момент сервисов, но Web 3.0. Это когда эти сервисы будут просто обслуживаться какими-то компаниями, которые их разрабатывают, но сами эти компании не будут иметь доступа к контенту. Мессенджеры и социальные сети, почтовые сервисы и так далее. То есть это всё будет лежать там надежно, зашифрованное и распределенное по большому количеству компьютеров, и ты будешь иметь к этому доступ. Потому что у тебя есть определённые ключи, позволяющие тебе получить этот доступ. Ты там какими-то ключами поделился с друзьями, чтобы они могли получить какой-то доступ. Вот, но в целом не будет какой-то компании, владеющей этим контентом, держащей его у себя и анализирующей его. Вот это мне очень нравится.

    Смотри, если разработчик сейчас думает, переходить в блокчейн-экономику или нет. Вот ТОП-3, что бы ты посоветовал делать? Начать делать не в плане проекта, а с самим собой это сделать?

    1. Ну во-первых, я рекомендую почитать именно то, как все работает. То есть понять, как работает Bitcoin — это просто обязательно. Там нет ничего сложного. Даже можно не въезжать, как работает UTXO. Важно понять именно то, как работает абстракция биткоина, что там майнеры делают. Потому что есть огромное количество заблуждений, даже у людей, которые являются программистами/разработчиками, а они не понимают, как работает биткоин. И они имеют различные догадки, что там сеть биткоина, она имеет огромную мощность. Они говорят: «а что, если они там пароли перебирают какие-то». Ну то есть у человека нет понимания, что происходит, то есть нет такого-то понимания экономики, модели этого проекта биткоина. Потому что за перебор пароля тебе никто столько не заплатит, сколько тебе заплатят за майнинг биткоина. То есть сейчас раз в 10 минут в сети Bitcoin появляется блок, вознаграждение за него — 12,5 BTC (допустим, по текущему курсу это порядка $ 80 000, каждые 10 минут $ 8 000 дарятся всем майнерам). Значит, за сутки они сколько зарабатывают. И так далее: можно рассчитать, сколько майнеры мира зарабатывают за месяц именно биткоинов. Вот эти работающие фермы — это бизнес. А он дает какой-то там постоянный им доход, и если ты им говоришь какой-то пароль перебирать на этом же оборудовании, надо сразу посчитать, сколько им придётся за это заплатить. Ни меньше, чем если бы они майнили биткоин. Они, конечно, с радостью переключатся на перебор твоих паролей каких-то, если ты им заплатишь больше. Ну раз в 10 минут, это все майнеры раз в десять минут, конечно, получают. Смотря какая ферма. Можно посчитать фактически, сколько ферма зарабатывает. Если заплатишь ей за перебор паролей своих на 20−40 процентов больше, чем она сейчас зарабатывает, то она, конечно, переключиться на твою задачу, но не до такой степени, что все майнеры мира будут там какой-то пароль твой перебирать. Вполне возможно создание таких сервисов на смарт-контрактах, где публикуется зашифрованный пароль, и тебе говорится, что тот, кто найдёт, тому вот и выплатим сумму (в смарт-контракте лежит), это без проблем.

    2. Я так предполагаю, если человек собирается входить в эту сферу, наверное, он пойдёт в смарт-контракты. Но, конечно, не уверен. Он может попытаться в разработку блокчейна пойти. Ну не знаю, мне тут сложнее оценить. То есть я могу сказать, что разработка смарт-контрактов — она, в принципе, не очень сложная. То есть тебе нужно просто познакомиться с языком, со стандартной библиотекой, которой нет. Это не шутка, к сожалению. А вот есть библиотеки, которые в принципе можно будет считать стандартными когда-нибудь. Например, Open ZeppelinSolidity библиотека. Вот нужно, в том числе, почитать, как она устроена, чтобы потом не велосипедить, а просто взять какие-то готовые вещи из неё. Я, кстати, не очень люблю, когда встречаю код на смарт-контрактах, и там человек написал всё с нуля. Хочется сказать: «А зачем ты потратил реально какие-то недели времени, чтобы это всё написать? Оно уже всё есть. Ты просто вот возьми вот эти классы готовые там, отнаследуйся от них, и все. Зачем ты несколько месяцев это писал, потом ещё аудит надо делать вот на всё это».

    В смарт-контрактах есть такая хорошая черта — это же самые библиотеки OpenZeppelin, они разрабатывают такие смарт-контрактики, которые точечно применяются. Ты потом можешь от них ото всех отнаследоваться и такую композицию создать (там множественное наследование используется). И оно разруливает, оно превращается во время компиляции в линейное наследование. Это тоже нужно понимать. Потому что люди думают, что у них множественное наследование, значит, у них несколько родителей может быть и так далее. Там это не так на самом деле. Оно выглядит так, но на деле это не так. Нужно с этим знакомиться тоже. Вот и в целом там различные какие-то аспекты поведения, они пишутся отдельными смарт-контактами, которые можно каждый по отдельности покрыть тестами. Доказано, что там тесты есть. Доказано, что вот эти все компоненты по отдельности работают. Ты так собираешь, дописываешь какой-то свой код, либо туда же, либо отдельно его тоже наследуешь, либо еще каким-то образом реагируешь. Вот и получаешь смарт-контракт, в котором ты написал не так много, а большая часть — она уже написана и взята откуда-то. И тебе проверять уже не так много. Нет стольких возможностей облажаться. Потому что, если ты облажаешься в смарт-контракте, это может быть очень печально. А вот собственно все истории, когда кто-то облажался в смарт-контракте, они очень печально звучат. В итоге это потерянные деньги.

    3. Наверно, это криптография. То есть нужно разобраться с тем, как работают эти цифровые подписи, эллиптические кривые. Вот это не очень сложно. То есть, смотря на каком уровне пытаться это изучить. Как работает эллиптическая криптография — это не очень сложно. Это займет какую-нибудь неделю, несколько дней. Зависит от подготовки человека. Но нужно понимать, чем кодирование отличается от шифрования, что такое симметричное, асимметричное, иметь представление, что в блокчейне всё публичное. Если ты какое-то поле делаешь приватным, это не значит, что ты защитишь значение, которое там лежит. Просто большая часть людей не смогут его посмотреть. Ну кому надо, смогут. Всё это все равно хранится. Чтобы ты понимал, что все вычисления в смарт-контракте — они доступны всем. И все значения всех переменных. Если ты пытаешься каким-то образом через смарт-контракт организовать какой-то защищенный канал данных, чтобы пользователи обменивались, и это не было всем видно, что именно они передают, для этого нужно какие-то способы шифрования использовать.

    А если работать идти, с чего начать лучше? Например, с контрактной разработки, например, тех же смарт-контрактов? Пойти в блокчейн-стартапы? Блокчейн-департамент большой компании? Вот с чего бы ты начинал?

    Я бы рекомендовал на хакатон пойти. Потому что там можно было бы написать какие-нибудь первые свои смарт-контракты, реально. Вот в такой ситуации, когда ты вынужден быстро сделать что-то.

    А сколько всего лет ты уже в разработке? Не в блокчейн-разработке, а в целом?

    Уже лет 15. Я сколько себя помню, пишу код. То есть я какое-то количество лет, около 5−7 лет, занимался разработкой на С++. При этом несколько лет на С# (кроссплатформенная разработка). Очень полезно, мне кажется, для развития. А когда ты пишешь какую-то программу, потом она может работать на Windows, на Mac и на Linux. А потом вот из такой хардварной С++ разработки я ушёл в iOS. Мне всегда нравилось разрабатывать что-то поближе к железу. То есть я не люблю разрабатывать какие-то там веб-приложения, что-то вот такое, совсем отдалённое в виртуальных машинах, мне это немного чуждо. Я всегда пытался быть поближе к железу — С++, iOS. В iOS-разработке тогда еще использовался язык-брат С++ - Objective C, он тоже вышел из языка С. Вот и у него тоже появились классы, но они реализованы другим образом. Конечно, очень интересные вещи. То есть на С++, я помню, решал какие-то прям серьёзные задачи. Были там с расчетами даже, были иногда серьезнее. Когда я перешел в iOS, я больше увлекся реализацией каких-то очень крутых штук. Там дизайнер чего-нибудь нарисует, несусветное. А ты берёшь и за сутки делаешь это, например. И дизайнер не верит своим глазам. Ну что-нибудь такое.

    Вот, например, когда я под iOS работал, я общаюсь с огромным количеством различных дизайнеров, которые именно мобильные дизайнеры. И дизайнеры мне очень часто жаловались, что вот он там нарисует что-то крутое, а ему разработчик говорит: «извини так не получится, я сделаю вот так». Ну и дизайнер очень расстроен. Это очень часто бывает, можно на том же самом Dribbble увидеть какие-то крутые скетчи каких-то мобильных приложений крутетских вообще, а потом находишь через полгода это приложение, скачиваешь его — там ничего нет. Ну потому что дизайнер нарисовать смог, а разработчик не осилил разработать. И мне эта позиция кажется совершенно неправильной — когда разработчик говорит дизайнеру, что что-то невозможно. То есть на самом деле, практически всё, что нарисует дизайнер, можно сделать. Ну то есть реально все, 99.9%. Просто зачастую какие-то вещи — они могут занять очень много времени. А когда такие вещи встречаешь, надо приходить к какому-то компромиссу, как-то облегчать и так далее. Но чем меньше тебе потребуется вот таких компромиссов, тем ты круче, как разработчик. Пусть твой уровень, как разработчика, как раз зависит от того, насколько ты можешь реализовать то, что кто-то другой нарисовал. Вот я конкретно про дизайн мобильных приложений сейчас говорю. У меня именно такая всегда была цель, именно максимально сделать близко к тому, что задумано. Когда задумано красиво, если ты сможешь это реализовать, также красиво будет круто. У меня какая цель была, и iOS я занимался, в основном, потому что мне нравились инструменты разработки: среда разработки, отладчик, performance-аналайзер — вот это всё. Она у Apple очень хорошо сделана. И ты, когда занимаешься какой-то задачей там, пытаешься видео процессить в приложении, тебе надо над каждым кадром очень эффективно его обрабатывать. Ты прям занимаешься этой задачей, анализируешь производительность своего кода, улучшаешь самые узкие места и так далее. Ты когда вот всем этим занимаешься, не замечаешь инструментов, потому что они очень хорошо сделаны, слаженно работают. Ну внутри одной экосистемы это всё очень хорошо работает. Вот она намного лучше чем, на тот момент, когда пробовал под Android разрабатывать. Там в тот момент еще Android Studio не было, и там очень были большие проблемы с созданием UI и в общем это мне всё дико не нравилось. Apple, конечно, в этом плане очень хорошо сделали, и ты мог именно, на продукты ориентируясь, какие-то именно фичи делать — над ним работать очень хорошо.

    А вот что изменилось с переходом в область смарт-контрактов. В смарт-контрактах главное — не фичи. А главное — это код. Потому что если ты что-то там напишешь, какой-то супер красивый код под iOS, этот код никто не увидит, только если ты догадаешься, как отдельную библиотеку опубликовать, и то его всё равно никто не посмотрит. Там вероятность того, что в него кто-то реально заглянет, очень мала. А если ты говоришь о смарт-контрактах, то все будут в первую очередь смотреть на этот код. Именно смотреть на код. И тут важна не фишка, которую ты реализовал, накодив что-нибудь, а важно то, как ты этот код написал. И ты можешь, как разработчик смарт-контрактов, например, потратить неделю на то, чтобы сделать твой код еще лучше, чтобы он был и производительней ещё и, не знаю, красивее. Просто он должен быть короче и более выразительным. То есть не так, чтобы ты сжал переменные до одной буквы и его прочитать невозможно. Он должен быть легко читаем и в тоже время эффективен. Чем меньше ты кода напишешь, тем лучше. Потому что если у тебя будет смарт-контракт на 4 млн газа, там просто 100% будут какие-то баги. Если ты не провел несколько аудитов. Вот если ты напишешь смарт-контракт строк в 100 какой-нибудь, там можно на глаз оценить — есть там баги, нет там багов. Скинешь нескольким знакомым разработчикам смарт-контрактов, они тоже прикинут на глазок, есть у тебя там баги или нет. И в целом, очень много внимания уделяется именно коду — вот это мне нравится.

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

    Интервьюер — Антон Гугля
    2018

    Связанные публикации


    Берем интервью у экспертов блокчейн-экономики
    о самых востребованных профессиях, актуальных проблемах отрасли и трендах