Здесь я делаю распределенную, устойчивую к цензуре и блокировкам борду.
Подобные форумы уже существуют, но ни один из них не работает полностью в браузере. Для любого даркнета надо что-то скачивать и устанавливать. Чего современный пользователь, конечно, делать не будет (и правильно - браузер это лучший сэндбокс). На мобилах это все тоже не работает.
Браузеры не могут соединяться друг с другом напрямую, поэтому сделать настоящую p2p сеть только на браузерах трудно. В dch я использую NKN - сеть, предназначенную для передачи данных между ее узлами. Это оверлей над интернетом, к которому любой может подключиться бесплатно и передавать пакеты по NKN адресам. Кошельков и крипты для этого не нужно, никакого майнинга на клиенте тоже не происходит. Ключевая особенность - связь происходит через WebSockets, т.е. подключиться к ней можно прямо из браузера. Подключившись к сети и найдя друг друга (сейчас сделано через встроенный в NKN pub/sub механизм), браузеры могут общаться друг с другом. Все это работает как в клирнете, так и через Тор.
Дальше дело техники. Сейчас это чат с максимумом в 200 сообщений (старые удаляются). Ты подключаешься, находишь других клиентов, синхронизируешь БД сообщений с ними. Слушаешь новые, рассылаешь свои новые. Все это работает по ссылке выше.
Спрашивайте вопросы, пишите фидбек по архитектуре, протоколам, идеи по дизайну.
>>3146995 (OP) ОП, выводвь напротив каждого поста IP-адрес. Так будет интереснее. И всё равно хуй кто сдеанонит. Это ж что-то дерзкое и эпичное должно случиться, чтобы сдеанонили по IP-адресу. А если через проксю, то так вообще.
>>3147151 Как я понял, вся идея как раз в том, что бы удалять ничего нельзя было. Написано же: устойчивая к цензуре борда. Проект в целом интересный, хотя технических сложностей пока видится чуть больше, чем бенефитов.
У меня есть технический вопрос: представим, что я обиженный на ОПа и хочу засрать его гипотетическую децентрализованную борду. В связи с этим я пишу простенький скрипт, который раз в секунду шлет спам-сообщение с пикчей копронигры (ну как вариант в ascii). Как именно противодействовать такому в p2p-сети?
>>3147209 > Как именно противодействовать такому в p2p-сети? Терпеть. Терпеть. Терпеть. Затем психануть. Потратить денежку и найти тебя. А потом повесить на дереве. Верёвкой. За шею. И не очень далеко, чтобы нашли до того как разложился. В назидание.
>>3147222 >Потратить денежку и найти тебя Звучит, как довольно слабый механизм защиты от такого рода атак, признаюсь честно. Надо понимать, что это АИБ, и буквально вторая вещь, которую люди на ней будут проверять - это ее вайпоустойчивость. Даже не со зла, а просто любопытства ради. Я не говорю, что это проблема, которая должна быть решена сию секунду: она и на двощах не всегда успешно решается. Но продумать ее точно имело бы смысл на раннем этапе.
Это просто приглашение к дискуссии, как отсеивать флуд говном в парадигме p2p и без инструментов модерации.
>>3147256 Так это же p2p. Каждый клиент имеет возможность отправить пакет с обновленным банлистом.
Ну чо, ты хочешь мне отправить банлист с моим ip? Милости просим, сука, давай. Только я такой же банлист разошлю всем с твоим ip. Обнимемся и вместе пойдём в бан, да?
>>3147209 Это в принципе центральная проблема всей идеи. Если нет привязки к ИРЛ вещам вроде номера телефона, никто не может ничего сделать. Можно дать инструменты простой автоматической фильтрации, чтобы ты не видел и не распространял такие сообщения. По регэкспам, например.
>>3147438 Регекспы легко обойти, тем более картинки-то они как будут чекать? Если только нейросетку какую-то натренить на картинки и модерацию сообщений.
>>3147767 Все так. По децентрализованным мессенджерам, что я знаю, ситуация такая: Битмессадж использовал proof of work чтобы постить. На каждое сообщение нужно было вычислить решение некоторой головоломки. Это затрудняло флуд и вайп, потому что нельзя было запостить сразу много сообщений. Может быть я такое прикручу, но целеустремленного вредителя это не остановит, т.к. очень большой порог нельзя поставить. Если сделать чтобы в браузере оно вычислялось в среднем несколько секунд, то специализированный майнер будет решать это за доли секунды. Freenet/Frost - нет барьеров. На популярных каналах дети непрерывно спамят словами которые им запрещено говорить в других местах, они просто мусорные. Но нельзя сказать что система мертва от этого. Freenet/FMS - какая-то мутная система паутины доверия. Основано на капчах и ручном помечании друг друга как заслуживающих доверия. Создает большой порог входа и предлагает механизм коллективного бана. Очень неудобная и не интуитивная система, но видимо как-то работает. Спама там меньше чем во фросте.
Думаю, пока проблемы спама не возникло, можно не беспокоиться на эту тему. Если чан станет неюзабельным, то введу какие-то меры из перечисленных.
>>3147438 Я думаю, на первых порах самое простое и эффективное решение - это кнопка "скрыть все посты от этого IP". Правда, если лимит в 200 или даже 500 постов останется - лютый спам все равно уничтожит тред. Есть ли вариант обходиться без лимита по численности постов или делать его более хитрым? Но при этом без необходимости прогружать гигабайты флуда, если по неосторожности кликнул не туда?
>>3147998 Айпи там невозможно определить, как и во всех остальных даркнетах. Клиенты не соединяются друг с другом напрямую, только через НКН. А НКН не выдает айпи.
>>3146995 (OP) Хуй знает, совпадение или нет, то во время отправки сообщения провайдер лихо рубанул интернет. И соединение не устанавливалось минут 15. До этого вообще не знал что такое обрыв связи с провайдером.
>>3148278 Вряд ли связано, НКН это не особо известная сеть и думаю ее еще никто не блочит и не мониторит. Но продолжай наблюдения. Напоминаю что оно работает и чере Тор, т.е. можно открывать в Тор барузере. Тогда пров точно ничего не поймет кроме того что ты вышел в Тор.
Соединений оно тоже не особо много создает. Может 20-30 коннектов к разным узлам во время подключения, потом стабилизируется до 3 соединений. Это сравнимо с другими тяжелыми вебсайтами, а какой-нибудь торрент вообще может тысячами их создавать.
>>3148124 NKN и предназначен для такого использования. Они себя рекламируют как инфраструктура нового интернета. Официально одобренное приложение на их сайте практически то же самое что и dch, только с плохим интерфейсом: https://losnappas.gitlab.io/d-chat/ Так что я бы не сказал что это паразитическое.
>>3149080 Под нагрузкой не тестировал, хотя хотелось бы. 1000 вкладок один комп не потянет, да и наверное НКН это воспримет как спам сети, если все будет с одного айпи идти. А платить за хостинг сотен машин ради теста я, конечно, не буду.
Что произойдет примерно представляю, впрочем. Узкое место там одно - подписка на топик, которая идет через блокчейн НКН. То есть каждая подписка это транзакция (без оплаты). С какого-то момента эти транзакции просто не будут помещаться в блоки и на нодах будет копиться очередь из них. Скорее всего они буду дропаться по таймауту (не смотрел код, но это самое логичное поведение). И таким образом новые подписки не будут проходить. Можно также предположить, что всей НКН сети поплохеет от такого флуда транзакциями. Ну это их трудности. Сам чан будет работать нормально. Сообщения тем клиентам, которые не смогли подписаться на топик, будут доходить с задержкой в несколько минут, пока они будут распространяться по сети через рандомные подключения. Каждые 30 секунд клиент выбирает 3 случайных адреса из пула и синхронизируется с ними.
>>3146995 (OP) Я бы вообще отказался от каких-то связей. Пусть будут только посты, подписанные цифровой подписью, подтверждающей, что данный пост отвечает на тот пост и написан тем же человеком, который написал условный пост выше. Как оно будет доставляться куда-то для просмотра - вынести в отдельный слой абстракции. Можно через условную сеть релеев в три слоя, как в торе, на которые тогда еще положить подтверждение капчей, что это человек при попытке отдать ему сообщение на отправку плюс фильтрацию цепе нейросетью. Но первый слой релеев конечно не должен знать, что именно юзер постит. А можно просто эти релеи в торе разместить. Клиентский код Тора для браузера даже где-то был, хотя и не факт, что он безопасный.
>Браузеры не могут соединяться друг с другом напрямую Посмотри вот в эту сторону.
>>3148040 >Клиенты не соединяются друг с другом напрямую, только через НКН. тогда хуета. не тру. можно сделать трушно, через WebRTC а так идея базовая, я тоже сам пытался делать прототип своей гениальной идеи распределенной соцсети в браузере
>>3147243 ты фолловишь (подписываешься на) юзеров (которые в свою очередь фолловят других юзеров). тебе показываются их сообщения, сообщения людей которые они фолловят, людей которые в свою очередь они фолловят и т.д. до какой-то определенной глубины (так типа получается своего рода "фолловое" корневое дерево, где вершины - это юзеры, а ребра - это фоллов.) хорошие юзеры не будут подписываться на спаммеров, поэтому ты их должен фолловить. а если тебе показывается спам, то 1) блокируешь спаммера, 2) если спаммеров таких целая ветка, то отрезаешь эту ветку блокирую или отписываясь от юзера который фолловит спаммеров
>>3149813 Сейчас и есть БД постов, только без подписей. Опциональные подписи и айди можно потом навернуть. Доставка там в отдельном слое, но посколько пока что это только НКН, то они переплетены, наверное, больше чем нужно. На будущее я смотрю альтернативные транспорты.
Про Тор ты это имеешь в виду: https://github.com/Ayms/node-Tor ? Очень интересно для этого проекта. Надо разбираться как там что работает. Может быть хорошей альтернативой НКН если можно будет заводить свой онион сервис на нем прямо в браузере. ТорЧат так делал вроде бы. Ну или хотя бы сделать интеграцию Тора чтобы просто поставив чекбокс можно было через тор коннектиться, не заводя тор браузер. Это уже круто было бы.
На ВебРТС я давно посматриваю в контексте этого проекта (про который я думаю уже лет 10). У него две большие проблемы: плохая стабильность подлючения и необходимость участия СТУН сервера. Например, есть такой проект - вебторрент ( https://github.com/webtorrent/webtorrent ). Работает такой торрент только тогда, когда кто-то из клирнета на обычном ХТТП хостит файл. Из браузера начать сидить нельзя. Все по этим же причинам - чистый п2п ВебРТЦ без дополнительных серверов не жизнеспособен.
Отдельная проблема с ВебРТЦ это то что ноды должны знать айпи друг друга, если они будут напрямую соединяться, и соответственно не поддерживается Тор. Поскольку это бесцензурная борда, необходимость скрывать свой айпи и желательно сам факт взаимодействия с системой в приоритете. В этом смысле построение своей п2п сети в клирнете это путь в никуда. Например, сейчас там 2-3 постера, если бы мы коннектились напрямую мы бы знали айпи друг друга. Показать свой настоящий айпи в сегодняшних реалиях это все равно что паспорт предъявить. Кому сильно надо узнают кто ты ИРЛ.
>>3151007 я думаю тебе нужно больше изучит инфы про вебртс
>необходимость участия СТУН сервера а еще signalling сервера >Работает такой торрент только тогда, когда кто-то из клирнета на обычном ХТТП хостит файл. Из браузера начать сидить нельзя. можно >чистый п2п ВебРТЦ без дополнительных серверов не жизнеспособен. как и любая п2п технология
в вебртс пиры не могут приконектиться друг к другу без stun и сигнализирования. однако так работает в какой-то степени со всеми п2п технологиями. в тех же битторрентах хостятся трекеры, благодаря которым пиры в принципе находят друг друга но это если не считать безтрекерные способы коннекта по типу DHT. в вебртс такое реализовать невозможно. в остальном, после коннекта, пиры работают напрямую. да и сигнальные серверы/трекеры не обязаны быть центральными, это такие же децентрализованные узлы, только выполняют другую роль. даже можно использоовать других пиров для сигнализирования (но только после коннекта хотя бы с одним)
>>3151027 По вебторренту: https://webtorrent.io/intro - пикрел Можешь сам убедиться, просто из браузера ничего не сидится. Ты даже из одной вкладки браузера в другую не сможешь скачать.
>>3151007 >Сейчас и есть БД постов Я конечно об этом так долго не думал, но чисто вот сам склонился бы к тому, чтобы и БД никакой не было. Просто релею какому-нибудь отправляешь запрос, есть ли ответы на комментарий вот с таким HMAC, ну, включая историю, наверное. А он их там как-то собирает тебе.
Но вот идея еще была такая по этому поводу. Небольшие нейросети работают в браузере, там либа TensorFlow и TensorFlow Lite. Таким образом можно делать премодерацию, но фокус в том, что ты пост одного анона можешь проверять нейросетью в браузере другого анона. Весит сама TF и нейросетка от мегабайтов до десятков, но вот их можно как раз попробовать раздавать через WebRTC наподобие торрентов.
>>3151061 А, еще вот идейка была - ссылки в никуда. Ну это к медиа относится. Типа вот ссылка на картинку с заданной контрольной суммой SHA-256. А ищи ее где хочешь, у других спрашивай.
>>3149823 Про ВебРТЦ расписал выше, почему это не зашло. Лес фолловеров - что-то в этом есть. Тонкий момент в начальном подключении юзера, когда он никого не знает. Тогда он, получается, должен будеть видеть все посты сначала, и самостоятельно выбрать из них те, которые входят в качественные деревья фолловеров. Получается немного похоже на твиттер, где если ты кого-то фолловишь он тебе подсовывает посты, близкие по графу связей.
Это довольно радикально отличается от концепции АИБ, которую я задумывал. Но как один из вариантов развития буду иметь в виду.
>>3151036 на твоем скрине речь идет про node.js (в заголовке подраздела написано в скобках "in Node.js"). браузеры могут сидить браузерам. пикрил ответ одного из контрибьюторов. у меня на instant.io тоже не получилось перекинуть картинку в другую вкладку. там ошибки про то что я не могу подключиться к трекерам. тогда я попробовал включить впн, и у меня получилось
>>3151937 >должен будеть видеть все посты сначала ну да, либо подписаться на друзей с которыми уже знаком.
если что я это описывал про теоретическую соцсеть, а не про анонимную борду. не знаю как она у тебя будет устроена, если она будет анонимной, то реализовать подписку на юзеров вроде бы невозможно
>>3150038 Я посмотрел на эту экосистему и их протокол как основу: https://www.w3.org/TR/activitypub/ Не вижу смысла реализовывать как у них. Оно заточено под другие нужды. Грубо говоря, если есть какие-то серверы вроде дискорда, то они могли бы форвардить друг другу сообщения. Не уверен что это прям взлетело у них. А для dch это слабо применимо. Там все проще сейчас. Каждый клиент просто держит полную копию всего чана. И они синхронизируются между собой.
Вот моя структура поста сейчас: { "post": "text", "timestamp": 1234 }
activitypub структура поста: пикрел. Куча того что мне не применимо, но таймстампа нет. Единственное общее поле это контент, лол.
>>3152281 Да, ты прав, я невнимательно прочел. А между вкладками не работает, скорее всего, опять же из-за того что это на одной машине, и оно само с собой не может соединиться. Это тоже показывает общую ненадежность ВебРТЦ соединений. Ты видел где-нибудь использование ВебРТЦ на практике?
Подписка может быть и просто на айдишники. Что-то немного похожее сделано в Freenet/FMS. Там у всех есть айди, и у каждого айди есть список известных "хороших" айди, который у него можно спросить. Аналог списка тех, кого ты фолловишь. Изначально ты не числишься ни в чьих списках, и твои посты никто не видит. Ты можешь попасть в чей-то список, решив капчу которую он тебе предложит. Схема работы такая: изначально подключаясь к системе, ты должен прорешать кучу капч, чтобы тебя занесли в списки. Тогда твои посты будут видны. На этом моменте обычно юзеры и отваливаются, потому что это все медленно и нестабильно.
>>3154406 >А между вкладками не работает, скорее всего, опять же из-за того что это на одной машине, и оно само с собой не может соединиться. не-а, все спокойно соединяется, хоть в одной машине хоть в нескольких. я когда сам реализовывал простецкий пример вебртц приложения, спокойно коннектился -в другую вкладку, -на другую машину (смартфон) в локальной сети, -на машину в другой сети
кстати, на instant.io у меня оказалась проблема в том что мой адблок зачем-то блокирует один из трекеров. отключил адблок - заработало
>Ты видел где-нибудь использование ВебРТЦ на практике? звонки в дискорде и зуме
>>3156298 Дискорд: пикрел Т.е. они просто используют его как еще один способ соединения со своим сервером, а не между браузерами. По зуму не нашел толкового объяснения, просто упомянуто что мол используем.
Кстати, НКН теперь тоже поддерживает ВебРТЦ, так же как дискорд - от клиента до ноды. dch я пока не проапдейтил, надо потестить сначала.
>>3147209 > Как я понял, вся идея как раз в том, что бы удалять ничего нельзя было. Написано же: устойчивая к цензуре борда. Проект в целом интересный, хотя технических сложностей пока видится чуть больше, чем бенефитов.
Чем не нравится NNTP? Что разошлось по серверам, не вырубишь топором.
> У меня есть технический вопрос: представим, что я обиженный на ОПа и хочу засрать его гипотетическую децентрализованную борду. В связи с этим я пишу простенький скрипт, который раз в секунду шлет спам-сообщение с пикчей копронигры (ну как вариант в ascii). Как именно противодействовать такому в p2p-сети?
В юзнете это, опять же, решается на уровне админов серверов (подобно тому, как в электронной почте): они настраивают антиспамы, блокируют своих юзеров-спаммеров. С плохими серверами, которые рассылают спам, никто не пиритая.
>>3158889 Это придумано для федерации. Относительно небольшая группа серверов, где все друг друга знают, и их знают все пользователи. Это не то же самое что р2р, где каждый пользователь сам себе сервер. Ключевое отличие в том, что нельзя никого глобально заблокировать. Ты можешь заблокировать какой-то айди только для себя.
>>3159490 > Это придумано для федерации. Относительно небольшая группа серверов, где все друг друга знают, и их знают все пользователи. Это не то же самое что р2р, где каждый пользователь сам себе сервер.
"Настоящий p2p, где каждый пользователь сам себе сервер" автоматически означает на порядки большую сложность. А сложность - это, во-первых, просто главный враг любой технической системы, а во-вторых означает де-факто одну полноценную реализацию, контролируемую какими-то типами-спонсорами. Чтобы было реально много реализаций клиентов и серверов, протокол должен быть простым, как трусы. Чтобы реализацию мог написать на коленке один человек за разумное время.
> Ключевое отличие в том, что нельзя никого глобально заблокировать. Ты можешь заблокировать какой-то айди только для себя.
В юзнет нельзя никого глобально заблокировать. Заблокирует один сервер - есть другие, а можешь сам себе фид поднять. Нет единого административного центра всей сети и эта сеть невероятно устойчива к репрессиям, что много раз доказывала на практике. Серверов чем больше, тем лучше.
>>3159833 Потыкал немного. Интересно. Отличие от dch в том что для его работы нужны релеи, ну и соответственно они могут трекать кто коннектится. Хотя если через Тор заходить то не должно быть проблемой. В dch каждый юзер сам себе релей. Как реализация идеи анона выше про фолловеров и т.п. - модель твиттера - сойдет. Интересно посмотреть есть ли там проблема со спамом.
Найти какой-нибудь бесплатный сервер в интернете, настроить клиент (самое простое - какой-нибудь Thunderbird, хотя, слышал, в новых версиях NNTP из него выпилили).
Найти нормальный сервер в наше время непросто, в поиске будут вылазить платные сервера для варезников, они нафиг не нужны. Но бесплатные пока остались. Раньше их было больше, всякие американские университеты предоставляли сервера всем желающим во имя свободы слова.
>>3159948 Конкретный сервер может тебя авторизовать по логину/паролю или еще как-то, но это чисто на его усмотрение. На уровне сети айди нет. Если не авторизовать, заспамят же.
>>3153088 Это залупа придуманная синеволосыми трапами, для того чтобы создать анально огороженные "безопасные" социальные сети. Чтобы не дай бог кто-нибудь не назвал их биомусором. Не лезь. >>3148281 >>3159833 Крипто сразу нахуй.