что такое децентрализованная сеть
Идея децентрализованной социальной сети следующего поколения
В данной статье я представляю вам свои размышления на тему истории и перспектив развития интернета, централизованных и децентрализованных сетей и как итог — возможной архитектуры децентрализованной сети следующего поколения.
С интернетом что-то не так
Впервые я познакомился с Интернетом в 2000 году. Конечно, это далеко не самое начало — Сеть уже существовала до этого, но то время можно назвать как первый расцвет Интернета. Всемирная паутина — гениальное изобретение Тима Бернерса-Ли, web1.0 в его классической канонической форме. Множество сайтов и страничек, ссылающихся друг на друга гиперссылками. На первый взгляд — простая, как все гениальное, архитектура: децентрализованная и свободная. Хочу — путешествую по сайтам других людей, переходя по гиперссылкам; хочу — создаю свой сайт, на котором публикую то что мне интересно — например свои статьи, фотографии, программы, гиперссылки на интересные для меня сайты. А другие размещают ссылки на меня.
Казалось бы — идиллическая картина? Но вы уже знаете чем всё это закончилось.
Страничек стало слишком много, и поиск информации стал весьма нетривиальным делом. Прописанные авторами гиперссылки просто не могли структурировать этот огромный объем информации. Сначала появились каталоги, наполняемые вручную, а затем и гигантские поисковые системы, которые стали использовать хитроумные эвристические алгоритмы ранжирования. Сайты создавались и забрасывались, информация дублировалась и искажалась. Интернет стремительно коммерциализировался и уходил все дальше от идеальной академической сети. Язык разметки быстро превратился в язык форматирования. Появилась реклама, мерзкие надоедливые баннеры и технология раскрутки и обмана поисковиков — SEO. Сеть быстро засорялась информационным мусором. Гиперссылки перестали быть инструментом логической связи и превратились в инструмент раскрутки. Сайты закукливались, замыкались на себе, превращались из открытых «страничек» в герметичные «приложения», становились лишь средствами получения дохода.
Еще тогда у меня возникла некая мысль, что «что-то здесь не так». Куча разных сайтов, начиная от примитивных домашних страничек с вырвиглазным внешним видом, и заканчивая «мегапорталами», перегруженными мелькающими баннерами. Даже если сайты по одной теме — они совсем никак не связаны, у каждого свой дизайн, своя структура, надоедливые баннеры, плохо работающий поиск, проблемы со скачиванием (да, мне хотелось иметь информацию оффлайн). Уже тогда интернет начинал превращаться в какое-то подобие телевидения, где к полезному контенту гвоздями приколочена всяческая мишура.
Децентрализация превратилась в кошмар.
Что же хочется?
Парадоксально, но мне как пользователю не нужна была децентрализация! Вспоминая свои незамутненные размышления тех времен, я прихожу к выводу что мне была нужна… единая база данных! Такая, запрос к которой выдавал бы все результаты, а не наиболее удачно подошедшие для алгоритма ранжирования. Такая, в которой все эти результаты были бы оформлены единообразно и стилизованы моим собственным единым оформлением, а не вырвиглазными самопальными дизайнами многочисленных Васей Пупкиных. Такая, которую можно было бы сохранять оффлайн и не бояться что завтра сайт исчезнет и информация пропадет навсегда. Такая, в которую я мог бы заносить свою информацию — например комментарии и теги. Такая, в которой я мог бы производить поиск, сортировку и фильтрацию своими личными алгоритмами.
Web 2.0 и социальные сети
Тем временем на арену вышла концепция Web 2.0. Сформулированная в 2005 году Тимом О’Рейли, как «методика проектирования систем, которые путём учёта сетевых взаимодействий становятся тем лучше, чем больше людей ими пользуются» — и подразумевающая активное вовлечение пользователей в коллективное создание и редактирование контента Сети. Без преувеличения, вершиной и триумфом этой концепции стали Социальные Сети. Гигантские платформы, объединяющие миллиарды пользователей и хранящие сотни петабайт данных.
Что же мы получили в соцсетях?
Кроме того, по мере развития Интернета им заинтересовались правительства и корпорации, в связи с чем возникли проблемы политической цензуры и копирайтных ограничений. Наши странички в соцсетях могут забанить и удалить, если контент не соответствует каким-то правилам соцсети; за неосторожный пост — привлечь к административной и даже уголовной ответственности.
И вот мы вновь задумываемся: а не вернуть ли нам децентрализацию? Но в другой форме, лишенной недостатков первой попытки?
Пиринговые сети
Первые p2p сети появились еще задолго до web 2.0 и развивались параллельно с развитием веба. Основное классическое применение p2p — файлообмен; первые сети разрабатывались для обмена музыкой. Первые сети (такие как Napster) были по сути централизованными, и потому их довольно быстро прикрыли правообладатели. Последователи пошли по пути децентрализации. В 2000 году появляются протоколы ED2K (первый клиент eDokney) и Gnutella, в 2001 — протокол FastTrack (клиент KaZaA). Постепенно степень децентрализации увеличивалась, технологии совершенствовались. На смену системам с «очередью закачки» пришли торренты, появилась концепция распределенных хеш-таблиц DHT. По мере закручивания гаек со стороны государств стала более востребованной анонимность участников. С 2000 года ведется разработка сети Freenet, c 2003 года — I2P, в 2006 стартовал проект RetroShare. Можно упомянуть многочисленные p2p сети, как существовавшие ранее и уже исчезнувшие — так и действующие сейчас: WASTE, MUTE, TurtleF2F, RShare, PerfectDark, ARES, Gnutella2, GNUNet, IPFS, ZeroNet, Tribbler и многие другие. Их много. Они разные. Очень разные — и по назначению, и по устройству… Наверное многим из вас даже не все эти названия знакомы. И ведь это далеко не всё.
Однако у p2p сетей есть масса недостатков. Помимо технических недостатков, присущих каждой конкретной реализации протокола и клиента, можно например отметить достаточно общий недостаток — сложность поиска (т.е. все то, с чем сталкивался Web 1.0, но в еще более сложном варианте). Здесь нет Гугла с его вездесущим и моментальным поиском. И если для файлообменных сетей еще можно воспользоваться поиском по имени файла или по метаинформации, то найти что-то, допустим, в оверлейных сетях onion или i2p, весьма непросто, если вообще возможно.
В общем и целом, если проводить аналогии с классическим интернетом, то большинство децентрализованных сетей застряли где-то на уровне FTP. Представьте себе интернет, в котором нет ничего, кроме FTP: ни современных сайтов, ни web2.0, ни Youtube… Вот примерно в таком состоянии и находятся децентрализованные сети. И несмотря на отдельные попытки что-то изменить, пока изменений немного.
Контент
Обратимся еще к одному важному кусочку этого паззла — контенту. Контент — главная проблема любого интернет-ресурса, и в особенности децентрализованного. Откуда его брать? Конечно, можно положиться на кучку энтузиастов (как это и происходит с существующими p2p сетями), но тогда развитие сети будет достаточно долгим, а контента там будет мало.
Работа с обычным интернетом — это поиск и изучение контента. Иногда — сохранение (если контент интересный и полезный, то многие, особенно пришедшие в Сеть во времена dial-up — в том числе и я — благоразумно сохраняют его оффлайн, чтобы не потерялся; ибо интернет — вещь нам неподконтрольная, сегодня сайт есть завтра нет, сегодня есть видеоролик на ютубе — завтра его удалили, и т.д.
А для торрентов (которые мы воспринимаем скорее как просто средство доставки, чем как p2p сеть) сохранение вообще подразумевается. И это, кстати, одна из проблем торрентов: скачанный один раз файл сложно переместить туда где им удобнее пользоваться (как правило, нужно вручную регенерировать раздачу) и совершенно нельзя переименовать (можно сделать хардлинк, но об этом совсем уж мало кто знает).
В общем, многие тем или иным способом сохраняют контент. Какова его дальнейшая судьба? Обычно сохраненные файлы оказываются где-то на диске, в папке типа Downloads, в общей куче, и лежат там вместе с многими тысячами других файлов. Это плохо — причем плохо для самого пользователя. Если интернет имеет поисковые машины, то локальный компьютер пользователя не имеет ничего подобного. Хорошо если пользователь аккуратный и привык сортировать «входящие» скачанные файлы. Но далеко не все такие…
На самом деле, сейчас немало и таких, кто ничего не сохраняет, а целиком полагается на онлайн. Но в p2p сетях предполагается, что контент хранится локально на устройстве пользователя и раздается другим участникам. Можно ли найти такое решение, которое позволит вовлечь обе категории пользователей в децентрализованную сеть, не меняя их привычек, и более того — облегчив им жизнь?
Идея достаточно простая: что, если сделать средство удобного и прозрачного для пользователя сохранения контента из обычного интернета, причем умного сохранения — с семантической метаинформацией, и не в общую кучу, а в определенную структуру с возможностью дальнейшего структурирования, и одновременно раздавать сохраненный контент в децентрализованную сеть?
Начнем с сохранения
Мы не будем рассматривать утилитарное использование интернета для просмотра прогнозов погоды или расписания самолетов. Нас больше интересуют самодостаточные и более-менее неизменяемые объекты — статьи (начиная от твитов/постов с соцсетях и заканчивая большими статьями, вот как здесь на Хабре), книги, изоборажения, программы, аудио и видео записи. Откуда в основном берется информация? Обычно это
Представим себе некий плагин к браузеру, который будет специальным образом сохранять все то, под чем мы поставили лайк, сделали репост, сохранили в «избранном» (или нажали специальную кнопку плагина, выведенную в меню браузера — на случай, если у сайта нет функции лайка/репоста/добавления в закладки). Главная идея в том, что вы просто ставите лайк — как вы миллион раз делали до этого, а система сохраняет статью, картинку или видеоролик в специальное оффлайн-хранилище и эта статья или картинка становится доступной — и вам для оффлайн-просмтора через интерфейс децентрализованного клиента, так и в самой децентрализованной сети! Как по мне, очень удобно. Никаких лишних действий, и мы решаем сразу множество задач:
Теперь о структурировании
Под «умным» сохранением я понимаю как минимум сохранение с метаинформацией: источник контента (URL), набор ранее выставленных лайков, тегов, комментариев, их идентификаторы и т.д. Ведь при обычном сохранении эта информация теряется… Под источником может пониматься не только прямой URL, но и семантическая составляющая: например группа в соцсети или юзер, сделавший репост. Плагин может быть достаточно умным, чтобы использовать эту информацию для автоматического структурирования и тегирования. Также, следует понимать, что и сам пользователь всегда может добавить к сохраняемому контенту некую метаинформацию, для чего следует предусмотреть маскимально удобные средства интерфейса (идей как это сделать у меня достаточно много).
Таким образом, решается вопрос структурирования и организации локальных файлов пользователя. Это уже готовая польза, которой можно воспользоваться даже без всякого p2p. Просто некая оффлайновая база, которая знает что, откуда и в каком контексте мы сохранили, и позволяет проводить маленькие исследования. Например, найти пользователей внешней соцсети, которые больше всех ставили лайки под теми же постами что и вы. Многие ли соцсети это позволяют в явном виде?
Здесь уже следует упомянуть о том, что одного плагина к браузеру разумеется недостаточно. Второй важнейший компонент системы — сервис децентрализованной сети, работающий в фоновом режиме и обслуживающий как саму p2p сеть (запросы из сети и запросы со стороны клиента), так и сохранение нового контента средствами плагина. Сервис, работая совместно с плагином, разместит контент в нужном месте, вычислит хеши (и возможно определит, что такой контент уже сохранен ранее), добавит в локальную базу данных нужную метаинформацию.
Что интересно — система была бы полезна уже в таком виде, без всяких p2p. Многие пользуются веб-клипперами, добавляющими интересный контент из веба например в Evernote. Предлагаемая архитектура является расширенным вариантом такого клиппера.
И наконец, p2p обмен
Самое приятное — то, что информацией и метаинформацией (как захваченной из веба, так и своей собственной) можно обмениваться. Концепция социальной сети прекрасно переносится на p2p архитектуру. Можно сказать, что социальная сеть и p2p словно созданы друг для друга. Любая децентрализовная сеть в идеале должна быть построена как социальная, только тогда это будет работать эффективно. «Друзья», «Группы» — это же те самые пиры, с которыми должны быть устойчивые связи, а таковые берутся из естественного источника — общих интересов пользователей.
Принципы сохранения и раздачи контента в децентрализованной сети полностью идентичны принципам сохранения (захвата) контента из обычного интернета. Если вы пользуетесь неким контентом из сети (а значит сохранили его), то кто угодно может пользоваться вашими ресурсами (диском и каналом), необходимыми для получения конкретно этого контента.
Лайки — самый простой инструмент сохранения и расшаривания. Если я поставил лайк — неважно, во внешнем интернете или внутри децентрализованной сети — значит контент мне нравится, а раз так — значит я готов держать его у себя локально и раздавать другим участникам децентрализованной сети.
Иногда нужно сохранить и то что «не нравится». Есть такое слово «надо»:)
«Закладки» (или «Избранное») — я не выражаю отношение к контенту, но сохраняю его в своей локальной базе закладок. Слово «избранное» (favorites) не вполне подходит по смыслу (для этого есть лайки и последующая их категоризация), а «закладки» (bookmarks) — вполне. Контент в «закладках» также раздается — если он вам «нужен» (т.е. вы так или иначе «пользуетесь» им), то логично что он может оказаться «нужен» и кому-то еще. Почему бы не воспользоваться вашими ресурсами для этого?
Достаточно очевидна функция «друзья«. Это пиры, люди со схожими интересами, а значит те, у которых скорее всего появится интересный контент. В децентрализованной сети это прежде всего означает подписку на ленту новостей от друзей и доступ к их каталогам (альбомам) с сохраненным ими контентом.
Аналогично функция «группы» — некие коллективные ленты, или форумы, или что-то такое, на что тоже можно оформить подписку — и значит, принимать все материалы группы и раздавать их. Возможно, «группы», подобно большим форумам, должны быть иерархическими — это позволит лучше структурировать контент групп, а также ограничить поток информации и не принимать/не раздавать то, что не очень интересно вам.
Всё остальное
Следует отметить, что децентрализованная архитектура всегда сложнее централизованной. В централизованных ресурсах — жесткий диктат серверного кода. В децентрализованных — необходимость договариваться между множеством равных участников. Разумеется, тут не обойтись без криптографии, блокчейнов и прочих достижений, отработанных главным образом на криптовалютах.
Я предполагаю, что могут потребоваться некие криптографические взаимные рейтинги доверия, формируемые участниками сети друг для друга. Архитектура должна позволять эффективно бороться с ботнетами, которые, существуя в некоем облаке, могут например взаимонакручивать рейтинги сами себе. Очень хочется, чтобы корпорации и ботнет-фермы, при всем их технологическом превосходстве, не перехватили управление такой децентрализованной сетью; чтобы главным ее ресурсом были живые люди, способные производить и структурировать контент, интересный и полезный для других живых людей.
Еще хочется, чтобы такая сеть двигала цивилизацию к прогрессу. На этот счет у меня есть целая масса идей, которая впрочем не вписывается в рамки этой статьи. Скажу лишь, что определенным образом научный, технический, медицинский и т.п. контент должен иметь преимущество перед развлекательным, а это потребует таки некой модерации. Сама по себе модерация децентрализованной сети — задача нетривиальная, но решаемая (правда, слово «модерация» тут совершенно некорректное и совершенно не отражает сути процесса — ни внешне, ни внутренне… и я даже не придумал, как можно было бы назвать этот процесс).
Наверное, излишним будет упоминать о необходимости обеспечения анонимности — как встроенными средствами (как в i2p или Retroshare), так и пропусканием всего трафика через TOR или VPN.
Ну и наконец программная архитектура (схематично нарисованная на картинке к статье). Как уже было сказано, первый компонент системы — плагин для браузера, захватывающий контент с метаинформацией. Второй важнейший компонент — p2p сервис, работающий в фоновом режиме («backend»). Работа сети очевидно не должна зависеть от того, запущен ли браузер. Третьим компонентом является клиентское ПО — frontend. Это может быть и локальный веб-сервис (в этом случае пользователь сможет работать с децентрализованной сетью не выходя из любимого браузера), и отдельное GUI-приложение под конкретную ОС (Windows, Linux, MacOS, Andriod, iOS и т.д.). Мне нравится идея одновременного существования всех вариантов frontend’а. Заодно это обяжет к более строгой архитектуре backend’а.
Есть еще множество аспектов, которые в данную статью не вошли. Подключение к раздаче существующих файлохранилищ (т.е. когда у вас уже есть пара терабайт накачанного, и вы даете клиенту просканировать это, получить хеши, сопоставить их с тем что есть внутри Сети и присоединиться к раздаче, а заодно получить из Сети метаинформацию о своих собственных файлах — нормальные названия, описания, рейтинги, отзывы и т.п.), подключение внешних источников метаинформации (таких например, как базы Libgen), опциональное использование дискового пространства для хранения чужого зашифрованного контента (как во Freenet), архитектура интеграции с существующими децентрализованными сетями (тут вообще темный лес), идея медиахеширования (использование специальных перцептивных хешей для медиаконтента — картинок, аудио и видео, что позволит сопоставлять одинаковые по смыслу медиафайлы, отличающиеся размерами, разрешением и т.д.) и многое другое.
Централизованные, децентрализованные и распределенные сети: что это такое?
При обсуждении технологии блокчейн часто используется термин «децентрализованная сеть». Но многим людям все еще трудно объяснить, что такое децентрализованная сеть, есть ли разница между децентрализованными и распределенными сетями и какие преимущества имеют эти сетевые структуры по сравнению с централизованными сетями.
Каждый тип сетевой архитектуры имеет свой набор плюсов и минусов.
В этой статье мы обсудим основные различия между централизованными, децентрализованными и распределенными сетями.
Что такое централизованная сеть?
Централизованные сети строятся вокруг единого централизованного сервера / главного узла, который обрабатывает все основные данные и хранит данные и информацию о пользователях, к которым могут получить доступ другие пользователи.
Отсюда клиентские узлы могут быть подключены к главному серверу и отправлять запросы данных вместо того, чтобы выполнять их напрямую.
Большинство веб-сервисов, включая YouTube, магазин мобильных приложений или вашу учетную запись в онлайн-банке, координируются владельцем централизованной сети, а это означает, что все транзакции с данными в этих сетях требуют проверки сторонним органом.
Централизованные сети в настоящее время являются наиболее широко используемым типом сети в Интернете.
Преимущества централизованной сети
Недостатки централизованной сети
Что такое децентрализованная сеть?
Напротив, децентрализованная сеть распределяет рабочие нагрузки по обработке информации между несколькими устройствами вместо того, чтобы полагаться на один центральный сервер.
Каждое из этих отдельных устройств служит мини-центральным блоком, который независимо взаимодействует с другими узлами.
В результате, даже если один из главных узлов выходит из строя или скомпрометирован, другие серверы могут продолжать предоставлять пользователям доступ к данным, и вся сеть будет продолжать работать с ограниченными или нулевыми нарушениями.
Децентрализованные сети стали возможны благодаря последним технологическим достижениям, которые снабдили компьютеры и другие устройства значительной вычислительной мощностью и могут быть синхронизированы и использоваться для распределенной обработки.
Однако, хотя децентрализованные сети существенно отличаются от централизованных сетей, важно отметить, что децентрализованные сети не распределяют хранение и обработку данных равномерно по всей сети и по-прежнему полагаются на основные серверы, хотя и более одного на сеть.
Преимущества децентрализованной сети
Недостатки децентрализованной сети
Что такое распределенная сеть?
Распределенная сеть похожа на децентрализованную сеть в том смысле, что она отказывается от единственного централизованного главного сервера в пользу нескольких владельцев сети.
Однако распределенные сети состоят из равных, взаимосвязанных узлов, что означает, что владение данными и вычислительные ресурсы равномерно распределяются по всей сети.
Термин «распределенная сеть» иногда используется для описания сети, которая просто географически распределена, но может следовать модели иерархии узлов сверху вниз. Однако в большинстве случаев этот термин относится к сети, в которой расположение узлов и вычислительные ресурсы распределены равномерно.
Поскольку распределенные сети не имеют центрального сервера или отдельного набора главных узлов, бремя обработки данных перекладывается на всю сеть, при этом всем пользователям предоставляется равный доступ к данным.
Поэтому процесс принятия решений в распределенной сети обычно включает голосование отдельных узлов за переход в новое состояние, а окончательное поведение системы изменяется в соответствии с совокупными результатами решений, за которые голосует каждый отдельный узел.
Конкретные процессы, с помощью которых распределенная сеть голосует и принимает решения, зависят от механизма консенсуса в сети.
Все формы распределенного принятия решений включают взаимодействие отдельных компонентов сети друг с другом для достижения общей цели.
Следовательно, благодаря своей действительно децентрализованной природе распределенные сети чрезвычайно отказоустойчивы и безопасны.
Их преимущества и недостатки полностью повторяют преимущества и недостатки децентрализованных сетей, но в большей степени.
Преимущества распределенных сетей
Недостатки распределенных сетей
Блокчейн-сети: вывод
Обсуждая относительные достоинства различных сетевых архитектур, важно помнить, что ни одна конфигурация не превосходит любую другую во всех средах.
При этом современный Интернет в значительной степени построен на централизованных сетях, поэтому большинство устаревших систем включают некоторую форму централизованной конфигурации.
В настоящее время происходит много инноваций за счет более широкого внедрения децентрализованных и распределенных сетевых структур, которые во многом были разработаны для устранения ограничений устаревших системных архитектур.
Например, децентрализованные и распределенные системы могут актуализировать ранее теоретические приложения, такие как децентрализованные финансы и создание суверенной идентичности.
По мере того, как спектр вариантов конфигурации сети продолжает расширяться, организации будут все в большей степени иметь возможность выбирать сетевую архитектуру, которая лучше всего соответствует их конкретным потребностям, вместо того, чтобы пытаться проектировать вокруг ограниченного набора сетевых моделей.
В результате, поскольку альтернативные сетевые архитектуры становятся все более распространенными, сама структура цифрового мира вполне может сместиться в сторону чего-то более децентрализованного и распределенного.