Kademlia
Реализация распределённой хеш-таблицы, используемой в I2P/Bote, отличается от стандартной по следующим пунктам:
- Хранимые данные могут быть удалены из таблицы
- Нет кеширования хранимых данных, т.к. после получения они удаляются
- I2P/Bote использует "списки сиблингов" (S-buckets), как рекомендовано в документации к S/Kademlia
Существует 3 типа данных, которые могут быть сохраны на узлах:
Почтовый пакетИндексный пакетКонтакт
Подтверждения Удаления
Подтверждения Удаления это хэш, полученный алгоритмом SHA-256, из поля Авторизации Удаления, который зашифрован внутри Почтового пакета и дополнительно используется как контрольная сумма для проверки после расшифровывания Почтового пакета.
Для удаления Почтового пакета или записи из Индексного пакета должен быть отправлен запрос на удаление, который содержит правильную Авторизацию Удаления.
Это означает, что третья сторона не может удалить Почтовый пакет или запись в Индескном Пакете без расшифровки Почтового пакета и отправки запросов на удаление с корректной Авторизацией Удаления.
Почтовый пакет (зашифрованный)
Почтовый Пакет содержит целое (при размере менее 30 КиБ) или часть MIME сообщения с сервисной информацией, необходимой для обработки, дешифрования и сборки письма.
DHT ключ Почтового Пакета - это полученный алгоритмом SHA-256 хэш полей LEN и DATA в Почтовом пакете.
Для удаления Почтового Пакета запрос на удаление должен содержать корректную Авторизацию Удаления для получения Подтверждения Удаления.
Узел, получивший запрос на удаление Почтового Пакета, может перенаправлять запрос другим узлам, на случай, если они не получили подобного запроса.
Запрос будет передаваться до полного удаления пакета из DHT.
Индексный пакет
Индексный пакет содержит DHT-ключи одного и более Почтовых пакетов.
DHT-ключ самого Индексного пакета является SHA-256 хэшем Почтового назначения, для которого предназначены письма.
Для проверки наличия новых пактов для выбранного Почтового назначения узел делает запрос в DHT на наличие Индексных пакетов для Почтового назначения. Затем он делает запрос по каждому DHT-ключу Почтовых пакетов, которые перечислены в Индексном пакете.
Когда все компоненты письма из Индексного пакета получены, письмо расшифровывается, восстанавливается и помещается во Входящие.
Для удаления записи из Индексного пакета необходима та же Авторизация Удаления, что и для Почтового пакета, которому эта запись соответствует.
Контакт
Распространяемые по DHT соответствия для публичного имени и Почтового назначения.
Является децентрализованным аналогом адресной книги.