vtools
6 лет назадДецентрализованный протокол обмена сообщениями
Децентрализованный протокол обмена сообщениями
Начальные условия
Имеем сеть по типу DHT:
- Каждый узел имеет 32 байтный адрес (Addr)
- Узлы соединены с друг другом случайным образом. Среднее число соединений не менее Log(N), где N-число узлов
- Узел может являться одновременно отправителем, ретранслятором и получателем сообщений
- Каждое сообщения имеет два поля: адрес получателя (AddrTo) и содержимое (Body)
Обмен сообщений
- Сообщения отправляются только тем узлам, которые максимально релевантны адресу получателю. Под релевантностью понимается максимальное совпадение начальных бит адресов.
- При каждом новом подключении узел запрашивает список релевантных сообщений методом GETMESSAGE
- При поступлении нового сообщения узел проверяет совпадение своего адреса с адресом получателя сообщения, если он совпадает, то сообщение считается принятым и далее не ретранслируется. Иначе формируется список релевантных узлов, которым перенаправляется это сообщения методом: MESSAGE
- Одновременно это сообщение ставится в буфер ограниченной длины (например 1000 сообщений) для технической возможности ответа в методе GETMESSAGE
Защита от DDOS
- Сообщения имеют поля TimeStamp и nonce. В которые соответственно записываются отметка времени и PoW.
- При получении нового сообщения, проверяется:
- отметка времени - время больше текущего значения
- минимальный уровень PoW - должен быть не ниже заранее заданного значения (например 16 бит)
- В буфер сообщения добавляются согласно приоритету: Time + PoW Таким образом более свежие и более “сильные” сообщения имеют больший приоритет. Сравнение времени и уровня Pow выполняется в секундах и битах, при этом предлагается приравнять биты и секунды. Таким образом мощность оборудования в два раза дает приоритет в 1 секунду (в 4 раза - 2 секунды, в 8-раз - 3 секунды и т.д. в логарифмической зависимости)