Нодлист

[idec.talks] Mon Jan 24 05:31:03 UTC 2022 @Andrew Lobanov -> All

Не прошло и двух месяцев, как я собрал актуальный нодлист. Лежит в таверне на публичных фреках. Налетай! P.S.: Доступен через веб-интерфейс http://idec.spline-online.ml/ без регистрации и SMS.

Re: Предложения или "Как нам обустроить idec?"

[idec.talks] Fri Jan 21 09:32:52 UTC 2022 @Andrew Lobanov -> ake

ake> Добавил на своей ноде. Это, безусловно, замечательно. А теперь как наладить отправку сообщения поинтом твоего узла поинту моего узла? :) Внутри одного узла вообще не проблема личку сделать, но смысла в ней не очень много получается.

2022

[idec.talks] Sun Jan 2 04:23:09 UTC 2022 @shaos -> All

Всех обитателей IDEC сети поздравляю с Новым 2022-м Годом! Желаю IDEC в новом году разростись до немыслимых размеров и подмять под себя ну скажем всех Спринтеристов (и даже частично Синклеристов), а если получится, то и ещё кого-нибудь в придачу ;)

Re: Актуальный нодлист

[idec.talks] Fri Dec 24 10:31:59 UTC 2021 @Ordos -> shaos

Вот кстати здравая мысль. И фича полезная и ничего не ломает. Я - за.

Re: Актуальный нодлист

[idec.talks] Fri Dec 24 07:12:14 UTC 2021 @shaos -> shaos

А кстати небыло мыслей сделать специальный вызов в API, который возвращал бы uplinks? Типа /fetches.txt ==== http://idec.spline-online.ml/;idec.talks/linux.14/lor-opennet.17/develop.16/plan.9/zx.spectrum;15 https://.....;something.something;60 ==== Ну и было бы неплохо иметь возможность через API спросить у нода как он называется, а то я сейчас не вижу как по http://idec.spline-online.ml понять, что это tavern И после этого можно будет строить топологию сети автоматически :)

Re: Мысли про возможное будущее IDEC

[idec.talks] Fri Dec 24 06:58:03 UTC 2021 @shaos -> hugeping

> ii подмножество idec. Если речь про ii, то всё-ещё так. :) ii более несуществует - есть только idec ;) и он чуть более сложный...

Re: Предложения или "Как нам обустроить idec?"

[idec.talks] Fri Dec 24 06:56:57 UTC 2021 @shaos -> hugeping

> ... если при внедрении расширений, наследие будет работать как и работало -- вообще > замечательно. На своей ноде я вряд ли буду делать что-то дополнительное, но > с интересом понаблюдаю за движухой. Это самая правильная позиция :) Главное не ломать совместимость со старыми версиями нодов/клиентов

Re: Предложения или "Как нам обустроить idec?"

[idec.talks] Thu Dec 23 19:37:43 UTC 2021 @ake -> hugeping

> Естественно, забор . эх нужен авторизированный. Емнип, /u/point/ расширен для этого. Ну, у меня ключевая идея была как раз в том, что если нам нужно авторизоваться для получения данных, то мы просто дописываем строку авторизации к идентификатору эхи (или сообщения) и не надо вводить никаких новых методов. Нет большой разницы, в плане наличия данных в запросе, обращаемся мы к специальному /u/private/myauth/secret.echo или к стандартному /u/e/myauth.secret.echo. Только с ограничением на имена эх промахнулся. Без разницы, как это реализовано внутри - генерирует нода такие индексы динамически или честно форвардит входящие.

Re: Предложения или "Как нам обустроить idec?"

[idec.talks] Thu Dec 23 09:23:44 UTC 2021 @hugeping -> ake

ake> Добавил на своей ноде. ake> На клиенте: ake> Чтобы отправить сообщение кому-то, отправляем его в эху mailto.{имя ноды}.{номер поинта}. Например, mailto.ake.100 ake> Чтобы прочитать свои входящие, указываем для получения ноду mailfor.{строка авторизации}. У меня были похожие вещи на старой ноде (на основе iing). У меня было понятие виртуальной эхи. Фактически, через них можно было делать любой запрос. Например, получить личные сообщения, делать поиск по содержимому итд. На текущей ii-go личку сделал проще. Сообщения шлются в эху .private (вообще, эхи с . у меня считаются специальными) и дальше при заборе этой эхи учитывается, что именно можно отдавать юзеру. Решение делается на основе поля To. Там кажется можно даже групповую переписку организовывать, но я сейчас не помню. Но если написать в личку All, то услышат все (через личку). :) Естественно, забор . эх нужен авторизированный. Емнип, /u/point/ расширен для этого. Но главный вопрос в другом. Как наладить хождение почты между узлами? И тут возникает масса интересных вопросов... Начиная от адресации, маршрутизации и заканчивая вопросами как долго хранить эту переписку транзитным узлам. Ну итд. И тогда я подумал, а так ли нужна эта фича? Мне вот достаточно лички в пределах моего ресурса.

Re: Мысли про возможное будущее IDEC

[idec.talks] Thu Dec 23 09:11:45 UTC 2021 @hugeping -> shaos

>> Реализация всё ещё пишется за несколько часов :) shaos> Это далеко не так ;) ii подмножество idec. Если речь про ii, то всё-ещё так. :)

Re: Предложения или "Как нам обустроить idec?"

[idec.talks] Thu Dec 23 09:02:58 UTC 2021 @hugeping -> shaos

shaos> И всё-таки, зачем кому-то в прошлом захотелось усложнить ii? ;) Я лично считаю, что расширения нужно вводить только тогда, когда они нужны позарез. Например, насколько я помню, одна из проблем -- необходимость для синхронизации сливать всегда все индексы. Да, это просто, но как-то уж очень перебор. Слайсы это исправили. Но я, естественно, не претендую на какой-то значимый голос в сообществе. Мой анархичный ii-go на данный момент меня полностью устраивает. И если при внедрении расширений, наследие будет работать как и работало -- вообще замечательно. На своей ноде я вряд ли буду делать что-то дополнительное, но с интересом понаблюдаю за движухой.

Re: Предложения или "Как нам обустроить idec?"

[idec.talks] Wed Dec 22 21:07:52 UTC 2021 @vvs -> shaos

shaos> И всё-таки, зачем кому-то в прошлом захотелось усложнить ii? ;) Если бы знал, то не спрашивал бы. Философия, стоящая за idec, для меня не вполне понятна. Я просто пользуюсь тем, что есть, для чисто практических целей. Сам я никогда не делаю ничего сверх необходимого. Правда мои личные потребности могут кого-нибудь очень удивить, но я никогда и не претендовал на их объективную сущность :)

Re: Предложения или "Как нам обустроить idec?"

[idec.talks] Wed Dec 22 20:46:44 UTC 2021 @shaos -> vvs

И всё-таки, зачем кому-то в прошлом захотелось усложнить ii? ;)

Re: Предложения или "Как нам обустроить idec?"

[idec.talks] Wed Dec 22 20:43:51 UTC 2021 @shaos -> ake

base32 это большие буквы и некоторые цифры - уж лучше обычный hex тогда а так вроде всё логично :)

Re: Предложения или "Как нам обустроить idec?"

[idec.talks] Wed Dec 22 19:33:39 UTC 2021 @vvs -> ake

И всё-таки, зачем кому-то и дальше усложнять idec? Если его существующие возможности не устраивают, то почему не взять что-то готовое? Это выглядит, как попытки изобрести велосипед. В чём тут может быть выигрыш? Нет, ну если просто очень хочется написать что-то своё, то вопросов нет. Не подумайте, что я кого-нибудь отговариваю - мне просто не понятны мотивы. Кто-нибудь смотрел для сравнения, например, https://public-inbox.org/README.html ? Это очень простой механизм, который использует готовые решения и протоколы для всего. Например децентрализованная сеть там за счёт Git. К тому же оно используется самими разработчиками Git. Кто-то может оценить, в чём возможные преимущества реализации этих же функций на idec заново?

Re: Предложения или "Как нам обустроить idec?"

[idec.talks] Wed Dec 22 18:22:03 UTC 2021 @ake -> Andrew Lobanov

Добавил на своей ноде. На клиенте: Чтобы отправить сообщение кому-то, отправляем его в эху mailto.{имя ноды}.{номер поинта}. Например, mailto.ake.100 Чтобы прочитать свои входящие, указываем для получения ноду mailfor.{строка авторизации}. В интерфейсе ноды: Входящие - http://gears.headake.win/idec/ui2/directmail/inbox Отправить сообщение - http://gears.headake.win/idec/ui2/directmail/send (адрес вводится в обычном формате "nodename, 123") Реквизиты для тестов ==== Адрес пользователя: ake, 5 Строка авторизации: jfmq66fj6e Адрес пользователя: ake, 6 Строка авторизации: 7uyoxz2fj4 ==== О грустном - клиентах и разных подводных граблях. В IDEC mobile отправка сообщений работает (хоть и требует финта ушами, вроде захода в любую эху и изменении поля в форме), а с получением сложнее - имя эхи приводится к нижнему регистру (и да, я проверил, это описано в стандарте), в отличие от строк авторизации, у которых таких ограничений нет (можно, конечно, кодировать строку в base32, но это отдельный уровень костыльности). В caesium чуть лучше - получение сообщений работает, для отправки нужен такой же трюк с вызовом редактора в любой эхе и исправлением её имени.

Re: IDEC identity

[idec.talks] Wed Dec 22 09:14:47 UTC 2021 @shaos -> Difrex(mobile)

По поводу общих поинтов - PGP/GPG тяжеловат потому как многообразен - надо что-то одно широко известное выбрать и поддержать, но только цифровую подпись - без шифрования (которое в IDEC по-моему противопоказано), например можно взять отданный в общенародное достояние алгоритм Ed25519, существующий уже 10 лет и не подпадающий ни под какие патенты - в нём есть 32-байтовый публичный ключ и 64-байтовый секретный ключ (половина из которого это копия публичного ключа). Публичные ключи распространяются по всем узлам и клиентам (например посредством специальной эхо-конференции от имени пользователя как поинта своего узла) и идентифицируют глобальных пользователей (которые всё также могут оставаться поинтами на своих узлах). К сообщению подписанному цифровой подписью Ed25519 цепляется 64-байтовя signature (в строке тэгов после тэга signature/ например как 128-символьная шестнадцатиричная строка либо как 103-символьная строка в кодировке BASE32 либо как 86-символьная строка в кодировке BASE64URL, либо как 80-символьная строка в кодировке ASCII85 где символ / подменён скажем на | - хотя наверное надо таки использовать BASE64URL как родной способ кодирования бинарных данных в IDEC). Чтобы проверить валидность сообщения, по имени пользователя (msgfrom) берётся его публичный ключ (предварительно распространённый) и по телу сообщения проверяется его цифровая подпись, чтобы удостовериться, что письмо не подменено или не подписано поддельным ключом. Подробнее про внедрения Ed25519: https://ianix.com/pub/ed25519-deployment.html P.S. Правда надо ещё придумать процедуру восстановления identity если секретный ключ утёк или утрачен, а узел с которого пользователь изначально идентифицировался более не существует (т.е. пользователь не может перепослать новый публичный ключ со старого узла, а должен сделать это с другого узла где сисоп каким-то образом должен удостовериться, что это тот же самый человек, что идентифицировался ранее со старого более недоступного узла - например изначально вместе с публичным ключом должен был быть распространён адрес емейл, который ни в коме случае не должен быть скомпрометирован или что-то типа этого).

Re: Мысли про возможное будущее IDEC

[idec.talks] Wed Dec 22 08:02:49 UTC 2021 @shaos -> Andrew Lobanov

> Есть ли смысл в таких аттачах? Тело сообщения не должно превышать 64КБ. Есть смысл, если надо заслать что-то маленькое вместе с сообщением (бинарь программки например, или заархивированный исходник). > Может проще аттачи распространять по отдельной схеме, и хэши на аттачи кидать в теги собщения? :) и это тоже можно сделать ;) ну или по классике - в теле письма писать URL на ii-объект: ii://1KpcmGrc9pUtZQ6Puv1z

Re: Мысли про возможное будущее IDEC

[idec.talks] Wed Dec 22 07:54:13 UTC 2021 @shaos -> Andrew Lobanov

> Реализация всё ещё пишется за несколько часов :) Это далеко не так ;) > Да и не повод дальше усложнять. Это небольшие инкрементальные улучшения, которые могут вывести IDEC на орбиту современных технологий ;) > Давай пойдём моим любимым путём: какие проблемы ты решаешь? :) Ну для начала - добавляет бинарных данных в рассылки. > С моей точки зрения этот false positive с такой высокой вероятностью ломает всю затею. Ну почему? Есть разница 100% сообщений надо вычитать, чтобы отфильтровать из них бинарные объекты или 1.56%? ;) > А найти и прочитать сообщение в общем случае это O(1). Скорее O(n)...

Re: Мысли про возможное будущее IDEC

[idec.talks] Wed Dec 22 05:09:30 UTC 2021 @Andrew Lobanov -> shaos

>> Предложения весьма занимательные, но с моей точки зрения теряется главное примущество idec - дубовость. shaos> Ну с годами idec уже не такой дубовый стал и совсем не маленький, как у вас тут принято считать ;) Реализация всё ещё пишется за несколько часов :) Да и не повод дальше усложнять. Давай пойдём моим любимым путём: какие проблемы ты решаешь? :) >> Есть ли смысл в осмысленных msgid, если мы всегда практически бесплатно можем прочитать теги? shaos> Не бесплатно. Чтобы посмотреть тэги, надо найти и прочитать сообщение. Если оно одно, то может и не долго, а если в списке их тысячи?. А так мы по списку можем видеть что есть что (ну разве что с вероятностью 1/64 это может быть "false positive", пришедший от старых нод или взятый из старых архивов, у которого случайно msgid начинается с 0). С моей точки зрения этот false positive с такой высокой вероятностью ломает всю затею. А найти и прочитать сообщение в общем случае это O(1). Другое дело, что в зависимости от конкретной платформы и конкретной реализации в абсолютных величинах это может быть долго. Я догадываюсь куда именно ты клонишь.

Re: Мысли про возможное будущее IDEC

[idec.talks] Wed Dec 22 05:09:30 UTC 2021 @Andrew Lobanov -> shaos

shaos> Несколько комментариев к моему изначальному сообщению. shaos> - Чтобы исключить кривотолки и неправильные реализации, надо явно прописать алгоритм создания хэша, который реализован в ii-php и iing (и скорее всего в старом ii, судя по статистике использования символов в хэшах архивных сообщений), чтобы недвусмысленно было написано, что 2 небуквоциферных символа в base64 надо заменять на A (большую) и z (маленькую), а то сейчас в документации написано "for example A and Z" и новые реализации пытаются следовать документации, получая несовместимые решения (ii-go). ii-go это анархическая реализация. Взять хоть редактирование сообщений :) shaos> - При поддержке вложений в новоявленном формате ascii85+ чтобы отличить их скажем от исходника на языке Си или JSON-а в начале сообщения можно добавить ключевое слово @attach за которым будет идти число включений и сервер будет убирать это в строку тэгов сохранённого сообщения например .../attach/3 будет означать, что по ходу сообщения должно встретиться 3 вложения в формате ascii85+ (правда это означает, что в этом же сообщении не может встретится кусочек программы на C/C++/Java или JSON, хотя можно добавить правило парсинга, что между ==== и ==== искать вложения ненадо)... Есть ли смысл в таких аттачах? Тело сообщения не должно превышать 64КБ. Может проще аттачи распространять по отдельной схеме, и хэши на аттачи кидать в теги собщения? :)

Re: Мысли про возможное будущее IDEC

[idec.talks] Wed Dec 22 02:18:44 UTC 2021 @shaos -> shaos

Несколько комментариев к моему изначальному сообщению. - Чтобы исключить кривотолки и неправильные реализации, надо явно прописать алгоритм создания хэша, который реализован в ii-php и iing (и скорее всего в старом ii, судя по статистике использования символов в хэшах архивных сообщений), чтобы недвусмысленно было написано, что 2 небуквоциферных символа в base64 надо заменять на A (большую) и z (маленькую), а то сейчас в документации написано "for example A and Z" и новые реализации пытаются следовать документации, получая несовместимые решения (ii-go). - При поддержке вложений в новоявленном формате ascii85+ чтобы отличить их скажем от исходника на языке Си или JSON-а в начале сообщения можно добавить ключевое слово @attach за которым будет идти число включений и сервер будет убирать это в строку тэгов сохранённого сообщения например .../attach/3 будет означать, что по ходу сообщения должно встретиться 3 вложения в формате ascii85+ (правда это означает, что в этом же сообщении не может встретится кусочек программы на C/C++/Java или JSON, хотя можно добавить правило парсинга, что между ==== и ==== искать вложения ненадо)...

Re: Мысли про возможное будущее IDEC

[idec.talks] Wed Dec 22 01:47:34 UTC 2021 @shaos -> ake

> Касательно рассуждений о хэше для сообщений, пришла мысль, что IDEC > это практически контентно-адресуемая сеть... Ну по сути так оно и есть :) > ...и можно как-то прикрутить её к IPFS (или наоборот) для хранения сообщений А зачем прикручивать, если IDEC по сути вполне годится на роль "downsized IPFS"? ;) Самая первая версия IPFS v0.1 появилась в феврале 2015, а самая первая версия ii v0.1 - в марте 2014. Получается IPFS это "upsized ii" :) А так внутри IPFS есть "Distrubuted Hash Map", который есть последний пункт моих мыслей применительно к IDEC :) И как над IPFS появилась криптовалюта Filecoin, над IDEC может в перспективе появится IDECoin и всё забурлит и запенится ;) Шутка... >> Хэш msgid может быть не визуально рандомным как сейчас, а будет способным нести информацию о типе (или о версии) сообщения > Мне кажется такую функциональность проще реализовать в виде варианта запроса > индекса, который будет возвращать (кроме идентификатора и закодированного > сообщения) строку с тегами, либо отдельным суффиксом у ID. Правда, хранение > метаданных в ссылке напоминает костыль в gopher, когда префикс в URL определяет > то, как клиент будет отображать полученное содержимое. Ну вот чтобы не хранить метаданные как отдельный костыль я и предлагаю честно поиграть с хэшом, чтобы он нёс в себе тип (или если хотите "версию" - как адрес в биткоине например).

Re: Мысли про возможное будущее IDEC

[idec.talks] Wed Dec 22 01:38:43 UTC 2021 @shaos -> Andrew Lobanov

> Предложения весьма занимательные, но с моей точки зрения теряется главное примущество idec - дубовость. Ну с годами idec уже не такой дубовый стал и совсем не маленький, как у вас тут принято считать ;) > Есть ли смысл в осмысленных msgid, если мы всегда практически бесплатно можем прочитать теги? Не бесплатно. Чтобы посмотреть тэги, надо найти и прочитать сообщение. Если оно одно, то может и не долго, а если в списке их тысячи?. А так мы по списку можем видеть что есть что (ну разве что с вероятностью 1/64 это может быть "false positive", пришедший от старых нод или взятый из старых архивов, у которого случайно msgid начинается с 0).

Re: Мысли про возможное будущее IDEC

[idec.talks] Tue Dec 21 18:34:00 UTC 2021 @ake -> shaos

Касательно рассуждений о хэше для сообщений, пришла мысль, что IDEC это практически контентно-адресуемая сеть и можно как-то прикрутить её к IPFS (или наоборот) для хранения сообщений. > Хэш msgid может быть не визуально рандомным как сейчас, а будет способным нести информацию о типе (или о версии) сообщения Мне кажется такую функциональность проще реализовать в виде варианта запроса индекса, который будет возвращать (кроме идентификатора и закодированного сообщения) строку с тегами, либо отдельным суффиксом у ID. Правда, хранение метаданных в ссылке напоминает костыль в gopher, когда префикс в URL определяет то, как клиент будет отображать полученное содержимое.

Re: Мысли про возможное будущее IDEC

[idec.talks] Tue Dec 21 17:41:54 UTC 2021 @Andrew Lobanov -> shaos

shaos> Всем привет shaos> Я познакомился в ii/IDEC только в августе этого года, стал изучать как оно всё устроено и наконец на днях, воспользовавшись открытой реализацией ii-php, поднял свой узел - теперь у меня есть несколько мыслей по возможному будущему этой системы (либо системы, которая может отпочковаться от этой системы, но будет оставаться совместимой со старым IDEC API): Предложения весьма занимательные, но с моей точки зрения теряется главное примущество idec - дубовость. Есть ли смысл в осмысленных msgid, если мы всегда практически бесплатно можем прочитать теги? Когда доползу до компа, постараюсь ответить более развёрнуто.

Мысли про возможное будущее IDEC

[idec.talks] Tue Dec 21 08:13:05 UTC 2021 @shaos -> All

Всем привет Я познакомился в ii/IDEC только в августе этого года, стал изучать как оно всё устроено и наконец на днях, воспользовавшись открытой реализацией ii-php, поднял свой узел - теперь у меня есть несколько мыслей по возможному будущему этой системы (либо системы, которая может отпочковаться от этой системы, но будет оставаться совместимой со старым IDEC API): 1) Кроме base64 существует чуть более компактный способ представления бинарных данных в виде текста - это алгоритм ascii85, когда каждые 4 байта представляются 5-значным 85-ричным числом, где каждая "цифра" это символ от '!' до 'u', плюс буквы 'z' и 'y' несут особый смысл, кодируя четвёрки нулей и пробелов соответственно - в результате данные раздуваются не в 4/3=1.33 раз, как в случае base64 (или uue), а в 5/4=1.25 раз или меньше, что как минимум на 6% компактнее. Можно немного развить ascii85 для кодирования произвольных бинарных данных, назвав новую систему кодирования скажем ascii85+ задействуя остальные неиспользованные символы: 'x' может кодировать четвёрку 0xFF (это может помочь при кодировании прошивок ПЗУ), 'w' - четвёрку 0x80 (это может помочь при кодировании 8-битных беззнаковых WAV-файлов), 'v' - пока может использоваться для детектирования ошибки, фигурные скобки { и } могут выделять закодированный бинарный блок в тексте (наличие явно заданного стартового символа упрощает парсинг, а наличие явно заданного терминатора поможет обрабатывать пограничные ситуации, когда концовка файла не влезает в 4 байта целиком), а ~ и | могут использоваться для каких-то особых случаев (см.ниже). Этот подход можно использовать для встраивания бинарных файлов в текст сообщений как вложений (аля ююки), указывая имя файла после втавки (чтобы клиент знал с чем этот файл надо есть и надо ли): ==== Посмотрите на эту весёлую картинку: {Abhdhj!$^390+- ... Bhdbdfjg}=funny.gif ==== Старые клиенты будут показывать такие сообщения как текст, а новые клиенты могут получать такие сообщения даже со старых узлов и показывать картинки как картинки или файлы как вложения (ряд иконок внизу сообщения), которые можно сохранить на диск на стороне клиента. 2) Этот же ascii85+ можно использовать для уменьшения размеров бандлов на 6% сделав новый вызов в API - например /u/n/msgid/msgid/msgid... (вместо /u/m/... который может остаться для старых клиентов) - и результат работы этого вызова может выглядеть примерно так: ==== msgid:{!"#$%&'()*+,-...} msgid:{0123456789...} msgid:{ABcded...} ==== где в фигурных скобках будет ascii85+ сообщений (этот алгоритм не является url-safe, поэтому в других местах API где надо url-safe останется всё тот же base64url). 3) Идея, что msgid является хэшом сообщения, с моей точки зрения является в ii ключевой, поэтому редактировать сообщения, сохранённые узлом (а тем более переданные на другие узлы) ни в коем случае нельзя! Ведь это поменяет контент и хэш уже не будет совпадать! Если же контент константен, то всегда можно восстановить msgid по самому сообщению, если вдруг msgid оказался утерян. Кроме того на стороне клиента (либо другого узла после фетча) можно проверить целостность сообщения, посчитав его хэш и сверив с msgid - если оно не совпадает, то либо это старое сообщение (отредактированное на узле, где это можно было делать, или посчитанное в стародавние времена, когда хэши в ii считались иначе), либо подменённое или испорченное новое сообщение - можно просто подсветить такое сообщение особым образом на клиенте и читатель сам будет решать, что ему с таким сообщением делать. 4) Хэш msgid может быть не визуально рандомным как сейчас, а будет способным нести информацию о типе (или о версии) сообщения - например сервер принимая от клиента текстовое сообщения классического вида добавит в его список тэгов новый тэг trick/0 и посчитает хэш сообщения - елси хэш не начинается скажем с символа '0', то алгоритм инкрементирует значение в этом тэге (trick/1) и считает хэш ешё раз - если опять не стартует с '0', то инкрементируем ещё раз и т.д. пока хэш не станет начинаться с нуля (в среднем на подготовку "красивого" msgid должно уходить порядка 32 вычислений хэша - иногда меньше, иногда больше) - в этом случае все узлы точно будут знать, что все "новые" сообщения с msgid вида 0... являются новыми "обычными" сообщениями (чтобы отличить от старых сообщений с именами случайно начинающимися с 0 можно проверить наличие тэга trick в заголовке сообщения - если он есть, то это новый тип сообщения с возможными вложенными файлами). Если каждая точка системы точно знает, что это новое сообщение, то она также может проверить целостность сообщения пересчитав его хэш и сверив с msgid ( ведь новый стандарт должен будет явно запретить редактирование или подмену сообщения уже сохранённого узлом ; ). Старые узлы и клиенты будут передавать такие сообщения как самые обычные (если не запнутся на неизвестном тэге trick). 5) Тип сообщения 1... может обозначать закодированный бинарный файл, когда в теле сообщения нет текста, а сразу идёт блок ascii85+ {...}. При посылке такого сообщения отправляющий клиент может задать новое ключевое слово @crc32:0xFFFFFFFF для указания контрольной суммы, которая при сохранении сообщения будет вставлена узлом в строку тэгов в виде .../crc32/0xFFFFFFFF и которую принимающий клиент может проверить после восстановления файла. Размер такого сообщения по понятным причинам будет ограничен - может быть даже придётся уменьшить текущий лимит 87кб до 32кб, чтобы эта реализация была совместима с ограниченными размерами памяти недокомпьютеров, которые могли бы участвовать в работе сети - в этом случае размер самого большого бинарного файла, который можно таким способом отправить, будет составлять порядка 26кб. Старые узлы и клиенты будут показывать такие сообщения как обычные текстовые. 6) Тип сообщения 2... может обозначать составной объект, когда ранее отправленные сообщения типа 1... на самом деле являются кирпичиками, из которых строится большое сообщение. В теле такого сообщения могут перечисляться как блоки {}, так и ссылки на внешние сообщения типа 1: ==== ~1gjkwui4iuwqrezD56az ~1ui4iuwqrezD56azFejs ~{......}|это вставка блоба ascii85+ (комментарий после | до конца строки) ~1uwqrzFejsDSGFeekjkd|это ссылка на другой объект, который должен быть вставлен при сборке {....}=666.bin|это объявление именованного блоба (без вставки) ~666.bin ~666.bin ~666.bin|это вставка копии именованного блоба (всего 3 копии подряд) ==== в примере выше показано как можно повторять несколько раз бинарный кусок, объявленный в том же сообщении (666.bin). Такой тип бинарного сообщения снимает любые ограничения на размер передаваемого объекта, который перед передачей может быть порублен на кусочки. При отправке такого сообщения также может быть использовано ключевое слово @crc32, которое как и в предыдущем случае будет вставлено узлом в строку тэгов при сохранении. Старые узлы и клиенты будут показывать такие сообщения как обычные текстовые (как в примере выше). В случае реализации сообщений 1 и 2 типов на уровне сети для передачи бинарных данных отпадёт необходимость в поддержке файлэх, которые выглядят несколько неестественно применительно к ii (например они не приспособлены для пересылки через последовательные каналы передачи данных, в то время как все остальные подсистемы IDEC представлены в текстовом виде и могут быть использованы через интерфейс терминала). 7) В будущем при отправке сообщения от поинта узлу к ключевым словам можно будет добавить ещё и подпись @sign:0xFF...FF по алгоритму скажем HMAC-RIPEMD-160-96 (с одним секретным ключом известным отправляющей и принимающей стороне), если достаточно удостовериться в валидности посланного от поинта на свой узел (узел должен знать секретный ключ поинта - точно также как сейчас он знает пароль) и далее при сохранении сообщения на узле (после проверки валидности) такую подпись можно опустить, либо (в будущем) по алгоритму Ed25519 (с публичным и секретным ключами), если требуется проверка достоверности сообщения в пределах всей сети на любом узле и любом клиенте (это более тяжёлая реализация, которая требует наличия двух алгоритмов SHA512 и Curve25519, а также способов передачи публичных ключей всех активных участников сети на все вовлечённые узлы) - в этом случае sign/0x... переедет в строку тэгов для проверки достоверности послания в любой точке сети (и также для проверки целостности данных вместо CRC32), а старые узлы и клиенты просто будут игнорировать этот тэг, как неизвестный. 8) Когда сеть разрастётся, возможно придётся отказаться от хранения всех сообщений на каждом узле (в идеале - когда все фетчат всех) - узлы могут быть разбиты на группы (с избыточностью) для хранения разных наборов объектов (скажем в зависимости от значений 2го и 3го символа в msgid). Существуют разнообразные алгоритмы распределённых хэшей, которые можно применить в данном случае для поиска объектов по хэшу (msgid) на сети ненадёжных узлов. В этом случае сеть можно будет использовать как распределённое хранилище подписанных объектов, которые можно будет задействовать при построении распределённых сайтов, мультиплеерных игр, криптовалют и т.д. Для старых узлов можно предусмотреть механизм, когда они подписываются на специальные скрытые эхи, в которые будут транслироваться копии объектов по группам - в этом случае эти узлы будут продолжать работать в старой парадигме IDEC, но в то же время они будут полезными в рамках новой распределённой сети объектов, раздавая сохранённые на них объекты при необходимости по запросу. Shaos

Re: Два пустых сообщения в idec.talks

[idec.talks] Mon Dec 20 09:47:45 UTC 2021 @shaos -> Andrew Lobanov

> Добавил в блеклист. Да - теперь в логах чисто - СПС!

Re: Два пустых сообщения в idec.talks

[idec.talks] Mon Dec 20 09:35:42 UTC 2021 @Andrew Lobanov -> shaos

shaos> Наверное если они невалидные их надо в чёрный список, не? Добавил в блеклист.

Два пустых сообщения в idec.talks

[idec.talks] Mon Dec 20 07:46:43 UTC 2021 @shaos -> All

Существует 2 пустых сообщения в idec.talks, которые вызывают ошибку при фетче из ii-php: ==== fetch http://idec.spline-online.ml/u/e/idec.talks/linux.14/lor-opennet.17/develop.16/plan.9/zx.spectrum idec.talks fetch http://idec.spline-online.ml/u/m/HaYwRbvCz0HDMhN2IrOU/ymc21433dohplAzblytS invalid message: HaYwRbvCz0HDMhN2IrOU error saving HaYwRbvCz0HDMhN2IrOU invalid message: ymc21433dohplAzblytS error saving ymc21433dohplAzblytS ==== Наверное если они невалидные их надо в чёрный список, не?

Re: Актуальный нодлист

[idec.talks] Sun Dec 19 12:37:02 UTC 2021 @shaos -> ake

Ну и от меня держите :) ==== { "nodename": "shaos", "client": " http://shaos.net:8085/ii-point.php?q=/", "web": " https://shaos.net:8085/ii-web.php", "sysop": "shaos", "contacts": { "email": "me@shaos.net", "phone": "+1xxxxxxxxxx", "web": " http://shaos.net" }, "description": "shaos.net IDEC node", "uplinks": [ [ "tavern", "15m" ], ] } ====

Новый узел IDEC http://shaos.net:8085

[idec.talks] Sun Dec 19 12:35:00 UTC 2021 @shaos -> All

Запустил таки ii-php у себя на доменном имени на специально выделенной машине PowerMac G4 400МГц с Debian-линухом на борту, стоящей у меня дома в Пало-Альто, штат Калифорния :) Пожалуй это будет первый узел ii/idec-сети, расположенной на американском континенте (и возможно первый узел на неинтеловской архитектуре?) Беру с таверны несколько эх, а также создал заглушки для своих эх ( в частности silicon.valley.local ; ) В будущем планирую на той же машине поднять Gopher-сервер и TNFS-сервер (для компьютеров ZX-Spectrum оснащённых сетевой карточкой Spectranet) Shaos

тестовое сообщение

[idec.talks] Sun Dec 19 11:01:22 UTC 2021 @shaos -> All

пишу тестовое сообщение

Re: Предложения или "Как нам обустроить idec?"

[idec.talks] Sat Dec 18 06:20:41 UTC 2021 @Andrew Lobanov -> ake

AL>> Как это будет работать в масштабе сети? ake> Навскидку - либо масштабируем то же самое до нод, т.е. складываем в скрытую эху outbound.some_node_authstr, на которую подписана эта нода; либо форвардим с помощью /u/push. Химера какая-то, если честно. Давай чтоль нормальный POC :)

Re: Предложения или "Как нам обустроить idec?"

[idec.talks] Sat Dec 18 06:17:58 UTC 2021 @Andrew Lobanov -> ake

>> Менять сообщения, конечно, никто не запрещает, но не надо такое отдавать наружу никогда. А так - каждый волен со своей базой делать что угодно - хоть удалить вообще нафиг :) ake> Совсем не обязательно менять сообщения, ничто не запрещает отдавать в индексе эхи, сообщения имеющие другое значение в соответствующем поле. И кросспостинг почти про то же. Кросспостинг реализуется на стороне клиента и делается совсем иначе и проще. Зачем городить огород? >> Для этого нужна поддержка шифрованных сообщений. ake> Тэг с типом содержимого вообще ортогонален шифрованным сообщениям. Можно хоть что слать, заранее перекодировав и указав, что это base64/uuencode/koi8r/etc, если надо (да, будет неоптимально, но это опять организационный вопрос, и я в курсе про файл-эхи). >> Возможность редактирования сообщений это зло. ake> Обратный вопрос, перефразируя: "Какие проблемы это создаёт?" Ну любые нововведения должны решать существующие проблемы. Изменения ради изменений это путь к сложной системе без смысла.

Re: Предложения или "Как нам обустроить idec?"

[idec.talks] Fri Dec 17 14:25:06 UTC 2021 @ake -> Andrew Lobanov

AL> Как это будет работать в масштабе сети? Навскидку - либо масштабируем то же самое до нод, т.е. складываем в скрытую эху outbound.some_node_authstr, на которую подписана эта нода; либо форвардим с помощью /u/push.

Re: Предложения или "Как нам обустроить idec?"

[idec.talks] Fri Dec 17 13:29:52 UTC 2021 @ake -> Andrew Lobanov

> Менять сообщения, конечно, никто не запрещает, но не надо такое отдавать наружу никогда. А так - каждый волен со своей базой делать что угодно - хоть удалить вообще нафиг :) Совсем не обязательно менять сообщения, ничто не запрещает отдавать в индексе эхи, сообщения имеющие другое значение в соответствующем поле. И кросспостинг почти про то же. > Для этого нужна поддержка шифрованных сообщений. Тэг с типом содержимого вообще ортогонален шифрованным сообщениям. Можно хоть что слать, заранее перекодировав и указав, что это base64/uuencode/koi8r/etc, если надо (да, будет неоптимально, но это опять организационный вопрос, и я в курсе про файл-эхи). > Возможность редактирования сообщений это зло. Обратный вопрос, перефразируя: "Какие проблемы это создаёт?"

Re: Предложения или "Как нам обустроить idec?"

[idec.talks] Fri Dec 17 11:47:57 UTC 2021 @Andrew Lobanov -> ake

ake> Доброго времени суток. На волне (пока ещё) энтузиазма решил поделиться "рационализаторскими" предложениями для idec. Некоторые из них, в том или ином виде, озвучивались. Часть из них относится скорее к реализации нод, но некоторые потребуют либо дополнения протокола, либо изменений с разной степенью обратной совместимости. Ты забыл самое главное написать: какие существующие проблемы это решает? ake> 1. Правила перемаркировки эх. Идея простая - на ноду приходит сообщение (не важно, фетчится или от поинта) и, если у него в качестве эхи указано некое значение A, то оно заменяется на некоторое A* по определённому правилу. Самый очевидный вариант использования - "личные" эхи, один поинт отправляет сообщение в эху "sendmsg.username", в процессе оно перемаркируется, как "readmsg.username_authstr" и адресат его может получить. Ещё так можно укрупнять и агрегировать эхи, перемаркировывая сообщения из внешних "dev.c", "dev.cpp", "dev.python" в общую локальную "dev.main", например. Недостатком становится то, что такие эхи становятся либо односторонними, либо надо создавать сложные обратные правила (т.е. ответы должны будут помещаться и в новую эху, и в старую). Менять сообщения, конечно, никто не запрещает, но не надо такое отдавать наружу никогда. А так - каждый волен со своей базой делать что угодно - хоть удалить вообще нафиг :) ake> 2. Кросспостинг - отправка и присутствие сообщения с одним ID в нескольких эхах одновременно. Это задача клиента. ake> 3. Хуки на появление сообщений в эхе/от пользователя/в качестве ответа. Тогда можно будет сделать, например, эху для управления нодой, какие-нибудь голосовалки (изначально была идея нодо-локальной общественной модерации) и ещё что-нибудь. Непонятно какие задачи решает. Голосования проводили и без этого. Можно анализировать сабжи. Это дёшево. ake> 4. Добавить тег определяющий кодировку или тип содержимого (mime-type) тела сообщения. По идее это должно гарантировано решить проблему с тем, как реализовывать шифрование сообщений - зашифрованное сообщение будет иметь соответствующий тег encoding и его расшифровкой должен будет заниматься клиент. Для этого нужна поддержка шифрованных сообщений. Но я, например, против шифрования в эхах. ake> 5. Хранить время фетча сообщения нодой и использовать его в качестве указателя сдвига для получения индекса в /u/e-подобном запросе. Я читал обсуждение чего-то подобного в idec.talks, но по-моему там предлагалось использовать время самого сообщения, что действительно может работать криво. Можно попробовать POC написать. ake> 6. Метод POST для /u/e и /u/m, это тоже обсуждалось и, вроде, не должно требовать больших изменений, но почему-то не взлетело. Смысла особого нет. Не решает ни одной проблемы. ake> 7. Хранить в тегах, кроме указателя на отвеченное сообщение, указатель на первое сообщение ветки обсуждения/топика. Чуть упрощает реализацию топиков и позволяет писать в них сообщения не являющиеся ответами на конкретный пост. Смысла нет, так как построить цепочку ответов это практически бесплатно. ake> 8. Пока ещё сырая, на как выходит не новая, идея, касающаяся редактирования сообщений, заключающаяся в отправке нового сообщения, с тегом, скажем, "amend" содержащим ID оригинального сообщения. Идентичная идея была описана ещё в ii://jOO4SZIyVrHLU9XxuhKW , но осталась без ответов. Возможность редактирования сообщений это зло.

Re: Предложения или "Как нам обустроить idec?"

[idec.talks] Fri Dec 17 11:47:57 UTC 2021 @Andrew Lobanov -> ake

hugeping>> - личка (правда у тебя в списке этого нет) ake> Ну, примитивную личку можно собрать на базе идеи про перемаркировку, она там как раз в виде примера. Как это будет работать в масштабе сети?

Re: Предложения или "Как нам обустроить idec?"

[idec.talks] Fri Dec 17 11:47:57 UTC 2021 @Andrew Lobanov -> hugeping

hugeping> А так, из твоих предложений мне лично интересны: hugeping> - редактирование. Является злом в чистом виде и должно быть запрещено законом :) hugeping> - личка (правда у тебя в списке этого нет) Есть некоторые идеи и есть потребность в этой фиче.

Re: Предложения или "Как нам обустроить idec?"

[idec.talks] Fri Dec 17 11:47:57 UTC 2021 @Andrew Lobanov -> ake

ake> Но это вопрос транспорта сообщений и api. Ещё есть вопрос обнаружения отправителей и получателей, особенно между нодами, ибо с этим на практике как-то не очень. Есть имя ноды, которое иногда может меняться со временем, по которому нельзя тривиально узнать адрес (видимо для этого предполагается собирать нодлист), а про получателя мы знаем только имя в свободной форме. Посмотри в поле адреса. Оно не просто так сущетвует, а однозначно тебя идентифицирует в сети. В отличие от имени.

Re: Предложения или "Как нам обустроить idec?"

[idec.talks] Fri Dec 17 10:58:57 UTC 2021 @ake -> Ordos

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

Re: Предложения или "Как нам обустроить idec?"

[idec.talks] Fri Dec 17 10:36:50 UTC 2021 @ake -> hugeping

hugeping> Чужой энтузиазм радует! :) Но, откровенно говоря, я наблюдал многих энтузиастов (не только про idec сейчас говорю), которые на волне энтузиаста что-то делали, не доделали и ушли. В этом смысле у меня теперь есть прагматический скепсис, который вылился в то, что я перестал поддерживать всех идейных новичков. Просто потому, что начинаешь помогать, тратишь последние крохи времени (которые берёг для своих проектов) а потом... Всё в пустоту. Вот твоя фраза "делать нечего" она выдаёт именно такое отношение. Извини. :) В этом плане я не претендую на какую-то поддержку, и не хочу обещать того, что не смогу сделать. Не могу сказать, что сильно "идеен", но мне интересно заняться технической частью сети, и хотелось бы, чтобы это было кому-нибудь полезно, и тоже не было впустую. Если же это бесполезная затея, то "делать нечего" как раз подходит в качестве вывода. hugeping> - личка (правда у тебя в списке этого нет) Ну, примитивную личку можно собрать на базе идеи про перемаркировку, она там как раз в виде примера.

Re: Предложения или "Как нам обустроить idec?"

[idec.talks] Fri Dec 17 08:59:36 UTC 2021 @hugeping -> ake

ake> но это будет разочаровывающим выводом и во многом будет значить, что мне здесь делать, собственно, нечего. Но другого сообщества, использующего idec, у меня нет, а энтузиазм пока есть. Чужой энтузиазм радует! :) Но, откровенно говоря, я наблюдал многих энтузиастов (не только про idec сейчас говорю), которые на волне энтузиаста что-то делали, не доделали и ушли. В этом смысле у меня теперь есть прагматический скепсис, который вылился в то, что я перестал поддерживать всех идейных новичков. Просто потому, что начинаешь помогать, тратишь последние крохи времени (которые берёг для своих проектов) а потом... Всё в пустоту. Вот твоя фраза "делать нечего" она выдаёт именно такое отношение. Извини. :) Вот у меня была цель, сделать себе место из которого я генерю свой "контент". Я его сделал. У меня есть и личка и редактирование сообщений, экспорт в gemini и многое другое. Но наружу я смотрю просто idec-ом. Даже если никаких узлов idec не останется, это меня не беспокоит -- потому что я не могу на это никак повлиять. Но у меня не было цели сделать из idec универсальную технологию. Допустим, у тебя эта цель (не важно, чем она диктуется) есть. Тогда я предлагаю тебе додумать до конца твои идеи и оформить их в виде конкретных предложений стандарта. Обсуждать проще конкретные технические предложения (и отдельно каждое). Потому что, то же редактирование -- не так просто как кажется в начале. А так, из твоих предложений мне лично интересны: - редактирование. - личка (правда у тебя в списке этого нет) Остальное на мой взгляд избыточные функции и я их вряд ли буду у себя реализовывать.

Re: Предложения или "Как нам обустроить idec?"

[idec.talks] Fri Dec 17 08:58:36 UTC 2021 @Ordos -> Ordos

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

Re: Предложения или "Как нам обустроить idec?"

[idec.talks] Fri Dec 17 08:51:49 UTC 2021 @Ordos -> ake

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

Re: Предложения или "Как нам обустроить idec?"

[idec.talks] Thu Dec 16 19:08:26 UTC 2021 @vvs -> ake

ake> Ну, а вот мне просто он концептуально и технически нравится, как универсальная вещь. Причина ничем не хуже любой другой.

Re: Предложения или "Как нам обустроить idec?"

[idec.talks] Thu Dec 16 18:43:07 UTC 2021 @ake -> vvs

vvs> Подозреваю, что сначала надо задать вопрос: кому и зачем нужен idec? И тогда многие ответы станут очевидны. vvs> Сам я не знаю, зачем существует idec, но пользуюсь им для узкого круга общения, не заморачиваясь философскими деталями. Ну, а вот мне просто он концептуально и технически нравится, как универсальная вещь. Можно, конечно, сказать самому себе: "да нет, это просто группа друзей сделала для себя форум, просто вот так хитро устроенный, _это не для всех_", но это будет разочаровывающим выводом и во многом будет значить, что мне здесь делать, собственно, нечего. Но другого сообщества, использующего idec, у меня нет, а энтузиазм пока есть.

Re: Предложения или "Как нам обустроить idec?"

[idec.talks] Thu Dec 16 17:36:05 UTC 2021 @vvs -> ake

Подозреваю, что сначала надо задать вопрос: кому и зачем нужен idec? И тогда многие ответы станут очевидны. То ли idec должен всё включать и поддерживать. И тогда проще взять уже существующие протоколы и софт. То ли все хотят игрушечную реализацию, доступную школьнику. И тогда он может кому-то показаться уже слишком переусложнённым. Кстати, даже в существующих реализациях иногда уже встречались некоторые несовместимости. Сам я не знаю, зачем существует idec, но пользуюсь им для узкого круга общения, не заморачиваясь философскими деталями.

Предложения или "Как нам обустроить idec?"

[idec.talks] Thu Dec 16 16:22:37 UTC 2021 @ake -> All

Доброго времени суток. На волне (пока ещё) энтузиазма решил поделиться "рационализаторскими" предложениями для idec. Некоторые из них, в том или ином виде, озвучивались. Часть из них относится скорее к реализации нод, но некоторые потребуют либо дополнения протокола, либо изменений с разной степенью обратной совместимости. 1. Правила перемаркировки эх. Идея простая - на ноду приходит сообщение (не важно, фетчится или от поинта) и, если у него в качестве эхи указано некое значение A, то оно заменяется на некоторое A* по определённому правилу. Самый очевидный вариант использования - "личные" эхи, один поинт отправляет сообщение в эху "sendmsg.username", в процессе оно перемаркируется, как "readmsg.username_authstr" и адресат его может получить. Ещё так можно укрупнять и агрегировать эхи, перемаркировывая сообщения из внешних "dev.c", "dev.cpp", "dev.python" в общую локальную "dev.main", например. Недостатком становится то, что такие эхи становятся либо односторонними, либо надо создавать сложные обратные правила (т.е. ответы должны будут помещаться и в новую эху, и в старую). 2. Кросспостинг - отправка и присутствие сообщения с одним ID в нескольких эхах одновременно. 3. Хуки на появление сообщений в эхе/от пользователя/в качестве ответа. Тогда можно будет сделать, например, эху для управления нодой, какие-нибудь голосовалки (изначально была идея нодо-локальной общественной модерации) и ещё что-нибудь. 4. Добавить тег определяющий кодировку или тип содержимого (mime-type) тела сообщения. По идее это должно гарантировано решить проблему с тем, как реализовывать шифрование сообщений - зашифрованное сообщение будет иметь соответствующий тег encoding и его расшифровкой должен будет заниматься клиент. 5. Хранить время фетча сообщения нодой и использовать его в качестве указателя сдвига для получения индекса в /u/e-подобном запросе. Я читал обсуждение чего-то подобного в idec.talks, но по-моему там предлагалось использовать время самого сообщения, что действительно может работать криво. 6. Метод POST для /u/e и /u/m, это тоже обсуждалось и, вроде, не должно требовать больших изменений, но почему-то не взлетело. 7. Хранить в тегах, кроме указателя на отвеченное сообщение, указатель на первое сообщение ветки обсуждения/топика. Чуть упрощает реализацию топиков и позволяет писать в них сообщения не являющиеся ответами на конкретный пост. 8. Пока ещё сырая, на как выходит не новая, идея, касающаяся редактирования сообщений, заключающаяся в отправке нового сообщения, с тегом, скажем, "amend" содержащим ID оригинального сообщения. Идентичная идея была описана ещё в ii://jOO4SZIyVrHLU9XxuhKW , но осталась без ответов. 8.1. В первом варианте реализации, при получении такого сообщения нода либо удаляет оригинальное сообщение полностью (что ломает ответы на старый пост), либо удаляет его только из индексов, и заменяет его ссылкой на новую версию при прямом обращении (и если сообщение редактировалось много раз, то и предыдущие ссылки на него). 8.2. Более кардинальный способ - добавление в формат ID поля/постфикса версии, которое учитывается при фетче (и только при фетче). Тогда новое сообщение перезаписывает старое и инкрементирует версию, клиенты и ноды при фетче тянут сообщение, если его версия новее (что, правда, сильно усложняет его логику), на ответах это не сказывается, т.к. для них ID не поменялся.

copyleft 2021 difrex at lessmore dot pw; source code