В одном из своих проектов я хочу сделать обмен данными, но сложность в том, что обмениваться будут все со всеми и любой сможет поднять сервис и добавить его в сеть. Конкретно, этот проект собирает прокси и проверяет их и я хочу, чтоб инстансы общались между собой и делились информацией.
Я вижу это так:
Есть некий коэффициент доверия и каждый узел хранит этот коэффициент для всех знакомых ему узлов, коэффициент плавающий(но никогда не доходит до 1) и когда приходят данные, проверяется случайная часть данных и если всё совпало, то считаем остальные данные правильными и повышаем коэффициент, если не совпало, то понижаем. Также нужна возможность находить узлы.
Что должна уметь библиотека, которую я ищу:
- Иметь систему доверия к другим узлам
- Уметь обходить NAT
- Легко расширяться. Я вижу это так, что будет зашит некий список узлов с белым IP, через которые остальные будут узнавать друг друга и которые также будут помогать обходить NAT, дальшейшее общении будет происходить напрямую.
Технологии, которые используются: python3, asyncio. Возможно есть какие-то полуфабрикаты, из которых получится собрать свой продукт, дописав часть функционала? Нашёл различные библиотеки для p2p, но все синхронные.