Главное Авторские колонки Вакансии Образование
Выбор редакции:
1 180 27 В избр. Сохранено
Авторизуйтесь
Вход с паролем

Распределенная сеть base.network

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

43e835c5b1c12619f53e3772424052f8.png

«Свобода — это возможность сказать, что дважды два – четыре. Если дозволено это, всё остальное отсюда следует.» Джордж Оруэлл — «1984»

В современном мире активно развиваются различные распределенные технологии. Уже не первый год успешно функционируеют такие проекты как пиринговая платежная система Bitcoin, распределенные микроблоги (Twister), распределенные мессенджеры (например, Tox). Дошло дело и до полноценных распределенных сайтов.

Частично функционал распределённых сайтов уже реализован в таких проектах как Freenet и I2P. Однако подобные проекты имеют ряд недостатков. Например, в настоящее время Freenet не может быть использован для создания или распространения динамического контента, такого, который использует базы данных или скрипты. Для доступа к подобным сетям часто необходимо устанавливать специальное программное обеспечение или скачивать базы данных огромных размеров. Многие пиринговые сети имеют большое время отклика. Между публикацией информации и тем когда ее увидят остальные пользователи проходит немало времени.

Предлагаемая система base.network призвана устранить подобные недостатки пиринговых сетей и объединить в себе все технические преимущества централизованных систем со свободой обмена информации в распределенных сетях. Это своего рода попытка создать защищённую децентрализованную сеть с малым временем отклика и свойствами автономности, отказоустойчивости и масштабируемости. Ключевой целью проекта является способность функционировать даже под давлением организаций, осуществляющих контроль, пресечение публикации, а также ограничение доступа к информации в Интернете. Все аспекты проекта доступны в виде открытого исходного кода и бесплатны.

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

base.network — Что это?

Это одноранговая сеть предназначенная для децентрализованного распределённого хранения данных без возможности их цензурирования. Система не имеет центральных серверов и не находится под контролем каких-либо частных лиц или организаций. Создана с целью предоставить пользователям свободу слова в онлайн-пространстве. Система работает на основе объединения в общий кластер серверных нод, предоставляемых членами сети на безвозмездной основе. Все данные равномерно распределены между серверными нодами и не требуют центрального хранилища. Участники предоставляют полосу пропускания и дисковое пространство своих серверов для публикации или получения в Сети разного рода информации. Например, файлы, структуры данных и упорядоченные списки.

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

Все данные залитые в систему обязательно подписываются автором, используя для этого криптосистемы с открытым ключом. Проверить авторство тех или иных данных всегда можно зная публичный ключ автора. В качестве криптографического алгоритма для создания цифровой подписи и шифрования данных в системе используется асимметричный алгоритм шифрования с открытым ключом основанный на ECDSA (Elliptic Curve Digital Signature Algorithm) с длиной ключа 256 бит (в частности, используется кривая secp256k1) и хеш функция SHA-256.

Как устроена сеть

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

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

Итак, участники системы для поддержания сети предоставляют свои серверные ресурсы. Для этого они устанавливают специальное серверное ПО, которое по сути представляет собой небольшой веб-сервер и БД в одном лице — так называемая серверная нода. Для работы ноды необходимо выделить внешний IP адрес (v4) и свободный порт.

Хранение данных

Для начала, чтобы понять организацию хранения данных, представим, что все пространство сети ограничено строго заданным объемом, скажем, в 32 ГБ. Таким образом, сеть превращается в огромную хеш-таблицу, где каждый документ по его хеш-адресу будет строго иметь свое место в виртуальном пространстве сети. Чтобы не хранить все данные сети на одной физической машине (как это сделано, например, в системе Bitcoin) разделим всё наше виртуальное пространство на некоторое количество сегментов. Для начала, поделим его, скажем, на 8 сегментов. Каждый сегмент по 4ГБ. Теперь выделенные физические машины могут по отдельности обслуживать отдельные сегменты, без необходимости хранить полную копию базы, а лишь её кусочек. Каждая такая серверная нода может поддерживать несколько сегментов сети. Один же сегмент будет обслуживаться несколькими независимыми нодами. Зная физические адреса машин, и имея информацию о том какие сегменты какими машинами обслуживаются, мы всегда можем получить доступ к отдельному документу по его адресу. Доступ к нодам осуществляется посредством стандартного http-протокола.

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

4fedfeae134dfa3744c2dec09baa2392.png

Кольца

Выше было оговорено, что пространство сети ограничено определённым объемом (32 ГБ) и сеть таким образом работает как огромная хеш-таблица. Все это верно для виртуального пространства, ограниченного в рамках одного так называемого Кольца.

Система колец была разработана для того, чтобы свободно масштабировать виртуальное хранилище сети и строго не ограничивать её пространство. По мере наполнения данными текущих колец, сетью будут задействованы следующие виртуальные кольца. Количество сегментов для каждого следующего кольца увеличивается в 8 раз, размер сегментов в свою очередь тоже увеличивается в несколько раз. Если точнее, в количество раз кратное двум, для разных типов хранилищ это число будет разным (см. ниже Типы хранилищ). Таким образом, суммарный объем каждого следующего кольца на порядок превышает размер предыдущего и позволяет размещать все больше и больше данных. Потенциальный рост популярности сети и, как следствие, рост числа машин дает возможность обслуживать следующие кольца, позволяя сети осуществлять по сути неограниченный рост.

Например, для хранения файлов количество сегментов в первом кольце равно 8. Во втором 64. и т.д. Размеры сегментов увеличиваются в 2 раза. Объем каждого следующего кольца, таким образом, увеличивается в 16 раз. И, к примеру, для третьего кольца он составит 16 ТБ. А для 5-го уже 4 ПБ!

c486cc6ba6b645acac9bd86283a6a2b3.png

В нулевом кольце всегда располагается один сегмент. Обычно в нем содержится ключевая для сети информация.

Ноды

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

Адресация документов

Для получения (или сохранения) какого-либо документа в сети нам необходимо знать его адрес. Адресом может выступать любой строковый идентификатор. От этого строкового адреса вычисляется хеш — так называемый uid (уникальный идентификатор документа). Для файлов подобным идентификатором выступает хеш от содержимого файла. Первые разряды полученного хеша будут говорить нам о номере сегмента, в котором располагается. Зная номер сегмента и список нод, обслуживающих этот сегмент, а также их внешние IP-адреса и порты, мы можем обратиться к любой физической машине и запросить документ обычным http-запросом. Для формирования подобных запросов у пользователя нет необходимости ставить специальное ПО. В качестве клиентского ПО может выступать обычный браузер.

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

Типы хранилищ

На текущий момент система реализует 4 типа хранилищ данных, каждое из которых позволяет хранить различные структуры информации.

  • F — файловое хранилище
  • N — хранилище доменных имен, сертификаты
  • D — списки данных одного автора
  • P — публичные списки данных

Файловое хранилище (тип хранилища F)

Адресом файла выступает хеш от его содержимого. Таким образом, один и тот же файл, залитый в сеть различными пользователями, будет иметь один и тот же адрес. Убедиться в том, что по заданному адресу возвращается корректное содержимое, можно проверив его хеш.

Доменные имена (тип хранилища N)

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

Списки данных (тип хранилища D)

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

Валидность и авторство каждой такой записи можно проверить по ее хешу и подписи, сформированной автором при добавлении документа.

Помимо всего, хранилища типа D и P дают клиентам возможность осуществлять подписку на добавление записей в ленту, используя для этого технологию SSE (Server-Sent Events). Например, следующим запросом можно подписаться на добавление данных в нашу ленту. Клиент откроет соединение и будет ожидать появления серверного события.

Как и для файлов, анонимные пользователи не имеют возможность формировать свои ленты, и добавлять новые элементы в список могут лишь зарегистрированные пользователи (с сертификатом имеющим подпись регистратора).

Публичные списки данных (тип хранилища P)

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

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

Как сеть работает для пользователя

Для обычного пользователя работа с системой начинается без установки какого-либо специального ПО. Для этого достаточно лишь использовать обычный браузер. Для ВСЕХ адресов *.base.network/* возвращается статичная html-страница, которая включает в себя код клиентского ядра, написанный на JavaScript.

a56939aa5bbc34b16872fb764fb459a2.png

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

Клиентское ядро содержит в себе начальный список нод (их IP-адреса и порты). При первой загрузке движка, скрипт пытается подключиться к любой ноде из этого списка и получить от нее свежую карту сети, которую он в последствии будет хранить в LocalStorage браузера. Скрипт периодически будет опрашивать ноды из его списка и обновлять информацию о сети. Карта сети содержит в себе список всех нод, их адреса и порты, версию серверного ПО, а также список сегментов обслуживаемых каждой нодой. Теперь на клиенте достаточно информации для того чтобы получить любой документ из сети. Для любого адреса документа мы знаем в каком сегменте он находится и какими нодами этот сегмент обслуживается. Для более быстрой загрузки данных из сети, клиент выбирает ближайшую к нему ноду. Подлинность скачанных данных клиент может проверить по хешу и сверив подпись автора, используя его открытый ключ.

При первом входе в сеть для пользователя генерируется анонимный сертификат, содержащий закрытый и открытый ключ. Этот сертификат хранится в LocalStorage браузера в пространстве имен домена core.base.network. Скрипты других доменов не имеют прямого доступа к этому пространству и не могут получить информацию о закрытом ключе.

1697e790b733fef930912541b9b2fe3c.png

Все внешние http-запросы осуществляются исключительно из фрейма клиентского ядра — core.base.network. Движок сайта может работать с системой только через этот фрейм, используя для этого специальный API. API предоставляет сайтовому движку возможность заливать в сеть файлы, запостить данные, получать ленты данных, подписаться на событие добавления данных в ленту.

46e6d70415eabb9cda6cbc98487f16c1.png

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

Регистрация домена

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

4eb78a1218b19b664a0173747409cbac.png

Регистрация сертификата происходит одновременно с регистрацией персонального домена, закрепленного этим сертификатом. Сейчас понятия домена и публичного сертификата неразрывно связаны. Во время регистрации пользователь в шифрованном виде отправляет регистратору свой публичный ключ и имя домена, к которому необходимо будет привязать регистрируемый сертификат. Регистратор добавляет свою подпись к публичному ключу пользователя и размещает данные о сформированном сертификате и о владельце домена в хранилище доменных имен (storage N), где оно будет доступно остальным пользователям.

4cd4aebbff7e833802b024775ec418e4.png

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

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

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

Знакомство. Демо сайт

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

Итак, после регистрации пользователем своего домена, он может зайти на свой персональный сайт, сменить настройки, указать тему, дизайн, потенциально установить сторонний движок, создавать и редактировать разделы сайта. Пример подобного сайта, а также демонстрация возможностей системы предлагаются по примеру тестового сайта: http://test.base.network/.

1a8d14482350c66b11e70f686498fa99.png

В качестве примера текущий движок позволяет добавлять такие сервисы как:

  • блоги
  • фотоальбомы
  • чаты
  • музыкальные и видео плейлисты

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

32419a608aed3f3d4f3b456cd2ac0203.png

Сайт в соответствии с последними веяниями имеет адаптивный дизайн и вполне корректно отображается и редактируется на мобильных устройствах.

8e9be3348838db843ba3bcb4385840af.png

Планы

  • Доработать сайтовый движок. Переработать дизайн и повысить юзабилити существующего функционала. Добавить ряд полезных функций, чтобы по функционалу не уступать современным социальным сетям.
  • Локализовать веб-интерфейс для популярных языков.
  • Добавить сервис личных сообщений с обеспечением полной анонимности. Сервис помимо шифрования непосредственно содержимого сообщений будет скрывать сам факт переписки двух лиц, чего сложно добиться с использованием централизованной системы. Реализация такого сервиса требует лишь небольших доработок сайтового движка на стороне клиента. Серверная часть уже сейчас вполне готова для воплощения подобного функционала.
  • Переписать серверное ПО на языке GO, поскольку скорость работы с криптографического алгоритмами на Node.js оставляет желать лучшего.
  • Покрыть весь функционал тестами.
  • Составить подробную документацию к проекту, API и протоколам общения клиент-сервер.
  • Создать своего рода Store сайтовых движков, сервисов и плагинов, а также стилей и дизайн-тем.

Поддержка проекта

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

Со всеми исходниками проекта можно ознакомится на GitHub — github.com/basenetwork.

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

Кроме того, если у вас в распоряжении имеются сервера, либо на ваших персональных машинах есть выделенный канал, вы можете предоставить небольшую часть своих машинных ресурсов для развития сети. С инструкцией по установке серверной ноды вы можете ознакомится выше или на github. Также будут крайне важны ваши отзывы о работе установленного серверного ПО.

Веб-разработчики, владеющие Node.js, могут предложить свои доработки и советы по оптимизации серверного ПО.

Веб-дизайнеры, HTML-верстальщики, программисты, имеющие опыт работы на JavaScript, могут принять участие в развитии сайтового движка и его отдельных сервисов. Приветствуется также и разработка собственного сайтового движка с нуля.

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

Спасибо за поддержку!

Заключение

И в заключение немного лирики. Цензура в современном мире — это большая глупость. Любые идеи, неважно технические или гуманитарные, развиваются одинаково  —  они растут одна из другой, бесконечной цепочкой. Идея имеет право быть высказанной и услышанной в её оригинальном виде, без искажений и цензуры. Однако в современных реалиях рукописи вполне неплохо горят и написанное пером нещадно вырубается топорами. И, как ни печально осознавать это, но задуманный как рупор свободы, Интернет в руках правительств стран и государств превратился в инструмент всеохватывающего контроля. Причем контроля настолько неприкрытого, что все чаще продвинутая часть общества задается вопросом: а есть ли свобода слова в интернете? Можем ли мы с его помощью открыто заявлять о чем-то действительно важном? Видим ли на его просторах всю палитру разнохарактерных независимых мнений?

Меня зовут Денис Глазков, я представляю вашему вниманию свой проект — распределенную сеть base.network — проект, который при достаточной поддержке и развитии мог бы изменить ситуацию в иную сторону — предоставить нецензурируемую среду общения и распространения информации.

0
В избр. Сохранено
Авторизуйтесь
Вход с паролем
Комментарии
AutoCoder
Автоматическое программирование для Wordpress
Михаил Грибов
Настолько ли важна, нужна и полезна свобода слова? Ведь идеи бывают как полезные, так и вредные, информация как созидательная, так и разрушительная.
С появлением интернета появилась возможность быстро передавать информацию без ограничений в пространстве, дало ли это возможность нам узнавать о том, что в действительности происходит в мире?
Не получился ли так, что инструмент, созданный для благих целей будет использован для разрушительных действий.
Ответить
base.network
Децентрализованный независимый веб
Денис Глазков
Интересная философия.
Ну вы же к примеру пишите этот комментарий через Интернет. Вы донесли до меня, человека которого вы никогда не видели, информацию не посредством голубиной почты или высечением этих букв в граните. Я узнал из вашего комментария что-то новое непосредственно через Интернет.
Письменность, Книгопечатание, Интернет - это основные этапы развития передачи информации от человека к человеку.
Каждый из них в свое время был прорывной технологией.
Письменность по мимо непосредственной коммуникации двух людей позволила передавать информацию на иных носителях. Книгопечатание позволило это делать массово. Однако, доносил свою мысли до многих, лишь один человек, в данном случае автор книги. Интернет же позволил связать не одного со многим, а многих со многими. Количество связей и количество информации увеличивалось на порядок с каждым новым этапом развития коммуникаций.
Однако все вышеупомянутые способы всегда проходили через какие то центральные узлы, через цензуру другими лицами. Изначальная информация могла быть удалена, отредактирована, запрещена или сожжена на кострах.
Распределенные же технологии дают возможность общаться людям непосредственно друг с другом без участия третьей стороны.
Ответить
AutoCoder
Автоматическое программирование для Wordpress
Михаил Грибов
Денис, я соглашаюсь со всем, что Вы говорите. Я говорю лишь о второй стороне; я Вам передал свое мнение через интернет, это нормально. Но если кто-то начнет здесь агитировать на незаконные действия, которые могут быть направлены против Вас, в частности, или кто-то станет Вас оскорблять и т.п. Свобода слова в Вашей интерпретации звучит как безответственность за свои слова. Должен быть сдерживающие от деструктива факторы, должна быть ответственность за сказанное. Разве не так?
Ответить
base.network
Децентрализованный независимый веб
Денис Глазков
Я заметил что многие смешивают понятия Свободы слова и Анонимности. Первая дает возможность высказать свое мнение без какой-либо цензуры и нести полную ответственность за сказанное, второе же полную безответственность. Я сейчас не говорю об анонимности и безответственности. Я говорю о технической возможности сказать что-то что не может быть подвержено контролю со стороны.
Продолжая ваш пример, если в этом тредике появиться человек, который будет распространять информацию, которая мне не нравиться или не соответствует моим принципам, я вправе ее самостоятельно отфильтровать. Я могу мог бы наложить автоматические фильтры: то как антиспам или антифлуд система. Или в качестве системы фильтрации выбрать систему рейтингов на основе мнений других пользователей. Или даже выбрать собственного цензора - человека или организацию, которой я всецело доверяю. Но у меня всегда остается право читать или не читать данную информацию. Всегда остается право самостоятельно выбрать или сменить цензора.
Система цензоров, рейтингов, которую я как пользователь могу выбрать - это и есть тот самый "сдерживающий от деструктива фактор".

Посмотрите вокруг, сейчас даже при достаточно развитых коммуникационных технологиях вы не можете сделать даже двух базовых вещей:
1. высказать свое мнение без цензуры.
2. обеспечить себе тайну личной переписки.
Эти два пункта, между прочем, являются основными пунктами конституции практически любой страны.
Существующие же централизованные сервисы (даже те которые якобы поддерживающие анонимность и шифрование, такие как Телеграмм или Сикрет) не дают даже таких базовых возможностей. Вся информация в конечном счете проходит через центральные сервера. Владельцы серверов всегда имеют информацию о том, кто, когда и с кем переписывается. Все централизованные сервисы в долгосрочной перспективе нестабильны, поскольку зависят технической инфраструктуры и от финансирования конкретных организации.
Ответить
Ticketrilla
Helpdesk для WordPress-продуктов
Даниил Бабкин
Денис, правильно ли я понимаю, что основная идея проекта - перенос серверной части Интернет из дата-центров (условно) на компьютеры пользователей сети?
Свяжитесь, пожалуйста, со мной. Скайп shtile81.
Спасибо)
Ответить
base.network
Децентрализованный независимый веб
Денис Глазков
Не совсем так. Если мы будем говорить о серверной логике, то да, она полностью переезжает на клиентские машины. Сами же хранилища (непосредственно данные) могут по прежнему быть раскиданы по дата-центрам всего мира. (Серверами, в принципе, не что не мешает быть и обычным компьютерам пользователей). Однако теперь владельцы серверов не могут как-либо контролировать пользовательскую информацию. Читать персональную переписку, цензурировать или модерировать публичные данные.
Основная задача проекта - сделать так чтобы пользовательские данные не хранились в каком-либо одном месте, и были подконтрольны одному лицу или организации.
Фактически все что написал один человек не может быть удалено или отредактировано другим. Задача проекта - предоставить людям хотя бы техническую возможность сделать это - сказать то что они хотят без цензуры сторонним лицом.
Ответить
Ticketrilla
Helpdesk для WordPress-продуктов
Даниил Бабкин
Денис, идея любопытная. Но если посмотреть на нее с другой стороны, то очень опасная.
Давайте разберем банальную ситуацию. Технологии изготовления взрывчатых веществ относительно просты и многие из них можно приготовить дома. Сейчас эта информация в инете чистится. В вашей модели эту информацию будет удалить невозможно. Попади эти рецепты в руки той же правой молодежи - горя не расхлебаешь.
Вы можете сказать, что те, кто хочет - может найти и сейчас. Я с этим соглашусь. Но удаление информации в текущем виде - своего рода "защита от дурака".
Полная свобода подразумевает наличие соответствующего уровня ответственности. Но человек - существо безответственное. Тем более в нынешних условиях поголовного снижения морального и культурного уровня.
Вы готовы к тому, что информация будет тотально свободной?

Хотя ваши разработки весьма любопытны с другой стороны - с точки зрения снижения нагрузки на высоконагруженные системы путем распределения нагрузки среди ее пользователей. Модель монетизации ясна, как божий день. Вопрос в другом - готовы ли такие высоконагруженные системы к такому распределению? Если да, то у вас есть возможность создать принципиально новый рынок, подвинув все крупнейшие дата-центры мира. Думаю, в денежном эквиваленте вы сможете посчитать, чем это может обернуться?)
Ответить
Taras Nikitin
Интересный концепт, вот только цензуру не отменяет. Что бы её отменить нужно менять саму сеть Интернет на низком уровне, всё менять даже браузеры, потому что даже тот же "эдблок" это уже система цензуры.
Хотя дело даже не в цензуре, дело в том, какие плюсы технология даёт простым пользователям.
Вот мне, как простому пользователю, безразлично откуда загружены данные - с сервера или с компьютера другого пользователя. Впрочем, сервер является точно таким же компьютером и возможно пользователя или даже не один компьютер и не одного пользователя и не в одном месте (облачный сервер составленный из 20 серверов в 20 датацентрах).

Расскажите: мне, как получателю информации, какие плюсы?
Ответить
Показать предыдущие комментарии
Taras Nikitin
Я же говорю - идея хорошая. Так или иначе, её уже не один год пытаются реализовать, а Вы ещё и хорошую реализацию придумали.
Ответить
base.network
Децентрализованный независимый веб
Денис Глазков
Нет головных нод. Все ноды равноправны. Каждая нода в сети не доверяет другой и учитывает что остальные ноды могут быть скомпрометированы (но не большая часть). Изначальный список нод вшит в клиентское и серверное ПО и с ростом популярности сети будет расширяться. Подменить контент тоже весьма проблематично. Все данные подписываются авторами. Цепочки добавляемых данных подписываются самими нодами.

Да. сейчас сеть может быть подвержена замусориванию, что может вызвать проблемы в ее работоспособности. Однако, уже введен ряд ограничений от замусоривания. Ряд мер планируется ввести в будущем.
Ответить
Taras Nikitin
Меня интересует собственно совсем другое: динамический контент.
А именно: как реализовать в такой сети банальный приём тех же объявлений, так что бы автор объявлений мог управлять своими объявлениями? Как реализовать авторизацию автора? Что должен делать софт приёмо-создания объявлений? Где вообще техническая документация в PDF, что бы я её внимательно прочитал, как разработчик (или я должен её восстановить по исходникам)?
Ответить
base.network
Децентрализованный независимый веб
Денис Глазков
Сорри. Подробной доки пока нет -( В стадии разработки.
Ответить
Taras Nikitin
Воот, а с этого стоило начать рассказ о сети. Как будет (если будет в разумный срок) - напишите. Буду ждать.
Ответить
Илья 23043
Где-то я уже видел подобные идеи, и сам о таких вещах неоднократно размышлял.
В итоге все упирается в несколько вещей.
Распределенная система, скорее всего, будет работать достаточно медленно, поскольку данные полученные из недостоверного источника нужно перепроверять, и желательно не один раз. В современном интернете, где пользователи уходят при загрузке страницы дольше 10 секунд это реальная проблема.
Кроме того есть проблема в том, кто будет решать, какие данные должны сохраниться в сети, а какие будут удалены. Какой смысл ноде из чистого альтруизма хранить ненужные данные(это не считая активной нагрузки), если можно хранить только свои. А когда каждый хранит свое, получается то что есть сейчас. И это самая главная проблема - как мотивировать участников сети хранить чужие данные(да никак, на самом деле!), да еще и на хорошем железе с широким каналом.
Ответить
base.network
Децентрализованный независимый веб
Денис Глазков
> Где-то я уже видел подобные идеи, и сам о таких вещах неоднократно размышлял.
Если скинете какой-нибудь источник, буду признателен.

Да. На проверку подписей загруженных данных уходит немало времени (на JavaScript), но вполне допустимо.
Например, http://test.base.network/chat/
Если исключить первую загрузку движка (или первое посещение сайта), то проверка подлинности чуть более 100 записей (в данном случае каждого отдельного сообщения) занимает меньше секунды (по крайней мере на моей не среднестатистической машинке).
Подгрузка данных занимает ровно столько же времени как и в случае с обычными веб-сайтами. Теоретически это должно происходить даже чуть быстрее, поскольку клиентом выбирается ближайшая нода, а для выполнения самого запроса на серверных нодах не требуется какой-либо сложной логики (обычный запрос: ключ-значение).
Ответить
base.network
Децентрализованный независимый веб
Денис Глазков
Да. Проблема с мотивацией хранить чужие данные есть. Но при желании и она решается.
Сейчас (пока проект находится на стадии становления) предполагаем что это будет происходить на альтруистической основе. Однако в будущем постепенно можно модифицировать софт, так чтобы это вызывало дополнительную мотивацию у пользователей предоставлять свои ресурсы.
Например, в недалеких планах начать использовать клиентское ПО непосредственно в качестве хранилища данных, а сервера использовать лишь как прокси. Такое решение позволит обычным пользователям предоставлять системе место на своем ПК (которое значительно дешевле чем серверное), а предоставляющим серверные ресурсы не боятся что у них хранится какой-то мутный контент.
Возможно ввести систему поощрений за хранение данных. Например, если пользователь хочет прочитать контент, он должен поощрить пользователя который его хранит. Поощрение возможно будет работать по принципу криптовалют. В данном случае по методу Proof-Of-Capacity-Per-Second. Раздаешь контент - получаешь вознаграждение. Читаешь - должен поделиться (в свою очередь или купив или предоставив свои ресурсы).
Ответить
base.network
Децентрализованный независимый веб
Денис Глазков
но все эти вещи имеет смысл дорабатывать только в случае изначальной заинтересованности какого-то числа людей в проекте.
Ответить
Выбрать файл
Блог проекта
Расскажите историю о создании или развитии проекта, поиске команды, проблемах и решениях
Написать
Личный блог
Продвигайте свои услуги или личный бренд через интересные кейсы и статьи
Написать

Spark использует cookie-файлы. С их помощью мы улучшаем работу нашего сайта и ваше взаимодействие с ним.