Local-first и децентрализация
707 subscribers
140 photos
19 videos
3 files
312 links
Replicated Object Notation,
CRDT, распределёнщина и децентрализация.
Ведёт @gritzko
Чат @Ronzgovory
Download Telegram
В общем, за 2020 год я сделал Chronofold (статья и код), пару раз переписал движок, и поправил своё здоровье. В марте 2021 уже демку повесил на сервер, в наличии были RON store (тот движок без ненужных слагаемых) и игрушечная система контроля версий DaRWiN (на основе CRDT). Правда, разговор с JetBrains не получился, и я засел за третий перепис движка и одну статью, про которую я расскажу позже. DaRWiN получил пониженный приоритет, но я к нему вернусь. Чем же RON и DaRWiN так хороши? 3/4
RON позволяет распределённо работать со структурами данных (массивы, тексты, списки, словари) при ненадёжном интернете; local-first CRDT, всё мёржится. Это очень заманчивый субстрат для написания распределённых приложений. При этом, над RON определена криптография. Тот же git криптографию определяет по блобам; RON по операциям. Короче, это как паровоз и шинканшен. Про каждую операцию (в тексте - букву) известно, когда и откуда она пришла, кто подписал. Соответственно, апдейты могут литься в реальном времени, можно произвольно мержить и размерживать бранчи, итд. А поскольку оно realtime, его можно использовать прямо в редакторе для undo/redo, для совместной работы, итд. При этом оверхэды крайне небольшие, в докладе на HighLoad я рассказывал про некоторые фокусы. Блокчейн выглядит как каменный век по сравнению.
Сам RON довольно впрочем низкоуровневый. Примерно как WebAssembly для данных; так же есть текстовая и двоичная версии. При этом крипто считается от RONc - канонической двоичной версии, которая определена побитно (не мной, как правило). На этом уровне абстракции это нормально - two's complement INT, IEEE 754 FLOAT, UUID, UTF-8 STRING). Разработчик работает со структурой данных - допустим, текстом. Под ним chronofold, под ним RON, под ним просто поток бит. 4/4
👍1
Соответственно, побитная идентичность нетривиальных форматов - текстового RONt и сжатых двоичных RONv RONp - достигается через сюръективное отображение на канонический двоичный формат RONc, f(RONx)->RONc, и обратное инъективное g(RONc)->RONx. Причём, g(RONc)=RONx' и f(RONx')<->RONc это биекция. Так мы контролируем вольности форматов - компрессию двоичного, whitespace и пунктуацию текстового, итд. Короче, фактически это всё проверяется на корректность фаззингом (кольцевое преобразование). Так решаются проблемки типа JSON и Markdown - канонический формат лишен вольностей и побитно точен, остальные представления эквивалентны ему. Хэши считаем по каноническому формату, и дальше плетём любые криптографические сети. Текстовый формат определяем через формальную грамматику (спасибо, ragel) 5/4
заинтригован
Russ Cox тут твитнул интересное и внезапно оказалось, что моя работа над двоичными Меркелевыми деревьями (2009-2010), которая в результате стала RFC7574, вошла в DAT protocol и немножко в BitTorrent 2.0, очень сильно оверлапит с рядом современных ей и более поздних работ по криптографии
https://research.swtch.com/tlog
https://twitter.com/_rsc/status/1468260916902907914
А вот мой первый драфтик
https://datatracker.ietf.org/doc/html/draft-grishchenko-ppsp-swift-00
# Это называется credibility.

Если у меня есть 10 яблок, а у чувака из Google есть яблоко, то у чувака из Google больше яблок, и он изобрёл яблоки.
Если у меня есть 10 яблок, а у чувака из Оксфорда есть пол-яблока.... та же история.
Если я говорю непонятное - я псих; если чувак из Google говорит непонятное - он гений.
Ну и так далее...
С одной стороны, я привык. С другой стороны, я устал.
Заодно нашёл, откуда есть пошёл RON: был у меня и язык запросов для версионированного текста в тот же период. Из CT и этого языка и вырос в результате RON.
# Rust

Неоднократно у меня возникал этот вопрос: писать на Rust или на C++? C++ я использую *очень* ограниченный, C++11 плюс пара забекпорченных фич из более поздних стандартов. Практически, это C с классами и шаблонами. И вот читаю я статью про внедрение Rust в Linux kernel и таки возникает у меня FOMO. Линус за Rust - говорит статья. Читаю чуть повнимательней и понимаю: Линус просто поработал над собой и теперь выражает свои сомнения в позитивном ключе. В духе "начните пока с чего-нибудь неважного, а через 10 лет поговорим".
Очевидные трудноразрешимые проблемы: сложность Rust, необходимость постоянной низкоуровневой работы в ядре, где особо не абстрагируешься, сопряжение с C кодом, отсутствие поддержки архитектур кроме Intel и ARM.
На мой взгляд, сложность кода может оказаться поважнее всего остального, в перспективе, и нивелировать выгоды от более строгой модели работы с памятью. Но результат будет понятен лет через k.
https://www.theregister.com/2021/11/10/where_rust_fits_into_linux/
# Разбор TON whitepaper

Для студентов разобрал TON whitepaper (блокчейн от не-Дурова); продублирую выводы здесь. Уязвимости порой находятся в коде, где казалось бы всё очень прямо и понятно (Diffie-Hellman logjam или на прошлой неделе log4j). А авторы предлагают реализацию трёхэтажного TON блокчейна с гиперкубическим раутингом, виртуальной машиной, цифровыми фонтанами и Kademlia DHT (да, всё сразу). Это имеет нулевую вероятность не только отсутствия уязвимостей, но и общей работоспособности.
Но динамика у whitepaper'а драматическая, конечно: сначала они предлагают крутой механизм... Но, есть маленькая очевидная проблемка. Тогда они предлагают добавить другой, часто более сложный, механизм, для её решения. Но... тут ещё проблемка... И эта история продолжается 120 страниц.
https://www.youtube.com/watch?v=L6DFGSY05IQ
# Консенсус

Классические алгоритмы консенсуса подразумевают ограниченный круг участников. Это предположение, в частности, перешло из классических работ 1980-х в современные Proof of Stake и Паксосы.
А что если нам нужно достичь консенсуса в рое, где точное количество участников и топология сети неизвестны? Как оказалось решение есть и оно очень интересное - консенсус Шмебюлока. О чём мы с Мишей и написали статью.
Удивительно, но в ходе работы мы обнаружили концепцию куда более мощную, чем время Лампорта - время роя. Это логическое время для массивно параллельных само-синхронизирующихся систем.
Кто осилит текст - будем рады отзывам.

https://arxiv.org/abs/2112.07065
чудо само-синхронизации роя (подробности в статье :)
Не очень грамотный обзор по Web 3.0 [1] от К.Сарханянца в Коммерсанте. Вот некоторые говорят, что нельзя журналистам давать что-то писать самим, потому что в чём они разбираются?
Попробую просуммировать эпический твиттер-срач последних двух недель и положение дел с "Web 3.0" в целом.
Центральный твиттер аккаунт в сраче - @kelseyhightower. Это вроде бы девопс в Гугле, большой influencer. Итак, он начал спрашивать в общем-то очевидные вещи относительно блокчейна и "Web 3.0" и поднял нешуточную волну. Включились и Grady Booch и Elon Musk и Jack Dorsey, только Elvis Presley почему-то молчал. Действительно, BitCoin-like блокчейн это принципиально немасштабируемая технология. То, что Джек Дорси - фанат именно BitCoin, это очень интересный факт. Упомянутый в статье "проект децентрализованных соцсетей Bluesky" - это просто одна приятная девушка, реальной работы там не происходит, только говорильня. Вообще, с инженерными успехами у Web 3 пока сложно. IPFS после 7 что ли лет разработки так толком и не используется. Я предлагал им пока выкинуть DHT в пользу Tiered Network [2] чтобы хоть что-то заработало. Поскрипели мозгами и стали искать, кто бы им сделал Tiered DHT. Не комментирую. Ethereum не то чтобы сильно лучше в плане масштабирования чем BitCoin, но там происходит всяческая движуха, по крайней мере. Про TON coin я уже высказывался. Вообще, эта блокчейн волна отличается очень шумным хайпом и очень маленьким выхлопом. Вот помню когда BitTorrent переехал на uTP/LEDBAT, до четверти траффика в интернете разом переключилось с TCP на UDP - а никто и не заметил. Прямая противоположность. Код вроде бы писали два человека - Шалунов и Норберг. Но возвратимся к чейнам. Вся эта тема мне напоминает диалог из фильма Sneakers (1992) [3].
"Not reality but the perception of reality" - это объяснение очень многого, что происходит.

[1]: https://www.kommersant.ru/doc/5152037
[2]: http://replicated.cc/netarch
[3]: https://www.youtube.com/watch?v=coDtzN6bXAM
Новый драфт Swarm consensus уже на arxiv:
https://arxiv.org/abs/2112.07065
Добавлено: Византизм, объяснение swarm time, диаграмма Минковского, многое другое.
P.S. HackerNews: https://news.ycombinator.com/item?id=29711381
Собрал все очевидные вопросы, осталось поправить текст.
Поправьте меня, если я что-то не понимаю, но ведь если "добыча биткойна" в Казахстане остановится, биткойн должен подорожать? 😋
К слову вспомнилось. Был скандальчик небольшой некоторое время назад, когда выяснилось, что в Twitter модерацией по региону EMEA руководит офицер из подразделения по информационным войнам. Причём, он как-то глупо спалился, чуть не в LinkedIn всё указал.
Это я к тому, что любая "централизованная" сеть будет максимизировать выгоду для владельцев этого самого центра - через цензуру, управление нарративами, фильтрацию информации. Это неизбежно. А всяческие революции - это очень выгодно даже в банальном денежном смысле, десятки миллиардов долларов могут за ночь поменять хозяев.
https://www.ft.com/content/53017272-e37f-11e9-b112-9624ec9edc59
https://www.independent.co.uk/news/uk/home-news/twitter-executive-british-army-officer-psyops-gordon-macmillan-a9127036.html
Кстати, помню в Копене когда работал, там в соседнем офисе был стартап, торгующий influencer-ами. Звонили серьёзным дядям постоянно, питчили своих подопечных. Не индивидуально, а сразу оптом. Индивидуально это будет муторно - instagram celebrity скупать, они мелкие слишком. Собственно, эту проблему стартап и решал.
Про пользователя бесплатных сервисов говорят "if you are not paying, you are the product". Наверное, это можно и для случая influencers переформулировать.
И вот ещё подумалось. Во всех мэйнстримовых социальных сеточках сейчас алгоритмические фиды. Соответственно, акт цензуры - это не когда гестаповцы в дверь стучат; это когда кто-то кликает мышкой - и урезает вам outreach, ну или добавляет. А может даже не человек, а алгоритм. И вы даже и не узнаете, что это произошло - никто тут не обязан вам что-либо сообщать. Но если вы influencer, то вы это точно *ощутите*. И, возможно, в следующий раз последите за базаром аккуратней.
Децентрализация конечно может помочь с цензурой... Теоретически, монетизация и токенизация медиа может даже решить проблему продажности influencer-ов. Но это, конечно, очень теоретически.