Рубрика «p2p-сети»

Warpnet — одноранговая социальная сеть нанаписанная на Go, в которой каждый пользователь владелец собственной ноды — и клиента и сервера в одном приложении. Здесь я рассказываю, как она устроена, что два года коммитов говорят о моих ошибках в собственном проекте и какие задачи до сих пор не решены.

Warpnet — Twitter без сервера - 1

Читать полностью »

Это опять Revertron, в прошлой статье я разобрал, как устроена сеть Yggdrasil: криптоадресация, spanning tree, жадная маршрутизация, bloom-фильтры. Я обещал, что это первая статья цикла - и обещал рассказать новости. А новостей много: я переписал Yggdrasil с Go на Rust. Это и есть Yggdrasil-ng (next generation).

Сразу спойлер: рерайт у меня занял 3.5 дня. После этого я неделю чинил один баг. И на этом проекте я уже собрал Android-мессенджер. Обо всём по порядку.

Откуда вообще взялась эта идея

У меня есть свой проект - мессенджер MimirЧитать полностью »

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

Оверлейные сети

Читать полностью »

P2P-форум с нуля | от NAT hole punching до автономной и полностью децентрализованной сети - 1


Многие, кто работают с интернет-сокетами в любой сфере IT, задаются вопросом о пробросе портов. Связано это с тем, что практически во всех домашних/общественных/корпоративных роутерах реализован механизм NAT, который перекрывает прямой доступ к устройствам в этих подсетях извне, общаясь с внешним интернетом от их имени.

У NAT есть киллер-фича — он представляет собой идеальный фаервол: атаки извне не могут использовать порты локальных устройств напрямую, следовательно, это решает проблему атак на сетевую уязвимость ОС.

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

Разнообразные сервисы работают на серверах, т. е. имеют некую ноду, которая имеет белый адрес в интернете (находится не за NAT). Все пользователи же подключаются к этому единому серверу. В таком случае проблема «невидимости» пользователей отпадает. Однако чисто серверное взаимодействие ограничивает скорость участников, так ещё и не отказоустойчиво. Если сервер упадёт, то все клиенты отправятся за ним (считаем, что это одноклеточный сервис не на всяких там kubernetes).

Как вы уже могли были догадаться, даже в реалиях, когда практически все устройства находятся за NATами, P2P реален. Когда вы являетесь участником bittorrent-раздачи, трансфер больших данных осуществляется напрямую. Как это работает? Поиск ответа на этот вопрос завёл меня в глубокие дебри, разгребая которые я написал оверлейную p2p-сеть, где трекерами являются сами её участники. Интересно? Тогда добро пожаловать под кат.Читать полностью »

Идея децентрализованной социальной сети следующего поколения - 1
В данной статье я представляю вам свои размышления на тему истории и перспектив развития интернета, централизованных и децентрализованных сетей и как итог — возможной архитектуры децентрализованной сети следующего поколения.

С интернетом что-то не так

Впервые я познакомился с Интернетом в 2000 году. Конечно, это далеко не самое начало — Сеть уже существовала до этого, но то время можно назвать как первый расцвет Интернета. Всемирная паутина — гениальное изобретение Тима Бернерса-Ли, web1.0 в его классической канонической форме. Множество сайтов и страничек, ссылающихся друг на друга гиперссылками. На первый взгляд — простая, как все гениальное, архитектура: децентрализованная и свободная. Хочу — путешествую по сайтам других людей, переходя по гиперссылкам; хочу — создаю свой сайт, на котором публикую то что мне интересно — например свои статьи, фотографии, программы, гиперссылки на интересные для меня сайты. А другие размещают ссылки на меня.

Казалось бы — идиллическая картина? Но вы уже знаете чем всё это закончилось.
Читать полностью »

Как узнать свой внешний IP из программы - 1

При написании различных программ для работы с сетью, особенно p2p систем, время от времени возникает необходимость узнать внешний IP своего компьютера из программы (тот адрес, по которому Ваш компьютер доступен из Большого Интернета). Часто возникает искушение пойти легким путем и использовать внешние WEB-сервисы, которые по http возвращают Вам IP, или самому развернуть таковой. Хотя такой способ решения задачи и работоспособен, он тем не менее, имеет ряд недостатков:

  • При использовании собственного сервера – нужно где-то его держать и поддерживать, заодно и c соответствующим доменным именем. В случае выхода его из строя, или принудительного отзыва домена, вся Ваша p2p сеть выходит из строя.
  • При использовании внешнего сервера – Вы вводите зависимость своей системы как от его работоспособности, так и от формата ответов, который вообще никак не стандартизирован, и который владелец сервера может поменять в любой момент. С теми же последствиями для вашей сети.
  • http, которым советуют пользоваться – базируется на tcp, то есть протокол сравнительно тяжеловесный, требующий установки соединения и тп. В общем, пользоваться можно, но перерасход ресурса как компьютера, так и сети налицо.

Читать полностью »

Представим, что у вас есть ПК на базе условного GeForce GTX 1080.

Не исключено, что вы ярый геймер, но динамика цен на эту видеокарту подсказывает, что дело не только в играх:
«Железо» в прокат: как устроена децентрализованная игровая платформа Playkey - 1
Сколько зарабатывает одна такая «машина» за сутки, если использовать ее исключительно для майнинга? Примерно 25 Мегахешей в секунду, или около $1.5 в сутки, если добывать Etherium.

«Железо» в прокат: как устроена децентрализованная игровая платформа Playkey - 2
Пруф

Сейчас в Playkey мы арендуем сотни серверов, но не у частных пользователей, а у хостинг-провайдеров. Серверов с GPU — мало, и стоят они дорого, поэтому мы берём их в лизинг. И тут нам в голову пришла гениальная идея: почему бы не использовать «железо» пользователей вместо «железа» от жадных хостеров? Мы провели нехитрые расчеты.

Допустим, в Playkey максимальная стоимость часа игры — не выше 49 рублей (по самому «дорогому» тарифу «Тренировочка», как раз на один час). Даже если представить, что с внедрением p2p-модели цены на сервис упадут вдвое (а нам это только на руку, чтобы Playkey пользовалось еще больше игроков), то одна машина-майнер может зарабатывать около $10 в сутки (и при далеко не полной своей загрузке). Вместо $1.5 за 24 часа добычи эфира.  
«Железо» в прокат: как устроена децентрализованная игровая платформа Playkey - 3

Но пойдем по порядку.
Читать полностью »

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

Пользователю это даст быстрый доступ к его локальной копии нашего сайта.

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

Напомню: InterPlanetary File System — это новая децентрализованная сеть обмена файлами (HTTP-сервер, Content Delivery Network). О ней я рассказывал в статье "Межпланетная файловая система IPFS".

image

Читать полностью »

Немного про RetroShare

Из Википедии:
RetroShare — свободное кроссплатформенное программное обеспечение для бессерверного обмена письмами, мгновенными сообщениями и файлами с помощью шифрованной F2F (и опционально P2P) сети, построенной на GPG. Не является даркнетом в строгом смысле слова, так как пиры могут обмениваться сертификатами и IP адресами со своими друзьями.
Читать полностью »

Раз уж пошла такая пляска, то и я расскажу про новый параметр магнет ссылки.

br=192000

Как правильно качать в p2p сетях или магнит с битрейтом - 1
В магнет-ссылке он выглядит так.

magnet:?dn=pop_music.mp3...&br=192000

Этот параметр позволяет совместить преимущества последовательного и случайного выбора частей для загрузки. Назовем это «смешанный способ выбора частей». Тем самым давая возможность «онлайн» просмотра/прослушивания без ущерба для скорости загрузки.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js