-
Notifications
You must be signed in to change notification settings - Fork 0
Overview (ru)
Сегодняшний интернет выглядит децентрализованным лишь на первый взгляд. Множество служб в интернете фактически контролируются одной или группой организаций.
- DNS (в том числе для скрытосетей типа i2p и Tor)
- Службам назначения автономных систем (Autonomous System, AS), IP-адресов
- Для новой глобальной системы аутентификации (глобальный логин для всех ресурсов пользователя)
- Другим, распределяющим конечные ресурсы, в том числе ресурсы, существующие вне интернета. (Глобальные ники абонентов телефонной сети при частой смене ими телефонных номеров, радиочастотные ресурсы и т.п.)
Все эти задачи можно решить (или приблизить решение), создав глобальное открытое децентрализованное распределённое хранилище ключ-значение.
- Поиск и доступ к записям в хранилище должен быть общедоступен и анонимен
- Создание и владение записью (например, о зарегистрированном домене) должно быть анонимным
- Хранилище не должно иметь централизованного управления
- В хранилище должна быть исключена возможность цензуры информации
- Искажение или исчезновение данных на некоторых серверах не должно влиять на консистентность данных в хранилище и на функционирование всей системы
- Ставшие более ненужными записи должны удаляться (для экономии имён ключей и уменьшения объёма хранилища)
- Хранилище должно быть защищено от сквоттеров
Сквоттеры - главная проблема, стоящая перед конструкторами открытых глобальных хранилищ.
Причём, под сквоттерами нужно понимать не только тех, кто регистрирует в хранилище ключи (например, названия доменов) по словарю популярных слов, в надежде в дальнейшем перепродать эти записи, но также и тех, кто только что узнал о хранилище, зарегистрировал в нём свои записи "просто так, на всякий случай" но никогда не воспользуется этими записями в будущем.
Для защиты от сквоттеров при создании записей хранилище требует от создающего затратить определённую работу, создав proof-of-work (подобно тому, как это происходит в Bitcoin при генерации блока). Хэш этого proof-of-work используется для защиты цепочки ранее созданных в хранилище записей.
В dianna2 любая запись стирается из хранилища через полгода. (Точнее, 180 дней работы записи + 90 дней запас на случай непредвиденных обстоятельств.) То есть, невозможно создать запись в хранилище, которая будет храниться в нём много лет: не реже чем раз в полгода все владельцы записей должны подтверждать желание продолжать владеть ими обновлением этих записей с генерацией нового proof-of-work.
Сквоттеры будут вынуждены тратить значительные ресурсы на обновление proof-of-work всех своих записей, иначе их записи из хранилища будут удалены.
Если принять во внимание, что все создатели записей в хранилище анонимны, то по каким признакам можно отличить обычного пользователя от сквоттера?
- Для обычных пользователей характерно желание не уменьшать сложность создания доменов, так как в этом случае домен пользователя оказывается менее защищён.
- Для сквоттеров характерно желание не увеличивать сложность создания доменов, так как в этом случае затраты сквоттеров на создание и содержание доменов возрастают.
Ничем другим держатели записей на условиях анонимности не отличаются.
Поэтому, сложность создания proof-of-work для записи в хранилище должна находиться в балансе: она должна быть максимальной, но такой, с которой пользователи системы в среднем согласны мириться. (Эту сложность можно назвать "рыночной" - именно в таких условиях работает любой рынок, в том числе - рынок доменов существующей сейчас системы DNS.)
Чтобы добиться установления такой сложности создания proof-of-work хранилище определяет начало всплесков и спадов количества созданных в хранилище записей в единицу времени и устанавливает сложность таким образом, чтобы это изменение сложности позволило сгладить возмущения.
Такое устройство хранилища не позволяет избавиться от сквоттеров на 100%, но заставляет процессорные мощности сквоттеров работать на благо обычных пользователей: сквоттеры, создавая в хранилище новые хэши proof-of-work защищают от цензуры цепочки, содержащие записи, созданные обычными пользователями.
Полноценная копия всех данных хранится каждым участником p2p-сети хранилища. Это довольно расточительный подход и не видно никаких препятствий для того, чтобы в будущем по мере роста сети он был пересмотрен.
По википедии: Общая численность доменов 2-го уровня во всех доменах 1-го уровня в 2011 году превысила 225 млн имен.
Скажем, в среднем длина домена это 10 букв ASCII. умножаем на 10, чтобы покрыть будущее (скорость роста популяции человечества замедлилась, так что в 10 раз вполне хватит):
10 букв * 225 * 1000 * 1000 * по 10 раз = 20 Гб
Конечно, не забываем про сопутствующие значения, подписи ЭЦП и прочие накладные расходы на индексы, поэтому, ВСЯ существующая мировая база ДНС в децентрализованном виде явно умещается в 0.5-1 Терабайт при наших десятикратных допущениях. И это уже сейчас легко подъёмно для любого пользователя и, тем более, провайдера.
А пока dianna2 используется мало объём хранилища составит десятки мегабайт, что вполне доступно даже домашним роутерам.
dianna2 устроена подобно Bitmessage в части создания записей, которые существуют ограниченное время. Но, в отличии от Bitmessage, dianna2 использует цепочку блоков для исключения возможности цензурирования данных в хранилище - этим она похожа на Bitcoin.
Многие разрабатываемые конкурирующие системы (например, Namecoin) базируются на Bitcoin или используют его цепочку транзакций. Это порочный подход, поскольку у Bitcoin есть фундаментальный недостаток - бесконечный рост цепочки транзакций. Для хранилища типа ключ-значение (например, данных DNS) это неприемлемо - лог транзакций Bitcoin достиг чудовищного размера и продолжает расти.
dianna2 лишена этого недостатка поскольку не хранит никаких данных, которые требуется сохранять навечно.
Никакого параллельного использования dianna2 или её частей в качестве валюты не предусматривается. При этом возможна передача прав на существующие в хранилище записи с помощью передачи или замены ключа управления записью. (Таким образом, в случае использования хранилища для хранения DNS-доменов присутствует возможность торговли зарегистрированными в dianna2 доменами на сторонних площадках.)
Ноды-участники системы объединяются в p2p-сеть аналогично тому, как это происходит в Bitcoin.
Для организации доступа из обычного интернета вам необходимы один или несколько DNS-серверов, которые будут авторитативными серверами вашей зоны.
В записи вашего домена в dianna2 нужно указать адреса или DNS-имена этих серверов.
Теперь пользователи dianna2 смогут найти серверы вашей зоны с помощью своих DNS-серверов, подключенных к хранилищу. (PowerDNS Remote Backend JSON-RPC, вероятно, будет наиболее удобен для этого)
Хранение других записей DNS в dianna2 не предусмотрено намеренно с целью уменьшения объёма хранимых данных.