-
Сеть, в которой все могут общаться со всеми, нет пользователя, на которого все завязано, и к которой может подключиться кто угодно, если знает любого участника этой сети.
-
Примером такой сети является yggdrasil.
-
Проблема - общение внутри yggdrasil происходит по ipv6-адресам, что неудобно для пользователей. Классический DNS в данном случае подходит плохо, потому что участники могут часто менять свои адреса.
В нашем DNS есть три компоненты - база данных, registry и клиенты.
В данный момент для простоты и надежности используется sqlite. Но для достижения полной децентрализованности можно использовать orbitdb.
-
Registry - REST API сервис, в котором можно регистрироваться, создавать сайты и изменять сайты. Описание API может находится в doc.md.
-
Registry - stateless сервер, общающийся с базой данных.
-
Необходимы аутентификация и proof-of-work для защиты от ddos.
-
Аутентификация сделана с использованием асимметричной криптографии
ecdsa
с применением кривойp256
. -
proof-of-work реализован через
nonce
-
Registry - REST API сервис, поэтому можно легко реализовать на любом языке
-
В данные момент реализованы клиенты на
Go
и наPython
-
Для тестирования можно поднять виртуальные машины в yandex cloud. Подробнее смотри в папке deploy.
-
Виртуальные машины поднимаются автоматически, однако запускать registry и клиентов нужно руками.