Вообще, если хочешь написать свою реализацию тебе нужны 3 части — протокол пир-дискавери, протокол роутинга и сервис сообщений(PubSub)
Сами данные просто передаются стримом, который можно кодировать в любой формат (так же он еще оконечно шифруется между устройствами)
1. PeerDiscovery
В качестве пир-дискавери, то есть поиска устройств обычно используют 3 протокола
а. DHT
б. MDNS (открытый патент apple для связи умных устройств в локальной сети, на нем работает airdrop)
в. Randez-vous point (для пробития NAT и поиска устройств через интернет)
2. Протокол роутинга
Один из 2х протоколов
а. FloodSub (broadcast, аналогичен торренту)
б. GossipSub (новый протокол от libp2p, что-то вроде оптимизированного мультикаста, но это отдельная тема для разговора)
3. Сервис сообщений
Банальный сервис обмена сообщениями в p2p сетях на данный момент лучший это PubSub от libp2p, но вообще можно использовать любой