Эта статья является переводом поста Винсента Чена (Vincent Chen) и Рамона Рекуэро (Ramon Recuero), цели которого очень схожи с теми, что преследуем и мы, и написанного для таких разработчиков, которых мы хотели бы видеть на своих мероприятиях.

Введение


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

Целью нашего поста является:

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

Если же вы только начинаете разбираться в этой теме, мы рекомендуем вам начать с чтения bitcoin white paper и white paper для Ethereum.

Сдвиг парадигмы для разработчиков


Веб-приложения выгодно использование сетевого эффекта благодаря тому, что они придерживаются централизованного хранения информации. Построенные на общих открытых протоколах (например, TCP/IP и HTTP), компании Yelp, Facebook и Amazon выигрывают от того, что всех их пользователи и, в результате, их данные находятся в одном месте. Таким образом, они не просто получают преимущество над конкурентами, у которых имеется меньше данных, но и держат полный контроль над тем, как монетизировать эти данные. Цитируя криптоинвестора Джоэла Монегро:

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

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

«Исторически сложилось, что единственным способом заработать на протоколе было создание программного обеспечения, которое его реализует, с последующей попыткой продавать данное ПО (а в последние годы — хостить его). Однако с помощью криптографических токенов создатели протокола могут «монетизировать» его напрямую и фактически получают еще больше выгоды по мере того, как другие создают бизнесы на основе их протокола».

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

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

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

Ethereum


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

Восемь лет назад Bitcoin воспринимался как виртуальная валюта, которая устраняет необходимость существования централизованных финансовых систем. Первоначально разработчики действительно пытались строить приложения поверх блокчейна Bitcoin с сохранением данных в самом блокчейне, однако достаточно быстро выяснилось, что это весьма неэффективный подход (об этом тоже есть старый пост Джоэла). Один из таких разработчиков, Виталик Бутерин, был разочарован «малоподвижностью» Bitcoin и его принципом избегания риска в части новых, дружественных разработчикам функций. Поэтому он создал свою собственную платформу, Ethereum.

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

Dapps, токены и смарт-контракты


Нынешние блокчейн-разработчики обычно создают распределенные приложения (dapps, сокращение от distributed apps) поверх существующих протоколов для того, чтобы решить конкретные бизнес-задачи и удовлетворять конечных пользователей. Таким образом, разработчики могут выпускать токены, или койны (app coins), которые используются для выполнения конкретных «функций» распределенных приложений, в отличии от «универсальных» токенов, которые используются как монетки для игровых автоматов. Эти функции и есть смарт-контракты, которые предоставляют сервисы распределенного приложения в обмен на цифровой актив, тем самым убирая необходимость в посреднике для проверки транзакций. Другими словами, смарт-контракты обещают, что за один токен вы получите одну партию за игровым автоматом.

По мере того, как функциональность распределенный приложений становится все более востребованной, стоимость фиксированного количества койнов приложений растет как функция спроса и предложения. Другими словами, если ваш игровой автомат оказывается по-настоящему запоминающимся и начинает пользоваться спросом, то ограниченное количество токенов начинает расти в цене. Это принцип, лежащий в основе ICO (initial coin offereing), в рамках которых разработчики занимаются сбором инвестиций предлагая койны в обмен на капитал для финансирования их проектов.

Но постойте, здесь вы можете спросить: «Почему бы не использовать существующий токен вместо того, чтобы выпускать свой, специфический для приложения?». Дело в том, что специфические токены конкретных распределенных приложений позволяют создавать мелкие экономики, которые способствуют осуществлению основного замысла приложения. Эти токены выступают в роли ограниченных ресурсов, которые можно регулировать согласно функциональности приложения. Здесь и приходит на помощь Ethereum: при помощи Ethereum разработчики могут с легкостью выпускать свои собственные токены.

Возможности на ранних этапах


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

На мета-уровне также существуют возможности для инноваций в стеке разработки. Многие блокчейн-разработчики сравнивают современное состояние инструментов и фреймворков с тем, что происходило в вебе в годы становления Интернета. Когда мы разговаривали об этом с Беном Ю из Stream, он описал это как новую возможность для разработчиков:

«Сейчас есть очевидная задача сделать блокчейн более доступным для широких масс, блокчейн нужно провести из 1994 года в 2018-ый, а для этого потребуется построить много технической инфраструктуры».

Технологические инновации блокчейна многих натолкнули на идею построения нового, децентрализованного веб-стека, который будет независим от централизованных правительств и корпораций. Традиционный стек в вебе состоит из кирпичиков вроде TCP/IP, DNS, баз данных, веб-серверов, систем аутентификации и CDN, и мы в процессе воспроизведения этих компонентов при помощи базовых платформ вроде Ethereum.

Проблемы неизменяемости


К сожалению, технология похожая на ранние итерации JavaScript, почти всегда содержит в себе проблемы, самые частые из которых связаны с устойчивостью протоколов к фальсфикации. Разработчики не могут изменить лежащий в основе блокчейн или высокоуровневые смарт-контракты. Отсутствует простой способ версионирования библиотеки или контрактов. Недавний баг в Parity, который заблокировал средства объемом в 150 000 000 $, наряду с другими подобными инцидентами, лишний раз напоминает нам о необходимости построения надежных архитектур.

Брэндон Милман, разработчик в 0x, следующим образом описывает влияние неизменяемости блокчейна на безопасность:

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

Разработчики — особенно те, кто привык к бешеному темпу мира стартапов — вынуждены задумываться о компромиссах между скоростью и защищенностью. Бен Ю по этому поводу сказал:

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

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

Ограничения Ethereum


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

Более того, спецификация Ethereum препятствует вычислениям в реальном времени. Обработка блока транзакций занимает до 15 секунд (что прямо-таки молниеносно в сравнении с 10 минутами, которые требуются биткоину). В результате, разработчики вынуждены писать асинхронный код, взаимодействующий с фронтенд-фреймворками, которые умеют работать с такой моделью обновления состояний (например React).

В случае с Ethereum, вы также связаны обязательством платить за свои транзакции, выполняя операции с «газом», который превращается в эфиры Ethereum. По этой причине при использовании текущей версии Solidity вы быстро упираетесь в лимит транзакций, если вычисления, которые вы пытаетесь выполнить, будут слишком дорогими (как, например, проверка на мат для игры в шахматы). В результате вычисления на блокчейне становятся весьма дорогостоящими в плане денег и нагрузки на сеть. Существуют интересные альтернативы (например, Truebit), позволяющие выполнять интенсивные вычисления вне сети.

Начало работы


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

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

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


Нельзя не упомянуть и сообщества для разработчиков:


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

  • Создайте свой собственный кошелек. Это может быть веб, мобильное или десктоп-приложение.
  • Создайте свой собственный ERC-20 токен и разверните его в тестовой сети.
  • Замените криптокотиков на криптособачек, крпитотанки или криптозомби и разверните в тестовой сети.

Вперед в будущее


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

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



От себя хотим обратить внимание и на русскоязычное сообщество блокчейн-разработчиков:


Ну и конечно, пригласить на нашу специализированную конференцию DeCenter TokenConf про блокчейн-технологию. Это единственная конференция в России, целиком и полностью рассчитанная на аудиторию разработчиков блокчейна. За рамки программы принципиально вынесены все вопросы, касающиеся ICO, майнинга, криптовалют и спекуляций. Только чистая технология.

Комментарии (1)


  1. yetanothercoder
    15.02.2018 15:27

    Технологические инновации блокчейна многих натолкнули на идею построения нового, децентрализованного веб-стека, который будет независим от централизованных правительств и корпораций. Традиционный стек в вебе состоит из кирпичиков вроде TCP/IP, DNS, баз данных, веб-серверов, систем аутентификации и CDN, и мы в процессе воспроизведения этих компонентов при помощи базовых платформ вроде Ethereum.


    пока в это слабо верится что в ближ время чтото независимое от правительств/корпораций получит подавляющее распрастранение большинством масс так сказать: много холиваров уже было на этот счет и как показывает практика — запретить что децентрализованное тоже особо сложностей не представляет (торренты пример и снижение его общего траффика после блокировок рутрекеров).
    Либо же правительства под эгидой децентрализации продвигают какой-то свой блокчейн и законами обязуют использовать только его а далее там хоть и атака 51% и другие махинации так сказать какие надо.