LINUX.ORG.RU

Синхронизация в P2P сети

 , , ,


1

4

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


DHT? Там, вроде, оперируют хэшами данных и у узлов есть адреса тоже в виде хэшей. Для поиска запрос посылается известному узлу, у которого расстояние (Хэмминга, например) до хэша нужного файла минимальное. Тот узел тоже может кому-то другому переслать, если сам такого файла не знает. Могу что-то путать, но идея примерно такая там.

xaizek ★★★★★ ()

Этих алгоритмов бесконечное количество в зависимости от твоих требований, которые ты не обозначил. В общем случае «защита от подмены» обеспечивается цифровой подписью, а не консенсусом, и достаточно скачать «файл» с первого попавшегося пира, и если он битый, продолжить искать дальше. А там можно чего только не накрутить с распределёнными блеклистами, алгоритмами распределённого доверия и консенсусами.

slovazap ★★★★★ ()

По хешу. Файл бьется на блоки адекватного размера и каждый блок хешируется, потом взять хеш от этих хешей.
Просто брать хеш файла не очень эффективно, если файл большой то плохой пир может намешать туда мусора, все докачали файл а он битый - и что делать?

KillTheCat ★★★★★ ()

Можно ли где-то посмотреть алгоритм синхронизации данных в одноранговой сети с защитой от подмены этих данных?

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

В IPFS ещё интересный вариант. Каждый файл адресуется хешем его контента. Соответственно, передаёшь хеш-ключ и можешь быть уверен, что по нему гарантированно получишь точный файл.

KRoN73 ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.