ZeroNet Blogs

Static ZeroNet blogs mirror

Glasba.Blog

- Posted in Geekless.Blog by with comments

Завел еще один блог.

Пока нельзя даже сказать, что всё держится на костылях и подпорках — вообще не держится. Чтобы выкладывать материал, как я задумал, требуется, чтобы парсер markdown-а не портил таблицы, плюс желательно всяких скриптов, чтобы меньше набирать вручную. Ну постепенно доделаю.

Создал блог Geekless.Twitter под всякий флуд и оффтопик.

Прикольно, New ZeroNet Sites, похоже, реально где-то используется для автосидирования. Добавил сайт в New ZeroNet Sites и sites.zeronetwork.bit — через 2 минуты найдено уже 4 пира.

Есть такой каталог блогов ZeroBlogs.bit, он заброшен уже два года, с апреля 2016-го. В нем перечислено 67 блогов, созданных в 2015-2016 годах. (На самом деле 68, но ссылку на блог nofish-а не считаем.) Многие из этих блогов не представлены в других каталогах сайтов, потому что тех каталогов тогда еще не было.

Я заметил, что многие блоги заброшены примерно в то же время, в 2016-м. Так что решил проверить, насколько хорошо ZN хранит данные — какие шансы найти пиров для сайта, который никогда не был популярен, а теперь уже пару лет заброшен.

Вот что у меня получилось:

  • Более половины скачались без задержек.
  • Большинство остальных открылось через 1-2 минуты.
  • 5 или 6 штук открылись только через несколько часов попыток.
  • 4 сайта так и не открылись.

Итого, 6% сайтов оказались недоступны. Но для всех 4-х сайтов сеть находит пиры, просто не может соединиться. Вероятно, все источники находятся за NAT.

За одно я посчитал, какие языки мне встретились:

Сайты, которые не открылись:

Я приятно удивлён. Я думал, примерно треть-четверть сайтов из списка не откроется, не будет ни одного пира. Коллективный хостинг отлично хранит даже блоги с парой постов, которые не обновляются уже третий год.

UPDATE: Примерно через сутки после начала этого эксперимента оставшиеся 4 сайта всё же открылись. Таким образом, все 67 блогов доступны в сети.

ZeroNet и IPFS

- Posted in Geekless.Blog by with comments

(Это ответ в тему на форуме, чтобы сэкономить там место.)

dude: optional/bigfiles умеют дедупликацию? ipfs умеет

geekless: Допилят когда-нибудь. Нет смысла тащить целый IPFS ради частной фичи.

dude: В том и проблема - каждый городит свой велосипед несовместимый с другими. И в итоге, на примере файлов, какой нибудь популярный ролик будет лежать у тебя в нескольких экземплярах для доступа через разные сети.

Я согласен, но я думаю, все технологии, которые реально взлетели, делались не так — «потратим 5 лет, задизайним крутую штуку», а так — «есть идея, делаем реализацию из костылей и подпорок и смотрим, кто-то вообще будет пользоваться, или нет». ZN уже сейчас показывает свою полезность. (По крайней мере, лично для меня.) А IPFS я потыкал и отложил в сторону, потому что не нашел для себя ни одного применения. Поэтому если ZN допилят до крутых фич, а IPFS помрёт — туда и дорога. (Если случится наоборот, тоже плакать не буду. ;) ) Возможно, лет через 5 будет и дедупликация, и адресация контента по хэш-суммам, и прочие фичи. Но даже без этих фич ZN-ом можно пользоваться прямо сейчас.

У ZN удачная точка фокуса — сама пиринговая сеть в качестве глобального хостера сайтов, а не конкретный протокол этой сети. Можно сменить или доработатьть протоколы поиска узлов и протоколы обмена данными, можно сменить язык реализации, можно вообще заменить HTML-браузер на что-то другое (мало ли что там придумают лет через 20) — но суть сети от этого не изменится. Вот это мне нравится тут, потому что позволяет надеяться, что постепенно все недочеты исправят.

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

Я помню, как я году в 2005-м сидел и мечтал о крутой операционной системе, в которой есть и то, и это, и пятое, и десятое. А сейчас большая часть этих мечталок есть в линуксе прямо из коробки (например, вспоминаются мечталки о ZRAM swap и о удобной контейнеризации приложений), плюс куча всего, что я тогда и представить бы не смог. :)

Потыкал в ZeroPolls, прикольная штука. Во многих аспектах ZN намного более открытая и гласная платформа, чем clearnet. И после привычек, выработанных классическими сайтами, эти аспекты могут быть очень неожиданны для пользователя. Вот, например, никакой тайны голосования в ZN нет. Если вы голосуете в ZeroPolls (или любой другой подобной штуке), ваш голос виден любому желающему. В интерфейсе сайта он не отображается, но в файлах он записан в открытом виде.

В голосовании «на бумажках» работа системы гарантируется физической средой (бланки, кабинка для голосования, урны...) и некотором количеством доверенных лиц, которые будут за этим следить. Подделать голосование эти лица могут, но вот проследить, кто как проголосовал, им довольно сложно. При голосовании на централизованном сайте голосование всецело держится на центральном узле. Он может легко и подделать результаты, и выдать информацию о голосе любого участника. В ZN всё иначе: невозможно подделать результаты (не завладев приватными ключами участников), но голос каждого открыт всему миру.

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

Сделал в ZeroPolls три голосования:

Результат немного предсказуем, я уверен, что английский победит в первой группе, а русский — в третьей (просто исходя из количества носителей в сети и вообще в мире), но, может быть, какая-то интересная дискуссия развернётся в процессе. (Ага, развернётся лет через *дцать, когда в ZN будет больше, чем полтора анонимуса.)

Кстати, что касается языков. В ZN есть немного украинцев, и я бродя по их форуму в очередной раз убедился, что современные украинский и русский нифига не взаимопонятны. Просто часто приходится слышать высказывания, что зная один язык, можно свободно понимать другой. Если вы русский в Киеве или украинец в Москве — то конечно, без проблем. Погружение языковую среду даст моментальный прогресс в таком похожем языке. Но если вы русский за Уралом, как я, который настоящего украинца видит только в интернете, то я вам скажу — нифига подобного.

Вот, например, название блога «Блог з дослідження ZeroNet», и я без понятия, что такое «дослідження». Это как если бы я вам прочитал сербскую табличку «Пази на воз». Если языка не знаете, хрен догадаетесь, что по-нашему это «Осторожно, поезд». (Кстати, в украинском вроде тоже есть глагол «пазити»?)

Родной у меня русский, я немного говорю на сербском и словенском, и из остальных славянских языков понимаю только отдельные фразы. Например, на словацком я могу что-то разобрать, потому что многие слова там похожи либо на русские, либо на сербские, либо на словенские. И украинский для меня выглядит наподобие словацкого (только знакомых слов больше) — отдельный язык, а не что-то типа «другая версия русского языка».

К чему я это всё, нам всем надо чуть больше уважения к соседям, независимо от того, по какую сторону границы вы находитесь. Украинский — это не испорченный русский, и русские — это не татары, испортившие великую мову. Ведь разговоры, что «украинский и русский — почти одно и то же» часто ведутся именно для того, чтобы протолкнуть одих из этих выводов.

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

Жене по работе был нужен компактный и легкий нетбук, способный выполнять функции печатной машинки и бродилки по сети (и вне рабочих задач — смотрелки ютюба). Старый 10-дюймовый Asus Eee PC X101CH, увы, совсем непригоден для этого — сочетание Windows 7 + любой современный браузер полностью сжирает 1 GB распаянной памяти прямо со старта. Ну а таскать 15-дюймового монстра жене не хотелось.


Нетбук нужен не то что б прямо очень, а постольку-поскольку, так что мы рассчитывали купить что-нибудь Б/У-шное и предельно дешевое. В принципе, сгодился бы и такой же Eee PC в комплектации с 2 GB памяти. Однако то ли эта комплектация не пользовалась популярностью в своё время, то ли владельцы до сих пор не стремятся от неё избавиться, но на вторичке она практически не встречается.

И вот вчера мне попадается объявление о продаже какого-то непонятного китайца Irbis NB31. Что это за производитель такой, я не имел никакого понятия, но сочетание 11 дюймов, 4-ядерного Атома и 2 ГБ памяти выглядели очень привлекательно, так что мы поехали его смотреть. Нетбук оказался в состоянии практически новом — коробка, инструкция и зарядное устройство в наличии, произведен чуть больше года назад, на корпусе одна маленькая царапина, батарея не изношена.

В итоге мы его купили за 6500 р. И в чем же подвох за такие деньги? А подвох оказался в том, что это не просто нетбук, а трансформер, превращающийся в планшетный ПК, заворачиванием половин корпуса на 360 градусов. Но тачскрин в нём сломан. К слову сказать, продавец и не обещал наличие тачскрина в объявлении, так что мы как ехали покупать простой нетбук, так нетбук и купили. В магазине аналогичный новый девайс стоит 9-10 т.р.

Впечатления от китайца довольно неоднозначные. С одной стороны, как вычислительная система, он вполне хорош, особенно за такие деньги. С другой — тысяча недоработанных мелочей. Единственным неоспоримым, хоть и субъективным, достоинством нетбука является дизайн. Выглядит монолитно и стильно, совершенно точно приятный на вид и на ощупь. Что же про остальные качества:

  • Нетбук в руках ощущается намного тяжелее, чем выглядит. По сравнению с Eee PC это особенно заметно. И в качестве планшета его точно было бы использовать некомфортно из-за веса, так что отхлебнувший тачскрин — не велика потеря.

  • Аккумулятор несъемный, Li-Pol. Обещанные 10 А⋅ч в нем, наверное, есть. После покупки мы начали мурыжить нетбук часов в 6 вечера на отметке 85% заряда, и к 12-ти ночи он показывал около 15%. И если не гонять ютубы и тесты нагрузки CPU, а сбавить яркость экрана и мирно печатать в Word-е (по задумке, это его основное предназначение), то запаса автономности хватит на любые мыслимые и немыслимые ситуации.

  • А вот заряжаться не то что быстро, а хотя бы как-то адекватно, он не хочет. Очень слабый блок питания (5B ⋅ 3А) едва вытягивает сам ноутбук под нагрузкой, и на батарею почти ничего не остаётся. По данным с сенсоров получается, что при питании от сети в простое на батарею идёт около 4-5 Вт, под нагрузкой — 1-2 Вт. А батарея-то способна впитать 39 ватт-часов. Единственный способ его зарядить за разумное время — выключить нетбук полностью. Можно попробовать заряжать от более мощного БП, но я не уверен, что он сможет воспринять более сильные токи. И если сможет, от такой радости не сожжет ли себя нахрен. Всё-таки на 5 вольтах особо не разгуляешься.

  • Под тестом OCCT процессор разогревается до 68 градусов, дальше температура не растёт. Корпус при этом снизу горячий, но не настолько, чтобы было невозможно держать. Тест я гонял минут 30, тепло отводилось поверхностью стола. Не стал проверять, что будет, если положить его на что-то не очень теплопроводящее — одеяло, подушку и т.п.

  • В спецификациях на Atom Z3735F указана базовая частота 1.33 — как я понял, это просто значение, для которого даётся рассчётная мощность 2.2 Вт. При равномерной нагрузке на ядра, они разгоняются до 1.58 ГГц (x19). При нагрузке на одно ядро, оно сначала гонится до 1.83 (x22), а затем при нагреве частота снижается до тех же 1.58. (Диспетчер задач в Windows 10 показывает какие-то немыслимые для этого процессора частоты — до 2.5 ГГц. Ну и в целом я с десяточкой уже намучился на полгода вперёд. Сколько тут мелких багов на каждом шагу, это жесть.) Без нагрузки частота 0.50 ГГц (x6). Во всех задачах, что мы ему подсунули, включая просмотр 1080p роликов на Ютубе, процессор тянет вполне бодро.

  • Я по-привычке пытался открывать вкладки браузера десятками штук, как на своем ноутбуке, но быстро понял, что такой подход тут не прокатит. Тем не менее, для неторопливого серфинга, просмотра Ютуба и работы с документами на Гугл Диске 2-х ГБ достаточно. Для локальной работы в Word и Excel — тем более.

  • Из 32 ГБ флеш-памяти, было доступно 11. Но как только Windows увидела сеть, их вскоре осталось около 5-ти. Запуск штатной утилиты по избавлению от мусора помог вернуть около 2 ГБ. Я опасаюсь, что по мере получения апдейтов, Windows выжрет всё оставшееся место. Впрочем, у ноута есть слот для microSD карты на 32 ГБ, так что пользовательские данные можно хранить там.

  • Экрану не хватает угла обзора по вертикали, особенно снизу. В целом экран выглядит именно так, как можно ожидать от устройства за 9 тысяч.

  • На клавиатуре обнаружился то ли дефект, то ли особенность всей линейки этих нетбуков. Все полноразмерные клавиши (алфавитно-цифровые) прожимаются нормально, в то время как мелкие (стрелки вверх-вниз и F1-F12) требуют четкого нажатия до упора, иначе не срабатывают. Жена сказала, что это её не парит. Для меня это было бы достаточным поводом вернуть или перепродать устройство.

  • Не смог отключить на тачпаде клик касанием. И для меня, и для жены крайне неудобная фича. Впрочем, для жены тачпад в целом неудобен, так что она использует мышь. Как я понял, отключение клика касанием — вещь, специфичная для драйвера устройства, самой Windows не поддерживается. Драйвера же здесь какие-то мутные и никаких настроек не имеют.

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

В общем, как-то так. Если бы я купил такое за 9 штук, я бы точно решил, что это очень тупая трата денег. Новый такой брать точно никому не советую. А за 6500 в качестве печатной машинки... ну ~~с пивом~~ потянет. Сейчас пока я это пишу, жена смотрит с него кино — экран загнут на 270 градусов, так что получился типа телевизор. Подключены беспроводные клавиатура и мышь. Звук идёт на отдельную мини-колонку. (Колонка, к сожалению, проводная. :D ) Всё это вместе прикольно смотрится, но в следующий раз я куплю что-нибудь более брендовое. xD

[There is also the Russian version.]

I wrote a wrapper to control ZeroNet instances running in Docker. Put the script docker-zeronet at any location, available via PATH environment variable. /usr/local/bin, for example.


Just 2 commands are enough in the simplest case (single ZeroNet instance, default settings):

to start an instance: docker-zeronet start; to stop an instance: docker-zeronet stop.

The script downloads the official ZeroNet image from hub.docker.com and runs it with the most secure settings: Tor is used for all connections, the port 15441 is not accessible for incoming connections.

You can start and stop any number of instances, just specifying different instance names with the -n option. In that case, you should also specify (with the -p option) different port numbers to be used for WebUI, since multiple instances aren't able to share the port number. For example:

docker-zeronet -n node0 -p 43110 start
docker-zeronet -n node1 -p 43111 start
docker-zeronet -n node2 -p 43112 start

The persistent data is stored in /var/zeronet/<instance name>. You can specify another path with the -D option:

docker-zeronet -n alice-node -p 43114 -D /home/alice/0net-data start

The ZeroNet daemon runs under the root account. So, if Alice (in the above example) tries to manually edit and sign the data, the "Permission denied" error will occur. To fix that, she should run the daemon under her own UID. If her UID is, for example, 1000, the command is as follows:

docker-zeronet -n alice-node -p 43114 -D /home/alice/0net-data -u 1000 start

Any arguments after the start subcommand are passed to the ZeroNet daemon, so you can perform additional tweaking in that way. For example, if you have a list of trackers saved in /home/alice/0net-data/trackers_file.txt, you can pass the list to the daemon:

docker-zeronet -n alice-node -p 43114 -D /home/alice/0net-data -u 1000 start --trackers_file /root/data/trackers_file.txt

(Note: the data directory is always mapped as /root/data/ inside the container, so we use /root/data/ instead of the real path.)

IMO, it's better to create separate scripts, that run docker-zeronet with the appropriate parameters for each instance, and to use them from the system service manager (systemd, runit etc).

The detailed information on the usage of docker-zeronet is available with the -h option. (Or via the source code.)

[There is also the English version.]

Написал враппер для управления нодами ZeroNet в докере. Для работы положите скрипт docker-zeronet в любой каталог, присутствующий в переменной окружения PATH. Например, в /usr/local/bin.


В простейшем случае (одна нода, все настройки по умолчанию) вам понадобится пара команд:

docker-zeronet start — для запуска ноды; docker-zeronet stop — для остановки.

Скрипт выкачивает официальный образ ZeroNet с hub.docker.com и запускает его в максимально безопасном режиме: все соединения через Tor, порт 15441 недоступен для входящих соединений.

Вы можете запускать и останавливать любое количество нод, указывая разные имена нод при помощи ключа -n. Также при помощи ключа -p вам потребуется указать номера портов для web-интерфейса каждой ноды. Например:

docker-zeronet -n node0 -p 43110 start
docker-zeronet -n node1 -p 43111 start
docker-zeronet -n node2 -p 43112 start

Каталог с данными каждой ноды хранится в /var/zeronet/<имя ноды>. Другой путь к каталогу можно указать ключем -D:

docker-zeronet -n alice-node -p 43114 -D /home/alice/0net-data start

По умолчанию демон ZeroNet работает от имени root. Поэтому, если Alice из примера выше захочет вручную отредактировать данные и опубликовать изменения, её ждёт ошибка «Отказано в доступе». Чтобы это исправить, следует запускать демон с UID пользователя. Если Alice имеет UID 1000, команда запуска ноды будет выглядеть так:

docker-zeronet -n alice-node -p 43114 -D /home/alice/0net-data -u 1000 start

Дополнительные параметры после слова start передаются демону ZeroNet, таким образом вы можете выполнить тонкую настройку ноды. Например, если в файле /home/alice/0net-data/trackers_file.txt содержится список трекеров, команда запуска может выглядеть так:

docker-zeronet -n alice-node -p 43114 -D /home/alice/0net-data -u 1000 start --trackers_file /root/data/trackers_file.txt

(Примечание: каталог с данными внутри контейнера доступен по пути /root/data/, поэтому реальный путь к каталогу мы заменили на этот путь.)

Вы можете создать отдельные скрипты с параметрами запуска для каждой ноды и затем подключить их к системе инициализации вашего дистрибутива (systemd или иной).

Более полную справку обо всех возможностях враппера вы можете получить, запустив его с ключем -h.

Сам не заметил, как из лениво любопытствующего на тему p2p-сетей стал активно заинтересованным в этой теме. И если повспоминать, как же так получилось, то оказывается, что ключевую роль в этом сыграли не анонимность и не неподцензурность сети, а нечто совсем другое.

Помню, читая разные фантастические произведения, в которых фигурировали несколько обитаемых планет, я всё не мог представить — ну что же у них там будет со связью-то? Понятно, что привычный нам интернет в таких условиях невозможен. Когда один участник сидит на Земле, а другой — где-то на Марсе (а может быть, вообще на спутнике Сатурна), связь больше похожа на отправку и приём почтовых голубей. Вероятно, массивных таких голубей, с гигабайтами информации в лапке, но всё же голубей. И мысль вертелась вокруг обвешивания привычных нам средств коммуникации различными костылями-подпорками — получалась жуткая куча частных костылей.

А вот недавно натолкнувшись мыслью на что-то космическое (может быть, вспоминая всё ту же книгу), я обнаружил, что у меня в голове больше нет никакого вопроса, как организовать межпланетный интернет. Ну разумеется, это будет что-то типа ZeroNet! Разве может быть иначе, это же самое простое и универсальное решение. Не уверен, когда и как у меня вызрело это понимание, но теперь оно видится настолько же элементарным, насколько невообразимым было когда-то прежде.

Сайт, который работает нигде, потому что он работает везде — эта идея сначала изумляет, а потом проникает в мозг и укореняется там, меняя все представления о хранении и обработке информации. (При этом продолжая изумлять :D )

Может быть, через сколько-то там сотен лет кто-то, живущий где-то на Марсе, будет лениво бродить по ссылкам всякого старья из начала 21-го века и обнаружит этот сайт. И сможет там написать комментарий, как сейчас часто пишут на ютубе: "Привет всем, кто это читает в 2475 году!". А кто-то на орбите Венеры это сможет потом прочитать и поставить лайк.

И востребованная информация больше никогда не повторит судьбу сайтов на GeoCities.

Petname — система имён, отвечающая всем трём требованиям треугольника Zooko: глобальная, безопасная, легко запоминаемая.

Petname systems are naming systems that claim to possess all three naming properties of Zooko's triangle - global, secure, and memorable. Software that uses such a system can satisfy all three requirements. Such systems can be used to enhance security, such as preventing phishing attacks. Unlike traditional identity systems which focus on the service provider, Petname systems are decentralized and designed to facilitate the needs of the enduser as they interact with multiple services. (c) en.wikipedia.org/wiki/Petname

Так называемый треугольник Zooko утверждает о невозможности реализации системы имён (системы адресации), в которой имена отвечают всем трём условиям:

  • Глобальные, т.е. единообразно разименовываемые всеми участниками.
  • Безопасные, т.е. имя невозможно подменить.
  • Легко запоминаемые, т.е. состоящие из осмысленных слов, а не криптографических идентификаторов.

Децентрализованные petname-системы претендуют на удовлетворение всех трех условий. Однако глобальность таких систем достаточно условна. Имена можно рассматривать как глобальные, если мы заренее условились отталкиваться от единого источника имён, но в этом случае система становится преимущественно централизованной, и ухудшается условие безопасности. Можно считать, что система позволяет выбирать между глобальностью и безопасностью в широких пределах, в зависимости от потребностей конкретного пользователя.

Далее изложены соображения о реализации децентрализованной адресной книги для ZeroNet, которая совмещает в себе резолвер доменных имён и средство управления рейтингом пользователей. В перспективе реализация такого механизма позволит отказаться от использования Namecoin в качестве источника доменных имён (или сделать его лишь одним из множества потенциальных источников, использовать который или нет — пользователь решает сам) и решить проблему централизованности id-провайдеров, а также проблему централизованного управления user-generated контентом на сайтах (цензором контента, который попадет к пользователю, будет сам пользователь, а не владелец сайта, на котором идёт общение).


Описание системы

  • Любой пользователь сети может формировать свою адресную книгу приватно или публично. Если книга публична, другие пользователи могут использовать её как источник информации для своих адресных книг. Публичная книга может находиться на любом ресурсе, подконтрольном пользователю: как на собственном зайте, так и в виде темы на форуме, комментария в блоге и т.п.

  • Адресная книга может содержать ссылки на другие адресные книги. Результаты из связанных книг объединяются по некоторому алгоритму с целью получить итоговую базу данных с доменными именами и рейтингами, которая затем используется участником сети на своем компьютере. (Глубина анализа ограничена некоторым значением, чтобы не вызвать случайный или злонамеренный отказ в обслуживании.)

  • Резолвер работает следующим образом: В первую очередь используются данные из локальной книги на компьютере. Если в ней нет нужной информации, используются данные, собранные из линкованных книг. Если данные из линкованных книг содержает конфликт имён, пользователь уведомляется об этом. (После чего может либо добавить нужную запись в локальную книгу, либо решить, что не доверяет никакому из вариантов противоречивых данных и отказаться от посещения проблемного доменного имени.) Этот механизм требует реализации плагина к ZeroNet, или, возможно, доработки ядра.

  • При загрузке данных (таких как темы и комментарии на форуме) ZeroNet отфильтровывает пользователей, которые не имеют необходимого рейтинга, и не загружает их данные на компьютер. Этот механизм требует доработки ядра.

Пример адресной книги

Пример адресной книги приводится в виде plain text файла с комментариями, поясняющими потенциальные возможности системы. Реальный формат хранения может отличаться, например, это может быть json — в данный момент, на этапе обсуждения концепции, формат не имеет существенного значения.


# Доменные имена, назначенные пользователем: domain zeroid.bit 1iD5ZQJMNXu43w1qLB8sfdHVKppVMduGz domain id.kaffie.bit 1KH5BdNnqxh2KRWMMT8wUXzUgz4vVQ4S8p domain Blog.ZeroNetwork.bit 1BLogC9LN4oPDcruNz3qo1ysa133E9AGg8 # В качестве имени домена можно использовать любую строку, # которая содержит допустимые символы и не является биткойн-адресом: domain ru.zerotalk 1Apr5ba6u9Nz6eFASmFrefGvyBKkM76QgE domain lor.talks 1BpFtPez7mSiShtXfb4wPfMT1dZTuRybfZ domain geekless.blog 1BLoGBTid3NhGu8ts3fAfHJprnbrH3wfTV # Рейтинг доверия к пользователям, зарегистрированным у провайдера zeroid.bit: user-rating-regexp ^.*@zeroid.bit$ 0.1 # Имя zeroid.bit резолвится по списку доменов, которые мы описали выше. # Вместо человеко-читаемого домена мы могли бы указать bitcoin-адрес напрямую: user-rating-regexp ^.*@1iD5ZQJMNXu43w1qLB8sfdHVKppVMduGz$ 0.1 # Рейтинг доверия может иметь значения от 0.0 до 1.0: user-rating nofish@zeroid.bit 1.0 user-rating ishift@zeroid.bit 0.9 user-rating balancer73@zeroid.bit 0.9 user-rating geekless@zeroid.bit 0.9 user-rating kaffie@zeroid.bit 0.9 user-rating shouko@zeroid.bit 0.9 # Если провайдер не гарантирует уникальность имён (или мы не доверям его гарантии), # мы можем указать конкретный ключ, сопоставленный имени. # Например, провайдер kaffie.bit позволяет использовать любое имя любому пользователю сети. # Но из всех, кто пользуется именем shouko, мы доверям только одному пользователю: user-rating shouko@kaffie.bit:18GkKhDTQniChKDxcoDgmgrUd7KehaihpW 0.9 # Команда link позволяет указать другие адресные книги, которым мы доверяем: # Будем максимально доверять книге, расположенной на домене Blog.ZeroNetwork.bit: link all Blog.ZeroNetwork.bit 1.0 # Рейтинг доверия книге на домене geekless.blog — 0.9: link all geekless.blog 0.9 # Книга не обязательно должна быть подписана ключами домена, # она может быть подписана ключем идентификатора пользователя. # Но в этом случае требуется указать сайт, где хранится книга, # чтобы резолвер смог её найти. # Для хранения адресной книги могут использоваться как специализированные # сайты, так и обычные форумы, блоги и тому подобное. # Например, если пользователь kaffie@zeroid.bit решит поделиться своей # публичной книгой на своём хабе ZeroMe, ссылка на неё может # выглядеть так: link all kaffie@zeroid.bit at 12h51ug6CcntU2aiBjhP8Ns2e5VypbWWtv 0.9 # Слово all в примерах выше, означало, что нас в адресной книге интересуют # как списки имён, так и рейтинги пользователей. # Можно указать эти параметры раздельно: link domains Blog.ZeroNetwork.bit 0.9 link user-ratings Blog.ZeroNetwork.bit 0.5 # В качестве источника доменного имени можно использовать непосредственно # сами сайты, если их содержимое доступно локально: # (об этом в следующем разделе) : link domains auto 0.5

Анализ книг производится рекурсивно, пока не будет достигнут порог по уровню доверия, либо пока не будет достигнуто предельное значение глубины рекурсии. Рейтинг доверия к книге влияет на то в какой мере оценки из этой книги оказывают вклад в рассчитанные значения. В простейшем случае:

# Локальная книга:
link domains book1 1.0
link domains book2 0.1

# Книга book1:
user-rating example@zeroid.bit 0.9

# Книга book2:
user-rating example@zeroid.bit 0.2

# Итоговый рассчёт:
# 0.9 * 1.0 / (1.0 + 0.1) + 0.2 * 0.1 / (1.0 + 0.1) =
# 0.9 * 1.0 / 1.1 + 0.2 * 0.1 / 1.1 =
# 0.81818 + 0.01818 =
# 0.83636

Для доменов рассчёт рейтинга также производится. Варианты сопоставления имён, получившие рейтинг ниже некоторого порогового, молча отбрасываются, не участвуя в работе резолвера и не приводя к индикации конфликта.

Автоматический рассчёт доменного имени для сайта

Программное обеспечение анализирует содержимое главного файла content.json всех сайтов на компьютере пользователя:

  • Если в файле указано доменное имя, используется оно.

  • Если доменное имя не указано, то делается попытка сформировать доменное имя из заголовка сайта.

Полученные данные затем могут использоваться в адресной книге, как указано в примере выше. Если данные входят в противоречие с данными из других адресных книг, пользователь будет уведомлён об этом, как и в случае конфликтом имён в "обычных" (неавтоматических) адресных книгах.

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

Что дальше

На основе изложенных идей будет разработан прототип системы в виде зайта, а затем — предложена интеграция с кодом ZeroNet.