Децентрализованные приложения: как выглядит Web 3.0?
Перевод
Это перевод статьи Г. Вуда, которая бала опубликована в среду, 17 апреля 2014 года, в блоге gavofyork «Взгляды на современный мир»: https://gavwood.com/dappsweb3.html.
(Так) как выглядит Веб 3.0?
По мере того как мы движемся в будущее, растёт потребность в системе взаимодействия с нулевым доверием.
Ещё до Сноудена мы понимали, что доверять свою информацию произвольным субъектам в Интернете - чревато. Однако после Сноудена этот аргумент явно на руку тем, кто считает, что крупные организации и правительства регулярно пытаются расширить и превысить свои полномочия.
Таким образом, мы понимаем, что доверять свою информацию организациям в целом - в корне неверная модель. Вероятность того, что организация не станет вмешиваться в наши данные, равна лишь требуемым усилиям за вычетом ожидаемой выгоды. Учитывая, что модель их доходов предполагает, что они должны знать о людях как можно больше, реалист поймёт, что потенциал злоупотребления информацией трудно переоценить.
Протоколы и технологии в Сети, да и вообще в Интернете, послужили отличной технологической предысторией. Такие рабочие лошадки, как SMTP, FTP, HTTP(S), PHP, HTML, Javascript, помогли создать богатые облачные приложения, которые видим сегодня: Google Drive, Facebook и Twitter, не говоря уже о бесчисленных других приложениях, таких как игры, сервисы онлайн-покупок, банки и сервисы знакомств.
Однако в будущем многие из этих протоколов и технологий придётся перестраивать в соответствии с нашим новым пониманием взаимодействия между обществом и технологиями.
Веб 3.0, или, как его ещё называют, «постсноуденовский» веб, - переосмысление тех вещей, для которых уже используем веб, но с принципиально иной моделью взаимодействия между сторонами.
Информацию, которая, как предполагаем, является публичной, мы публикуем. Информацию, которая, как предполагаем, должна быть согласована, мы помещаем в консенсус-реестр. Информацию, которая, как предполагаем, является приватной, держим в секрете и никогда не раскрываем.
Общение всегда происходит по зашифрованным каналам и только с псевдонимными идентификаторами в качестве конечных точек; никогда с чем-либо отслеживаемым (например, IP-адресами).
Короче говоря, создаём систему, чтобы математически обеспечить выполнение наших предварительных предположений, поскольку ни одному правительству или организации нельзя доверять.
Существует четыре компонента Веба после Сноудена: 1) публикация статического контента, 2) динамические сообщения, 3) недоверенные транзакции и 4) интегрированный пользовательский интерфейс.
Первый компонент у нас уже есть: децентрализованная, зашифрованная система публикации информации.
Всё, что она делает, - принимает короткий внутренний адрес некоторой информации (хэш, если быть точным) и через некоторое время возвращает саму информацию. (Далее) можно отправлять новую информацию. Загрузив её, мы можем быть уверены, что это именно та информация, которая нам нужна, поскольку её адрес является неотъемлемой частью (самой информации).
Эта система статической публикации составляет большую часть работы HTTP(S) и FTP. Существует множество реализаций этой технологии, но самая простая из них - BitTorrent. Каждый раз, когда нажимаете на magnet-ссылку BitTorrent, всё, что делаете, это говорите своему клиенту загрузить данные, чей внутренний адрес (хэш) равен (искомому).
В Web 3.0 эта часть технологии используется для публикации и загрузки любой (потенциально большой) статической порции информации, которой мы с удовольствием делимся.
Как и в случае с Bit Torrent, мы можем стимулировать других к сохранению и распространению этой информации, однако в сочетании с другими компонентами Web 3.0 - можем сделать это более эффективным и точным (процессом).
Поскольку система стимулирования является неотъемлемой частью протокола, мы становимся (во всяком случае, на этом уровне) защищёнными от DDoS в силу дизайна (протокола).
Вторая часть Web 3.0 - псевдонимная низкоуровневая система обмена сообщениями, основанная на (определённой) идентификации. Она используется для общения между людьми в сети.
При этом (такой подход) использует сильную криптографию, чтобы обеспечить ряд гарантий для сообщений: они могут быть зашифрованы с помощью открытого ключа, чтобы гарантировать, что только (конкретная) личность сможет их расшифровать. Они могут быть подписаны закрытым ключом отправителя, чтобы гарантировать, что сообщение действительно исходит от (нужного) отправителя, и обеспечить получателю безопасное получение сообщения. Общий секрет может обеспечить возможность безопасного общения, в том числе между группами, без необходимости подтверждения получения.
Поскольку каждый из этих способов обеспечивает конечную логистику сообщений, использование адресов на уровне протокола передачи становится ненужным; адреса, где раньше были пользователь или порт вместе с IP-адресом, теперь становятся просто хэшем.
Сообщения будут иметь время жизни (time-to-live), что позволит разграничить сообщения для публикации, которым, возможно, нужно «прожить» как можно дольше, чтобы гарантировать, что их увидят как можно больше людей, и сообщения мгновенные, которые нужно передать по сети как можно быстрее.
Таким образом, дихотомия задержки и долговечности снимается.
Фактическая физическая маршрутизация будет осуществляться с помощью теоретико-игровой адаптивной сетевой системы. Каждый пир пытается максимизировать свою ценность для других пиров, утверждая, что другие пиры ценны для них за входящую информацию. Пир, чья информация не представляет ценности, будет отключен, а его место займёт другой, возможно, неизвестный (или, возможно, вторичный), пир. Для того чтобы пир был более полезным, необходимо запрашивать сообщения с определёнными атрибутами (например, адресом отправителя или темой - оба незашифрованные - начинающиеся с определённой битовой строки).
В Web 3.0 эта часть позволяет общаться всем на равных, обновляться и самоорганизовываться в реальном времени, публикуя информацию, приоритет которой не требует внутреннего доверия или последующих ссылок. В традиционном Web это большая часть информации, которая передаётся по HTTP в реализациях в стиле AJAX.
Третья часть Web 3.0 - механизм консенсуса. Биткоин познакомил многих из нас с идеей приложения, основанного на консенсусе. Однако это был лишь первый шаг.
Механизм консенсуса - средство согласования некоторых правил взаимодействия с уверенностью в том, что будущие взаимодействия (или их отсутствие) автоматически и бесповоротно приведут к исполнению именно того, что указано.
По сути, это всеохватывающий социальный договор, который черпает свою силу из сетевого эффекта консенсуса.
Тот факт, что последствия отказа от одного соглашения могут отразиться на всех остальных, является ключом к созданию прочного общественного договора и, таким образом, уменьшению изменений, связанных с отказом от соглашения или умышленным игнорированием.
Например, чем больше система репутации изолирована от более личной системы социального взаимодействия, тем менее эффективной будет система репутации.
Репутационная система в сочетании с функциями Facebook или Twitter будет работать лучше, чем без них, поскольку пользователи придают большое значение тому, что думают о них их друзья, партнёры или коллеги.
Особенно ярким примером этого является сложный вопрос о том, стоит ли, и если да, то когда, дружить в Facebook с работодателем или партнёром (супругом).
Для всех доверительных публикаций и изменений информации будут использоваться механизмы консенсуса.
Это будет происходить через полностью обобщенную глобальную систему обработки транзакций, первым работоспособным примером которой является проект Ethereum.
Традиционный веб в корне не решает проблему консенсуса, вместо этого опираясь на централизованное доверие к организациям, таким как ICANN, Verisign и Facebook, и сводясь к частным и правительственным веб-сайтам вместе с программным обеспечением, на котором они построены.
Четвёртый и последний компонент Web 3.0 - технология, которая объединяет всё это вместе: «браузер» и пользовательский интерфейс.
Как ни странно, он будет выглядеть довольно похоже на интерфейс браузера, который уже знаем и любим. Здесь будет панель URI, кнопка «назад» и, конечно же, львиная доля будет отдана отображению ĐApp.
Используя эту, основанную на консенсусе, систему разрешения имён (в применении не похожую на NameCoin), URI можно свести к уникальному адресу фронтенда этого приложения (т.е. хэшу).
С помощью системы публикации информации он может быть расширен до коллекции файлов, необходимых для фронтенда (например, архива, содержащего файлы .html, .js, .css и .jpg).
Это статическая часть ĐApp. Она не содержит динамического содержимого: оно обслуживается через другие каналы связи. Для сбора и отправки динамического, но общедоступного контента, происхождение которого должно быть абсолютно определено и который должен храниться неизменно/вечно («застыть в камне»), например, репутации, баланса и так далее, существует API на базе Javascript для взаимодействия с консенсус-двигателем.
Для сбора и отправки динамического, потенциально приватного контента, который обязательно изменчив и может быть уничтожен или недоступен, используется p2p-messaging-engine.
Будет несколько поверхностных отличий: мы увидим отход от традиционной клиент-серверной модели URL-адресов типа «https://address/path» и вместо этого начнём видеть адреса новой формы, такие как «goldcoin» и «uk.gov».
Разрешение имён будет осуществляться контрактом на основе консенсуса и может быть тривиально перенаправлено или дополнено пользователем. Периоды позволят использовать несколько уровней разрешения имен - например, «uk.gov» может передавать под-имя «gov» в преобразователь имён, заданный «uk».
Из-за постоянно меняющейся природы информации, автоматически и случайно предоставляемой браузеру через обновление бэкэнда консенсуса и поддержание пиринговой сети, увидим, как фоновые ĐApps или ĐApplets будут играть большую роль в нашем опыте Web 3.0.
Либо через всегда видимую динамическую инфографику в стиле Mac OS dock, либо через динамические ĐApplets в стиле приборной панели, мы будем постоянно в курсе того, что нас волнует.
После первоначального процесса синхронизации время загрузки страницы сократится до нуля, поскольку статические данные предварительно загружены и гарантированно обновлены, а динамические данные (доставляемые через механизм консенсуса или p2p-сообщений) также поддерживаются в актуальном состоянии.
При синхронизации пользовательский опыт будет безупречным, хотя фактическая информация может быть устаревшей (хотя может и не быть, и может быть обозначена как таковая).
Все взаимодействия будут осуществляться псевдонимно, безопасно и для многих сервисов - без доверия.
В тех случаях, когда требуется третья сторона (-ии), инструменты дадут пользователям и разработчикам приложений возможность распределить доверие между несколькими различными, возможно, конкурирующими организациями, что значительно сократит объём доверия, которое необходимо оказывать любой отдельной организации.
С разделением API на внешние и внутренние, мы увидим дополнительные возможности для использования различных внешних решений, способных обеспечить превосходный пользовательский опыт.
Технологии Qt QtQuick и QML могут, например, стать заменой HTML/CSS традиционных веб-технологий и обеспечить нативные интерфейсы и богатую ускоренную графику с минимальными синтаксическими накладками и на высокоэффективной парадигме реактивного программирования.
Переход будет постепенным, в Web 2.0 мы всё чаще будем видеть сайты, бэкенды которых используют компоненты, похожие на Web 3.0, такие как Bitcoin, BitTorrent, NameCoin.
Эта тенденция будет продолжаться, и платформа Ethereum, действительно похожая на Web 3.0, скорее всего, будет использоваться сайтами, которые хотят обеспечить транзакционное подтверждение своего контента, например, сайтами для голосования и биржами.
Конечно, в системе безопасно только самое слабое звено, поэтому в конечном итоге такие сайты перейдут на браузер Web 3.0, который сможет обеспечить сквозную безопасность и бесконтактное взаимодействие.
Скажите «привет» Web 3.0, безопасной социальной операционной системе!