ZeroNet — По настоящему распределенная сеть — год спустя

    image

    Примерно год назад я писал об этой сети ZeroNet — Распределенные сайты через Bittorrent и Bitcoin тогда еще хабр был торт и в комментариях были обсуждения о том насколько сеть распределена. Да, год назад действительно были вопросы, но теперь всё изменилось.

    Внутри:
    • Что это такое этот ваш ZeroNet
    • Что изменилось за год
    • Почему она полезно с точки зрения защиты от цензурирования
    • Почему она полезна в качестве импорто замещения и «защиты сувереннитета»
    • Что есть в сети?


    Что это такое этот ваш ZeroNet

    ZeroNet — распределенная сеть, она работает следующим образом: На вашем устройстве запускается Python сервер который соединяется с такими же пользователем как и вы и слушает порт 43110 на 127.0.0.1 куда вы должны зайти своим браузером.

    Под капотом же используются технологии Bittorrent Bitcoin и DHT.

    image
    Руссий форум в сети

    Чуть подробнее:
    Каждый сайт в сети представляет из себя папку с содержимым и файлом манифеста который подписан вашим публичным ключем, только обладатель приватного ключа имеет возможность обновлять контент в дальнейшем. (Не считая сайтов с мульти-подписью но о них ниже)

    Подключение к сайтам происходит следуюшим образом: Вам требуется знать его hash адрес или же .bit домен, как только вы его попытаетесь открыть (например http://127.0.0.1:43110/1HeLLo4uzjaLetFx6NH3PMwFP3qbRbTf3D) будет выполнено подключение к торрент трекеру и найдены пиры которые раздают этот сайт, после чего пойдет его загрузка. (В дальнейшем планируется работа и через DHT но в данный момент — нет)

    А обновление контента?
    Обладатель сайта может опубликовать новую версию сайта и если она подписана валидным ключем — она будет распространена между пирами.

    image
    Блоги в сети

    Что изменилось за год

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

    Сейчас всё по другому.

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

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

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

    Пиры получают контент и сверяют действительно ли вы отправили изменения (на основе ZeroID) и если это так — принимают изменения.
    Для каждого сайта можно настроить свои ограничения и привелегии, но это не будет рассмотрено в этом посте.

    Почему она полезно с точки зрения защиты от цензурирования / Почему она полезна в качестве импорто замещения и «защиты сувереннитета»


    Эти два пункта очень сильно связаны, как нb странно. В данный момент сеть имеет только 1 центральную часть которая будет ликвидирована в скором времени — торрент трекер, в ближайшее время (по словам разработчика) будет переход на DHT сеть, что позволит быть независимым от внешних угроз. Причем, эти самые угрозы могут быть как внешние так и внутренние.

    Что есть в сети?


    Если вы решили посмотреть на то как работает сеть — то вам стоит загрузить клиент, доступен он на официальном сайте zeronet.io
    Если OS отличается от windows, то потребуется клонировать репозиторий и запустить скрипт, для windows же всё проще, скачиваем, разархивируем и запускаем.

    Некоторые ресурсы сети:
    Тот самый пиратский Play из-за которого о сети недавно писали на многих зарубежных ресурсах http://127.0.0.1:43110/1PLAYgDQboKojowD3kwdb3CtWmWaokXvfp
    ZeroTalk — крупный форум http://127.0.0.1:43110/Talk.ZeroNetwork.bit
    Отечественный рускоговорящий аналог большого форума http://127.0.0.1:43110/1Apr5ba6u9Nz6eFASmFrefGvyBKkM76QgE
    Блог разработчика сети с changelog'ом http://127.0.0.1:43110/Blog.ZeroNetwork.bit
    Имиджборда http://127.0.0.1:43110/0chan.bit
    Блог о разработке на русском http://127.0.0.1:43110/blog.gomzik.bit

    PS В прошлой стате я в качестве теста создавал пробный сайт в сети и он как оказывается всё еще работает
    Метки:
    Поделиться публикацией
    Похожие публикации
    Реклама помогает поддерживать и развивать наши сервисы

    Подробнее
    Реклама
    Комментарии 50
    • 0
      Кстати, демон на питоне под виндус авторы могли бы и виндовой службой запускать, не так уж это и сложно.
      • 0
        А зачем? так он сидит в трее и имеет управление...
        • 0
          Так как это более правильно и да, от того, что он будет службой, это не значит — что он потеряет управление и не сможет сидеть в трее.
          • 0
            может кто issue на гитхабе заведет тогда?
            • –2
              Да и под мак надо подобное запилить. Ясное дело что разрабам не до того, но приложение надо приводить к общепринятому формату в данной платформе, чтобы каждая домохозяйка справилась, а не только гики.
      • 0
        А у ZeroNet есть какая-то поисковая система? Какой-нибудь Zeroogle.bit?
        Вообще, содержит ли ZeroNet API в себе функции поиска по пирам?

        Если ничего этого нет, то есть ли хотя бы какие-нибудь каталоги, как раньше был "Rambler каталог" или типа того?
      • +5
        Сдается мне, история идет по кругу: интернет начинался с конференций Fido, и теперь снова возвращается к чему-то аналогичному: выглядит все пугающе-загадочно, все на английском, привычные стереотипы поведения "пользователя" не работают…
        • +5
          Почему пугающе-то? Это интригующе-загадочно.
          • +1
            Так Fido и было p2p.
            • 0
              Нет, фидо было FTN — а там уже администраторы:

              Основные особенности технологии: Иерархическая адресация (зоны, сети, узлы и поинты), что предполагает наличие в такой сети административной иерархии (координаторов разных уровней).

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

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

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

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

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

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

              Интересно, насколько данная реализация будет накладной по ресурсам? — Есть идеи получше?
              • +2
                Там по другому сделано, контент пользователей — json файлы при добавлении они попадают а sql базу доступную из JavaScript, что позволяет удобно выдирать нужные данные.
                • 0
                  Ну вот, только додумался :)
                • 0
                  Потом движком проверять эти файлы, и строить из этого всего ответ на трубуемый запрос.

                  Даже нет, проверять файлы изменений от пользователей, и строить из этого одну общую бд — вот оно! :)
            • 0
              А по каким портам траф ходит? Могут забанить порты?
              • 0
                По-моему это же всё тот же торрент, все порты + оба транспортных протокола, так что не забанят — проще выключить всё насовсем :)
                А фиксирован только порт 43110 внутри локалхоста, но это уж точно не проблема.
              • 0
                Правильно ли я понимаю, что перед тем как зайти на какой-то сайт, мне нужно его полностью скачать?
                • 0
                  нет, у многих сайтов некоторый контент (по выбору админа) может быть опциональным к загрузке и загружатся по запросу а не сразу, пример — 0chan
                  • +1
                    Развивая тему, а какие решения есть для этой сети в вопросе освобождения свободного места?
                    Допустим мне сайт еще нужен, но сожрал уж больно много диска. Удалить-перекачать? Что-то более интеллектуальное?
                    И как в этой сети с историей версий сайта?
                    • 0
                      Ну вопрос в оптимизации и введении TTL о чем я писал разработчику
                • 0
                  После получения подписи вы «Входите» на сайт предоставляя свою подпись, а при написании, скажем, поста на форуме вы подписываете контент вашей подписью и рассылаете между пирами с вашей подписью.

                  То есть никакой анонимности?
                  • 0
                    Никто не мешает сделать 10001 учетку ну или сделать сайт который не будет это требовать.
                  • +1
                    Очень интересен такой момент: каким образом в этой и подобных системах сообщения на тех же форумах выстраиваются в хронологическом порядке? На честном слове по предоставленному юзером таймштампу?
                    • +1
                      Точно не подскажу, но помню что толи уже сейчас или в скором будущем будет проверка на некорректное время через последние полученные блоки в mail/id
                    • –6
                      После слова Питон дальше статью не читал… Думаю что сеть не получит распространения и развития как и i2p т.к. написана на java. Рекомендую переписать все на C# Core. И еще адреса типа http://127.0.0.1:43110/ это не айс. Должно быть что то типа zero://1HeLLo4uzjaLetFx6NH3PMwFP3qbRbTf3D Так же продумать не статичный контент, иначе это не сайт а набор файлов страниц т.е. владелец ресурса должен иметь возможность взаимодействия по ajax. Очень важна так же сетевая анонимность, вычислить раздающего файл должно быть в принципе невозможно. Всегда должно быть неизвестно является ли узел A источником файла или он просто прокси.
                      • +1
                        i2p реализован не только на Java, но и на C. См. purple i2p
                        • +1
                          Не то, чтобы я сильно одобрял использование питона, но C# в качестве роутера такая же нелепость, как и java. Гигантский распухший рантайм, виртуальная машина, которая порт от ячейки памяти отличить не может а про существование cache line у процессора даже и не в курсе...
                          • 0
                            Core версия содержит только то, что вам необходимо.
                        • 0
                          Как происходит установление соединения если оба клиента находятся за nat?
                          • 0
                            По аналогии с торрентами
                            • 0
                              Т.е два клиента за nat'ом друг с другом соединиться без третьего лица с белым IP не смогут?
                              И насколько я понимаю есть трекер, который опрашивается, чтобы получить обновления сети?
                              • 0
                                В общем случае два серых IP (с непроброшенными портами NAT) и не могут соединиться друг с другом без третьего белого в принципе. Только в некоторых случаях (не гарантированно) могут поддерживать соединение, однажды установленное про посредничестве третьего белого.
                                • 0
                                  В том-то и дело, что сеть получается не распределенная и все равно нужен какой-то relay.
                                  • 0
                                    гм, ну это может решить IPv6
                                    • 0
                                      Внедрение IPv6 вряд ли поможет. Я думаю крупной корпорации нет смысла иметь кучу IP на каждого сотрудника и как был у них nat, так и останется.
                                      • 0
                                        А причем тут компании? для конечных пользователей v6 выгоден ну и для провайдеров тоже, если оборудование умеет
                                      • 0
                                        Кстати IPv6 не поможет, если в России будет «Великий Русский Файрволл»
                          • +3
                            Все сайты на http(s)://127.0.0.1:someport/siteaddress — очень плохая идея, потому что ломает Cross Site Request Policy, который должен изолировать сайты друг от друга.
                            • 0
                              Поставил попробовать, после получения ID постоянно вываливается "Message wrapper_nonce error, please report!" и ничего не происходит, пока не закроешь окно и не зайдешь на 127.0.0.1 по новой.
                              • 0
                                Аналогично. Давно пытался пощупать, так и не заработало. Сейчас проверил — ошибка та же самая.
                            • 0
                              Попробовал полазил, круто конечно но внутри пустота, я не смог найти интересных ресурсов.
                              • 0
                                У мобильных операторов и в некоторых WiFi сетях очень часто полностью режется весь торрент-трафик. Будет ли в таком случае работать эта сеть?

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