Что такое децентрализованные приложения? 21.09.2017

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

Некоторые из них распределенные, некоторое количество – децентрализованы. На картинке нижу представлены 3 модели программного обеспечения.

Что такое децентрализованное приложение?

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

В чем же разница между централизованными и распределенными моделями?

Распределенная – означает, что вычисления разделены среди множества узлов вместо одного Каждый узел отвечает за часть данных и если убрать один из узлов, вычисления могу нарушиться.

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

Может ли системы быть одновременно распределенной и децентрализованной?

Да, это возможно. Биткоин распределен, потому что его публичная бухгалтерская книга, блокчейн, размещен на множестве компьютеров. Он также децентрализован, потому что если один узел выйдет из строя, все сможет продолжить работу. Это означает что, любое приложение, использующее блокчейн наряду с другими одноранговыми технологиями может быть одновременно и распределенным и децентрализованным. Приложения, которые способны достичь децентрализованного консенсуса – настоящая инновация.

Децентрализованный консенсус является единственным требованием децентрализованного приложения?

Сейчас среда разработки децентрализованных приложений является новым полем, с большим количеством умных людей, которые все еще экспериментируют с новыми моделями. Разные разработчики придерживаются различного мнения что такое децентрализованные приложения. Некоторые разработчики считают, что отсутствие центральной точки отказа – это все что нужно, другие считают, что есть еще дополнительные требования. Основное внимание, как всегда, привлекают приложения пм которых разработчики и пользователи смогут заработать денег. Причиной сосредоточения внимания на возможной прибыли является то, что прибыль является краеугольным камнем устойчивого, надежного и успешного приложения. Финансовый стимул сохраняют интерес разработчиков, лояльность пользователей и поддержку блокчейна майнерами.

Особенность № 1: Открытый исходный код

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

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

Любое приложение может быть приложением с открытым исходным кодом. Почему же они не становиться таковыми?

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

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

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

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

Особенность № 2: Внутренняя валюта

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

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

Как же тогда разработчики децентрализованных приложений с открытым исходным кодом предполагают зарабатывать деньги?

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

Означает ли это, что пользователи должны платить за использование любого децентрализованного приложения?

И да и нет. Несмотря на то, что блокчейн является оплачиваемым, существуют различные способы структурировать стимулы к оплате. Пользователи могли бы получать бонус в виде монет за регистрацию или даже продавать свои данные или дисковое пространство для обмена на монеты. Помимо использования апкоинов, создатели приложений могли бы монетизировать виртуальные активы, такие как недвижимость в децентрализованных MMORPG, домены в специальных областях или репутацию.

Особенность № 3: Децентрализованный консенсус

До Биткоина консенсус правильности транзакций всегда требовал некоторой степени централизации. Если вы хотели произвести платеж, ваша транзакция должна была пройти через платежные шлюзы, которые контролируют все транзакции. Биткион является пиринговой (P2P) сетью, что означает что узлы могут общаться друг с другом напрямую. P2P сети это не что-то новое и оригинальное. Распределенные таблицы хешей (DHT), такие как BitTorrent были изобретены до блокчейна. DHT отлично подходят для хранения и передачи децентрализованных данных, но если вам нужны структурированные данные уровня приложений, такие как имена пользователей, обновление статусов, счета и т.д. в которых вам нужно согласие всех участников сети, то вам нужен блокчейн. Блокчейн не заменяет DHT, а дополняет. Что делает блокчейн уникальным – решение проблем безопасности DHT.

Блокчейн – это децентрализованная база данных транзакций и это первая децентрализованная база, которая хорошо защищена от несанкционированного доступа. Безопасность блокчейна была главной целью. Это первый организационно децентрализованный и логически централизованный журнал транзакций.

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

Умные контракты

Смарт-контракты – это фрагмент кода, который живет в блокчейне. Когда срабатывает запрограммированное условие, смарт-контракт выполняет условия, которые в нем заложены. Вы можете подумать, «Чем он отличается например от Stripe API?»


if (user.sendsMoney(customerID))
{
    runContract();
}

func runContract()
{
    println('hello world');
}

Одно большое отличие – смарт-контракты живут в блокчейне, а не на сервере. Не требуется третьей доверенной стороны и нет необходимости доверять Stripe или владельцу сервера. Более формально смарт-контракт можно описать так: «Криптоэкономически безопасное исполнение кода». Следует иметь ввиду, что не все децентрализованные приложения содержат в себе смарт-контракты, а лишь некоторые.

Особенность № 4: Отсутствие центральной точки отказа

Децентрализованное приложение не может быть отключено, потому что нет сервера, который можно отключить. Данные в приложении разнесены по всем узлам сети. Каждый узел независим. Если один узел выйдет из строя, все остальные продолжат работать. Существует несколько децентрализованных баз данных, которые позволяют реализовать такую схему работы. Например Interplanetary File System, BitTorrent и независимые DHT.

История децентрализованных приложений

Раньше, Web был не так полезен, как сейчас с массой приложений и сервисов, которые делают практически все, что угодно. С самого начала Web был довольно децентрализован. Протокол HTTP соединил всех на планете у кого есть компьютер и интернет. В руководствах к протоколу HTTP есть набор доверенных серверов, которые переводят web-адрес, который вы вводите в адрес сервера (DNS   сервера). Кроме того HTTPS добавляет еще один уровень доверенных серверов и центров сертификации. И это все.

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

Простой ответ – это было легко, как концептуально, так и программно. Это было самой легкой задачей и это сработало. Один человек или группа оплачивает обслуживание сервера и получают прибыль от пользователей, которые используют программное обеспечение на нем. Такие приложения как MySpace и Yahoo были одними из первых популярных централизованных приложений. Новые приложения, такие как Uber и Airbnb децентрализуют «реальные» (физические) части бизнеса, предоставляя централизованные и надежные хранилища данных. Их децентрализованная бизнес модель предзнаменует развитие еще более децентрализованных приложений.

По мере роста HHTP, разработчиком Брамом Коэном, был представлен новый протокол под названием BitTorrent. BitTorrent был протоколом, который был создан для того, чтобы решить проблему длительного времени загрузки больших медиафайлов через HTTP, и как улучшение некоторых P2P сервисов, таких как Gnutella, Napster и Grokster. Проблема была в том, что загрузка больших файлов занимала много времени и по мере роста сети ограничивался размер файла, который можно было скачать. Между тем, пространство на жестком диске увеличивалось и все больше людей были подключены к сети Интернет. BitTorrent решил эту проблему сделав из загрузчиков файлов также и раздающих эти файлы.

Если был файл, который вы хотели загрузить, вы бы загрузили его не с одного источника, а из многих. Чем популярнее этот файл, тем больше будет пользователей, которые будут его загружать а затем и раздавать. И чем больше источников загрузки, тем выше скорость скачивания. Сидеры вознаграждались быстрой скоростью загрузки, а личеры имели ограничения по скорости. Такая система «зуб за зуб» по передаче данных оказалась очень полезной для больших медиафайлов, таких как фильмы и TV программы.

BitTorrent вырос и для многих является де-факто способом загрузки различного контента с большим размером, такого как игры и фильмы. Механизм скорости, гибкости и вознаграждения для этих целей оказался лучше, чем HTTP.

Почему тогда Web не работает таким способом?

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

Примеры децентрализованных приложений

PopcornTime

PopcornTime использует BitTorrent протокол для потоковой передачи видео между пользователями в режиме реального времени, как Netflix для торрентов. Это худший кошмар для американской ассоциации кинокомпаний Motion Picture Association of America. Никакой регулятор не может это закрыть и все имеют доступ к бесплатным фильмам. PopcornTime оказался полезным приложением, действующим как децентрализованная версия Netflix. Создатели утверждают, что он был загружен во всех странах, даже в двух тех, где нет интернета. PopcornTime не использует внутреннюю валюту и не нуждается в децентрализованном консенсусе, поэтому реализация на блокчейне не имела. Это просто потоки фильмов и это оказалось очень ценным.

OpenBazaar

OpenBazaar стремиться стать децентрализованной версией eBay. Никакой посредник не может сказать продавцам что они могут, а что не могут продавать или принять решение о комиссиях за использование сервиса. Он построен на BitTorrent протоколе, но проблема в том, что продавцы должны обслуживать свои собственные магазины. Они должны иметь свой собственный сервер для того, чтобы пользователи могли видеть их товары. В идеале продавцы могут просто загружать свои данные в сеть, возможно заплатив небольшую плату, не беспокоясь об остальном. Для этого требуется децентрализованная система хранения и поощрения. OpenBazaar использует BitTorrent протокол для передачи данных и биткоин в качестве валюты для транзакций между покупателями и продавцами.

FireChat

FireChat возник с известным случаем использования – в 2014 году Гонк-Конг протестовал за демократию. Известный «Великий китайский фаервол» печально известен тем, что блокирует IP-адреса с содержанием, которое не в интересах Китая. Протестующие опасались, что правительство закроет доступ к различным социальным сетям, чтобы остановить протестующих, как это можно сделать с протоколом HTTP. Вместо этого они использовали FireChat, приложение, которое использовало новую функцию iOS 7 – многопользовательские соединения, которая делала возможным соединения устройств друг с другом без использования третьей стороны. Поскольку у него не было единой точки отказа, правительство было вынуждено вручную закрывать каждый узел. Таким образом протестующие смогли общаться друг с другом надежно. Децентрализованное восстание в чистом виде.

Lighthouse

Lighthouse – это Биткоин кошелек со встроенным рядом умных контрактов. Эти умные контракты помогают собирать деньги для определенных проектов, как Kickstarter. Когда цель достигнута становиться возможным извлечь деньги из кошелька Lighthouse. Те кто жертвует, могут отменить пожертвование в любой момент, без участия автора проекта.

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

Gems

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

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

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

Существует множество криптовалют, которые удовлетворяют всем четырём критериям, но криптовалюты не являются децентрализованными приложениями. Я говорю о децентрализованных социальных сетях, совместном использовании, поисковых движках – сделать крупные известные сервисы децентрализованными. Ответ – пока нет. Это возможно – технология существует и как только появиться несколько таких сервисов, шквал разработчиков начнут массовое движение для того чтобы заработать деньги для себя и пользователей.

Перспективные технологии децентрализованных систем

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

Когда Биткоин был создан, стал возможным децентрализованный консенсус. Алгоритм доказательства работы не является совершенным – он дорог как вычислительном, так и в энергетическом смысле. Есть альтернативные валюты, которые решают полезные задачи, такие как PrimeCoin, чьи майнеры используют свои вычислительные ресурсы для нахождения простых чисел. В мире, где Биткоин является де-факто валютой, мы будем использовать много энергии для поддержания сети, энергии, которая может быть использована лучше, чем просто поддержка сети.

Проблема заключается в том, что алгоритм доказательства работы является единственной известной системой, предотвращающий так называемую Сибил-атаку. Исследования в области децентрализованных консенсусов продолжается и не останавливается только на доказательстве работы, но сейчас это лучшее, что мы имеем. Что касается ближайших конкурентов этого алгоритма, есть один, который приходит на ум – это Доказательство доли (proof-of-stake). Доказательство доли также не является совершенным, но он может дополнить доказательство работы.

Доказательство доли – это механизм консенсуса, который для предотвращения Сибил-атаки полагается не на вычислительную мощность, а на наличие доли монет в сети. Обычно, наличие доли означает количество монет, которыми обладает майнер. Идея состоит в том, что чем больше криптовалюты вы имеете, тем больше вы готовы инвестировать в стабильность сети и тем меньше вероятность, что вы захотите провести атаку 51% на блокчейн. Делегированное доказательство доли – это инновационная модель, где набор из 101 делегата может голосовать на генераторе блоков. Оба этих решения - делегированное доказательство доли и обычное доказательство доли все еще проходят испытания, но если они окажутся надежными в долгосрочной перспективе, то они могут быть использованы как дополнение или даже замена доказательства работы.

Термины. Что такое DAO?

Децентрализованные приложения (DA)

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

Децентрализованные организации (DO)

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

Люди не должны быть единственными, кто принимает решения. Умные контракты берут на себя некоторые задачи, например выплаты на определённую дату. DO не должно базироваться в одном определенном городе, члены организации могут быть распределены по всему миру. В некоторых системах (например Биткоин) сговор рассматривается как дефект системы. В децентрализованной организации сговор – это особенность. В политической сфере мы называем децентрализованной власть демократии. Мы видим, что некоторые стартапы выбирают децентрализованную структуру, особенно в качестве инструментов удаленного сотрудничества. Например такие как Slack или GitHub.

Автоматизированные агенты (AA)

AA не нужно представлять как SkyNet, искусственный интеллект или что-то в этом духе. У нас уже были автоматизированные агенты по крайней мере в течении 10 лет. AA – просто означает часть программного обеспечения, которое работает без человеческого вмешательства, автономно. Хорошим примером служит компьютерный вирус. Разработчик создает вирус, который должен действовать автономно. После этого вирус может копировать и выполнять алгоритмы в зависимости от ситуации. Другой пример – это демон в Unix подобных операционных системах. Демон – это программа, которая запускается как фоновый процесс в операционной системе. Автоматизированные агенты не требуют какого-либо обслуживания, но непроверенные агенты может стать неконтролируемым источником возможных опасностей для человечества.

Децентрализованные автономные организации (DAO)

DAO, это примерно тоже что и децентрализованные организации (DO), за исключением того, что решения принимают автоматизированные агенты, а не люди. Протокол живет в децентрализованном стеке и не нуждается в юридических связях. Люди не ответственны за принятие решений, они находится с краю системы. AA принимаю решения и DAO обслуживает сама себя. DAO также определяется тем, что имеет не только автоматизированные агенты, но и внутренней капитал. Сговор не рассматривается отдельно как в DO, а интерпретируется как ошибка. Биткоин – пример DAO.

Перевод отрывка из книги Siraj Raval «Decentralized Applications - Harnessing Bitcoin’s Blockchain Technology»

Текущие курсы валют

BTC -
BCH -
LTC -
ETH -
ETC -
ZEC -
XRP -
DASH -