Проект MaidSafe призван открыть новую веху в децентрализации всего Интернета. Архитектура его консенсуса очевидно будет гораздо сложнее, чем таковая у криповалют. Очередная запись в блоге проекта призвана на доступном уровне описать работу сети SAFE (Secure Access for Everyone — безопасный доступ для всех).
Несмотря на все усилия, нередки случаи, когда в комментариях на форумах люди говорят, что не совсем уверены в том, что же такое MaidSafe. Обычно эти комментарии выглядят примерно так: «Звучит очень круто, но я не очень понимаю, что значит децентрализация Интернета». Мы потратили 12 месяцев, объясняя людям концепцию, беседуя с ними, выпуская видеоматериалы, публикации и прочую документацию, так что вы можете подумать, эти комментарии следует просто игнорировать. Но вы ошибаетесь. На самом деле, такое недопонимание… весьма… понятно.
Во-первых, концепция децентрализации довольно сложна, чтобы мгновенно взорвать вам мозг, если вы не знакомы с Биткоином и другими децентрализованными/распределёнными сетями. Люди всё ещё спрашивают нас: «Так где же на самом деле находятся серверы?» Я подозреваю, суть в том, что клиент/серверная модель слишком укоренилась в наших мыслях и понимании того, как должны работать компьютеры. Другая причина может крыться в том, что мы используем возможно не совсем корректные фразы вроде «децентрализация интернета», чтобы кратко описать то, чем мы занимаемся. К сожалению, необходимость в слогане или подобной крылатой фразе продиктована веяниями современных медиа. В результате того, что существует такое огромное количество компаний и технологий, всем им приходится соревноваться друг с другом за кусочек нашего драгоценного времени.
Чтобы преодолеть эти сложности, может быть полезным на конкретном примере рассмотреть, как работает Интернет, сравнивая с тем, как работает SAFE. Приносим извинения за краткое изложение, продиктованное форматом сообщения в блоге, в котором мы попытаемся раскрыть очень обширную тему, рассмотрев её базовую концепцию с высоты Феликса Баумгартнера. Для более комплексного рассмотрения взгляните на следующий пост (англ.) Руса Шулера — это превосходный ресурс.
Наиболее фундаментальные уровни, согласно модели OSI, составляют кабели, маршрутизаторы, свитчи, серверы и вообще всё существующее «железо». С точки зрения структуры передаваемых данных, это самый базовый уровень — нули и единицы. Каждому из этих устройств требуется уникальный адрес нахождения (в сети TCP/IP), чтобы иметь возможность обращаться друг к другу. Они называются IP (Internet Protocol) -адресами.
Возможно, вы уже слышали о том, что в существующей системе IPv4 не хватает IP адресов (их всего 2^32), иИнженерный Совет Интернета вот уже примерно 25 лет пытается перевести его на стандарт IPv6, однако этот переход слишком затянулся. На диаграмме этот протокол находится на уровне сети, и здесь данные передаются сообщениями, содержащими собственно сами данные и IP адрес получателя, и сеть берёт на себя их доставку. Обычно эти данные разделены на фрагменты, или так называемые пакеты данных.
Существующий Интернет
В этом месте архитектура существующего Интернета и сети SAFE начинают расходиться. На транспортном уровне данные разной величины передаются между источником и получателем, с проверкой того, что каждый пакет доходит до получателя, и повторной отправкой потерянных или повреждённых пакетов. Полезной аналогией здесь может быть обычная почта, которая сортирует и рассылает письма и посылки получателям. Примерами являются два наиболее распространённых протокола четвёртого уровня: это TCP(Transmission Control Protocol) и UDP (User Datagram Protocol).
Уровень сессий управляет соединениями между устройствами; устанавливает, управляет и прерывает обмен данными и диалоги между приложениями. Именно уровень сессии откликается на запрос с уровня представления, который сам по себе несёт функцию преобразования данных в формат, который на уровне приложения может быть принят и отображён. Здесь уже могут быть использованы такие фишки как шифрование, дешифрование или сжатие.
И наконец, у нас есть уровень приложения, самый высокий уровень модели OSI, и именно с ним хорошо знакомы все пользователи Интернета. На уровне приложений информация, полученная с более низких уровней, отображается пользователю, и именно её мы используем для взаимодействия с каждым приложением, когда, например, заполняем форму или читаем эту статью. На этом уровне мы видим такие протоколы как HTTP (Hypertext Transfer Protocol), который повсюду используется для обмена данными в сети, равно как и SMTP (Simple Mail Transfer Protocol) для обмена емэйлами.
Сеть SAFE
Мы не будем вдаваться в подробности всего стека SAFE, это тема для отдельного поста. Здесь нашей целью является дать общее представление и показать её в сравнении с моделью OSI.
Как показано на следующей диаграмме, сеть SAFE — это некая прослойка, использующая существующую аппаратную базу сети Интернет и некоторые его сетевые уровни. Следует отметить, что, сосредоточив внимание на различиях обеих моделей на программном уровне, закономерным также будет ожидать и то, что сеть SAFE будет иметь значительное влияние и на аппаратном уровне. С сетевыми ресурсами, предоставляемыми пользователями сети SAFE, мы в перспективе можем ожидать уменьшение количества размещённых серверов и перемены в способе их использования.
Расположенная поверх уровней существующей Интернет-инфраструктуры сеть SAFE использует транспортный протокол UDP, над которым работает CRUX (Connected Reliable Udp eXchange — подключённый надёжный UDP обмен). Комбинация этих двух уровней и уровень Маршрутизации, расположенный ещё выше, обеспечивает надёжность и контроль перегрузки TCP, в то же время помогая решить щекотливый вопрос о пересечении с NAT.
Протокол трансляции сетевых адресов (Network Address Translation — NAT) — это широко распространённое решение проблемы нехватки адресов IPv4, упомянутой ранее. Он позволяет каждому устройству иметь свой «приватный» IP адрес, находящийся за одним «публичным» IP адресом. Поскольку NAT не предполагает способа определить конкретное устройство, для которого предназначено сообщение, это создаёт определённые проблемы для P2P приложений, таких как файлообменные сервисы (например, Торрент), или VoIP приложений вроде Skype. Использование CRUX, UDP и Маршрутизации позволяет проходить все маршруты NAT.
Расположенный поверх UDP и CRUX, уровень Маршрутизации представляет собой распределённую таблицу хэшей (Distributed Hash Table — DHT), основанной на Kademila и управляет маршрутами между узлами в сети. Каждый узел локально сохраняет информацию о других узлах, к которым он подключён. Обмен информацией обычно маршрутизируется таким образом, что данные проходят через несколько промежуточных узлов прежде, чем достигнут конечного получателя. Эту связь поддерживает CRUX. Механизм подтверждения/повторной отправки также имеется, чтобы повысить надёжность отправки сообщений.
Паспорт и Кошельки довершают стек протокола, а всё, что выше — отдаётся в управление непосредственно пользовательскому компьютеру/устройству. Паспорт обеспечивает управление ключами идентификации пользователя и позволяет передавать сэйфкойны другим участникам или получить доступ к файлам. Эти ключи не требуют чьего-либо централизованного подтверждения. Хранилища размещены на «фермерских» машинах. Эти хранилища выполняют множество функций, включая управление данными, хранение данных, обслуживание клиентов, управление другими сетевыми узлами и поддержание работоспособности сети в целом.
Интерфейс программирования приложений (API) находится над слоем шифрования и предоставляет механизм подключения клиентов SAFE (приложений) подключиться к низлежащей сети. Эти API (на диаграмме изображены два) будут использоваться разработчиками программного обеспечения в сети, чтобы дать возможность их приложениям использовать функционал сети. REST API позволяет выполнять простые команды, такие как Put, Get и Delete, в то время как POSIX-подобный NFS API обеспечивает более тонкий доступ, добавляя более продвинутый функционал. Диск — это кросс-платформенный виртуальный диск, используемый обоими API и представляет сеть как стандартное дисковое устройство на компьютере пользователя.
Что ж, надеемся, этот пост помог объяснить, что представляет собой сеть SAFE и чем она отличается от того, что представляет собой сегодня Интернет. SAFE имеет потенциал влияния на физические уровни модели через снижение количества серверов, так же, как и множество программных уровней, передающих наши данные по всей сети. Ранее мы говорили, что заменим некоторые части Интернета, и мы думаем, что со временем это произойдет, но в краткосрочной перспективе SAFE лучше будет принимать как нечто, что поможет существующий Интернет улучшить.
Это начинание стало сложной задачей для всех, кто был вовлечён в её решение. Локомотивом проекта SAFE всегда было стремление дать конфиденциальность, безопасность и свободу всем пользователям Интернета, и предложить эти преимущества на существующей инфраструктуре Интернета, что раньше казалось невыполнимой задачей. С нашей точки зрения, требовалась существенная реструктуризация.
Интернет также выиграет от децентрализации и в других направлениях. Меньшая зависимость Интернет-провайдеров через технологии меш-сетей могли бы стать огромным преимуществом, устраняя центральную точку контроля и обеспечивая равноправную обработку всех данных. Возможность открыто делиться и совместно работать над информацией станет ключевым драйвером преимущества человеческой расы, и это слишком важная возможность, чтобы доверить контроль над ней компаниям или правительствам.