Как измерить расстояние Kademlia как целое число
Я новичок в P2P-сетях, и в настоящее время я пытаюсь понять некоторые основные вещи, указанные в работах Kademlia. Главное, что я не могу понять, это метрика расстояния Кадемлиа. Все документы определяют расстояние как XOR двух идентификаторов. Размер идентификатора составляет 160 бит, поэтому результат также имеет 160 бит. Вопрос: как удобно представить это расстояние целым числом? Некоторые реализации, которые я проверил, используют следующее: distance = 160 - длина префикса (где длина префикса - это число ведущих нулей). Это правильный подход?
1 ответ
Некоторые реализации, которые я проверил, используют следующее: distance = 160 - длина префикса (где длина префикса - это число ведущих нулей). Это правильный подход?
Этот подход основан на раннем пересмотре документа по кадемлии и недостаточен для реализации некоторых из последующих глав заключительного документа.
Полноценная реализация должна использовать древовидную таблицу маршрутизации, которая упорядочивает сегменты по их абсолютному положению в пространстве ключей, размер которого можно изменить, когда происходит разбиение сегментов.
Размер идентификатора составляет 160 бит, поэтому результат также имеет 160 бит. Вопрос: как удобно представить это расстояние целым числом?
Метрики расстояния - 160-битные целые. Вы можете использовать класс с большим целым числом или свернуть свой собственный, основываясь на массивах. Чтобы получить счетчик битов с общим префиксом, вам просто нужно подсчитать начальные нули, которые логарифмически масштабируются с размером сети и обычно должны соответствовать гораздо меньшим целым числам, когда вы закончите.