? Editing: Post:21.body Save Delete Cancel
Content changed Sign & Publish new content


Follow in NewsfeedFollowing

Latest comments:

Adding images to posts

on Feb 11, 2019 ·

Just noticed, that adding images on ZeroBlog can be somewhat unobvious for new users.

1. Enter the post editing mode.
2. Press Enter to get to an empty line.
3. The blue plus sign appears. Press it.
add-image-1.png (477x213)
4. Press the rightmost icon on the bar to add an image.

Read more

WARNING: About .bit domains for my zites

on Jan 27, 2019 ·

I received a mail today from a person who wrote he or she registered a .bit domain for me.
I am grateful to that person for wanting to help, but I have to refuse that gift.

I am pretty okay with the usage of the plain cryptographic keys for addressing sites, and I'm not going to use the Namecoin domains for my sites. Actually, the cryptographic keys are the only sound way to address sites in ZeroNet now, and Namecoin domains don't seem reliable for me at all.

However, the mail made me think about the potential abuse of the names.
So I have to make a statement:

I've never registered and not going to register any .bit domains for my ZeroNet sites. All my zites are available by their plain cryptographic addresses only. And even if some of them are available by .bit domains, it is not me who owns the domains.

Read more

Rest in Peace Roman Karshiev

on Jan 24, 2019 ·

Roman Karshiev, one of the most active ZeroNet users and activists, known as balancer73@zeroid.bit, has passed away.

He was the owner of a lot of zites and also ran a popular Russian forum in the Clearnet. Here are his zites (and maybe I missed some):



Blogs (En):

Blogs (Ru):

Clearnet sites:

He believed in the future of the P2P technologies, that can bring more freedom to the people all over the world. And in particular, he was a great Zeronet promoter. He was a nice person as well. His enthusiasm and optimism were really inspiring for people around.

He criticized some P2P solutions for being too unreliable, and he saw a great advantage of ZeroNet in being able to keep the data forever. No matter, how many years passed, in which planet people live, and what kind of internet they use, zites will probably still able to work fine.

"When I die, my ZeroNet blog will be the only digital trace of mine, that doesn't depend on any 3rd party services, companies or persons, and will have been surviving for many years. If my work is worthy of something, people will keep, read and use my zites." - that is what he and I both agreed in. When we talked about ZeroNet, we both often admired that feature. But I couldn't even imagine that this idea would become the real fact so soon.

A few months ago, Roman started posting memories and stories in his blogs. He seemed to have a premonition and tried to write down as much as possible. One of his blogs has a subtitle: Буду записывать, пока ещё память жива — "I'm going to write, while my memory is alive yet". Now those words sound so... unspeakably sad.

I only hope, his private keys will not fall into the wrong hands, and his zites'll keep running. Unfortunately, ZeroNet doesn't yet have the archiving/snapshot feature implemented, so the content is still vulnerable for being erased by a person, who stole the private key.

Aged 45. He left a wife and 2 young children. And so many things left unfinished.

Rest in Peace, Roman. We miss you so much.

roman-karshiev.jpg (400x400)

Read more


on Oct 13, 2018 ·

LuaJIT написан гением. Mike Pall практически на коленке реализовал трассирующий JIT-компилятор, который в тестах производительности либо рвёт, либо идёт ноздря в ноздрю с продуктом крутой гигантской корпорации — V8. Я думаю, сравнивать реализации JS и Lua вполне уместно, поскольку оба имеют очень похожую систему типов, набор фич и область применения. JIT-компилятор при генерации кода у обоих языков решает примерно одни и те же задачи.

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

Никакие Перлы, Руби, Питоны и PHP и близко не лежали. Питоновский pypy умеет только жрать память и тормозить после стольких человеко-лет разработки. Про ванильный python в разговоре о производительности вспоминать вообще неприлично.

Только одна вещь меня расстраивает в LuaJIT — это Lua. Почти всё можно простить языку, но адресация массивов с единицы — такого прощать нельзя.

Очень хочется взять сорцы LuaJIT и перепилить их под компиляцию JavaScript. Можно будет встраивать этот интерпретатор JS даже в утюги, и такой утюг будет летать. Это будет бомба, котаны!

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

Read more

Some user ID statistics

on Sep 04, 2018 · 3 min read ·

At the moment, I have 545 zites hosted on my computer:

$ find * -maxdepth 0 -type d | wc -l

So I decided to get some stats.

Read more

A simple explanation, how site signing and verification works

on Sep 04, 2018 ·
1 comment

A site owner has:

  • The private key.

  • The content she wants to sign and publish.

She calculates the public key from the private key and then calculates the hash sum of it. The hash sum is what we know as a site address, such as 1BLoGBTid3NhGu8ts3fAfHJprnbrH3wfTV.

Using the private key and the content, she calculates the sign. We can consider the sign as a cryptographic mix of the private key and the content. We can't extract the private key back from it, but, with the content provided, we can mix it futher and produce the same public key, that can be calculated from the private key itself.

So, the site owner publishes the data:

  • The site address, i.e. the hash sum of the public key.

  • The sign.

  • The content.

When a visitor gets to the site, he verifies the data provided. He applies the content to the sign and calculates the public key. Then he calculates the hash sum and compares it to the site address. If they are equal the verification is successful, and he can be sure the content belongs to the site owner. If not, either the data was corrupted during transfer, or someone tries to fool him, providing a modified, unsigned content.

              SITE OWNER                |  NETWORK  |               VISITOR
                                        |           |
          +----> public key -> hash sum --------------------------------------> should be equal
          |                             |           |                           ^
private key -> sign ----------------------------------> public key -> hash sum -+
               ^                        |           |   ^
content -------+----------------------------------------+---------------------> content is verified
                                        |           |
Read more

About user verification process

on Sep 03, 2018

Daniell Mesquita wrote a post at ZeroMedium: (part 2) How do I envision ZeroNet to be ready for mass of users. I posted a comment about the user ID verification system he proposed, but it turned out ZeroMedium had no support for markdown in comments, nor it allowed editing them. So I repost it here.

ZeroID should have a user verification feature, in which Nofish (verified user on Generation 1), can verify other users (they will be also Generation 1). Then when the Generation 1 users (except Nofish) verifies other users, they will be Generation 2, and following at this form.

I don't think it's an option.

  1. Any verification system is a kind of 3rd-party censorship, and ZeroNet is totally about not having any 3rd-party censorship and moderation ever possible in a forced way. It is up to the user to decide, what content she wants to see and what she doesn't.

  2. Nofish, or any other trusted user, has no actual knowledge about users he verifies. Nothing can prevent a spammer from sending humanish-looking automated verification requests and getting lots of new accounts.

  3. Speaking about it, a manual verification system cannot scale and can be easily DoSed.

  4. Generation 1, 2 and so on actually look like we have first-class and second-class citizens. The system is not only unfriendly to new users, but also looks really scaring. I believe, many people will wonder: "Do you develop some kind of nazism there?"

An idea just came to my mind. I recently posted the proposal for 3-way white/gray/black-list-driven processing of user data. If it will be implemented, we can also add more ranking algorithms, not just pretty random one, I proposed there. So, we can require some proof-of-work from a gray user to recieve, store and dispatch her files.

It is calculated as p = pow(N, user_cert), with N included in the content.json - I mean, it is pow for your ID, not for your data, so you don't have to recalculate it on every message. N can be changed at any time, so you can run mining on your computer and use your ID at the same time. While you have a poor PoW, you are probably considered as a spammer by the most hosts, but getting better and better PoW allows you to become trusted enough for most of the network.

Since a pow is applied to an ID, the network can require a costly enough pow, without being to laggy for an end user. (If you ever try sending a large message via BitMessage - it takes veeeery looooong time, since pow is calculated for all the data). If you're a real user, you can even pay some money to a mining farm to get nice pow. And if you're a spammer, you just have no profit, paying for each new short-living ID. Probably, hosts can guess the optimal pow limit, based on typical pow values of whitelisted users and adjust it dinamically.

Read more

Идея: контроль доступа к постам блога

on Aug 30, 2018 · 1 min read

В ходе дискуссии с @leftside родилась идея: основанный на криптографии контроль доступа к постам блога.

Если у меня будет время, попытаюсь реализовать в ZeroBlog++.

Read more

В ZeroNet появился децентрализованный механизм поиска трекеров — отличная новость!

on Aug 28, 2018 ·

Только что в блоге @nofish появился анонс свежих изменений:

Shared tracker list between users:

New tracker IPs automatically discovered from other users to reduce centralization and avoid the blocking of the trackers.

To start new tracker: Enable the Bootstrapper plugin with opened port, then it will automatically share your client's ip with other users as a possible tracker. (It's only recommended to do this if you have static ip and planning to keep your client running 24/7)

Only the working trackers (successful result in past hour) are shared with other peers and the discovery request done in every 5 minutes until your client found 5 working shared trackers. This feature is also got limited to zero:// trackers only as it more suited for ZeroNet, because it allows multiple sites announce in same request and the storage of .onion addresses.

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

В самом начале своего существования сеть работала через torrent-трекеры и была полностью зависима от них. Потом появились собственные zero-трекеры, способные работать как через IP, так и через Tor. Также появился собственный механизм обмена пирами.

В прошлом месяце в ZeroNet была добавлена возможность вручную добавлять пиры для зайтов.

И вот теперь пиры могут обмениваться также и списками трекеров.

Это означает, что теперь бутстрап-узлом при запуске нового узла может быть абсолютно любой узел сети. Достаточно указать известный узел в качестве пира, и затем ZeroNet найдёт с его помощью доступные трекеры и выйдет на полностью рабочий режим.

Read more

Работа ZeroNet через Tor и проблема трекеров

on Jun 09, 2018 · 2 min read ·
1 comment

Ранее я уже писал о проблеме малого количестве трекеров в ZeroNet. К сожалению, при работе в режиме Tor: Always проблема усугубляется.

Read more

Враппер docker-zeronet: новая опция -T для использования расширенного списка BitTorrent-трекеров

on Jun 09, 2018

В скрипт docker-zeronet добавил опцию -T, обеспечивающую подключение списка трекеров из репозитория github.com/ngosang/trackerslist.

Read more

Загрузка кучи линуксов на LVM-томах

on Jun 03, 2018 · 1 min read

В одном из компьютеров разбивал диск на разделы еще под grub 1-й версии, который не умел работать с LVM. Из-за этого /boot всех линуксов пришлось вынести на отдельный раздел вне LVM. Получился такой усложненный конфиг:

    sda1 — boot <- тут grub, который грузится через бутсектор
    sda2 — linuxboot <- тут ядра линукса
    sda3 — LVM:

Монтировался /boot в каждой системе примерно так:

/dev/disk/by-label/linuxboot      /mountpoints/linuxboot       ext4         defaults,noatime                 0      1
/mountpoints/linuxboot/voidlinux  /boot                        none         defaults,bind                    0      0

Давно мигрировал на grub2, но сейчас наконец-то дошли руки переделать загрузку.

Read more

Снова про Irbis NB31 + тест скорости флешек

on May 19, 2018 · 5 min read ·

Три месяца назад я писал про покупку б/у Irbis NB31. Что касается попытки запустить на нём Linux, об этом я напишу пост чуть позже. (Забегая вперёд: в целом всё работает.) А сейчас немного на другую тему.

Read more

Lifehack: как легко скопировать пост с форматированием из чужого блога (и не только)

on May 10, 2018 · 1 min read ·

Иногда возникает необходимость скопировать пост с форматированием из чужого блога. Например, я копировал пост из блога ZAlex в комментарий на форуме. Как это легко сделать, если для разметки используется Markdown, а в браузере мы видим уже HTML? Неужели нужно лезть в папку с сайтом и искать, где там этот пост в глубинах data.json.

Read more

TODO: восстановление приватного ключа из address_index через UI ZeroNet

on May 10, 2018

В продолжение предыдущего поста.

Первый вариант. Можно добавить в код, работающий с подписыванием сайта, следующую логику:

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

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

Поэтому преходим ко второму варианту:

Выдвигающаяся справа панель на клиентской стороне работает как зайт, но на серверной реализована как плагин ядра ZN. Так что оттуда доступны все возможности ядра напрямую. Именно там мы включаем переключатель This is my site, после чего можем работать с сайтом в режиме владельца.

Идея заключается в том, чтобы сделать под этим переключателем кнопку Generate Private Key from Master Seed. Нажатие на эту кнопку будет восстанавливать ключ, и если ключ подходит, записывать его user.json.

Таким образом, пользователь может восстановить приватный ключ через графический интерфейс, не обращаясь к консоли, и в то же время, такое решение не разглашает никаких сведений без согласия пользователя.

Read more
Add new post


21 hours ago · 2 min read ·
Read more

Not found


21 hours ago · 2 min read


user_name1 day ago
This page is a preview of ZeroNet. Start your own ZeroNet for complete experience. Learn More