Open romanzac opened 3 weeks ago
What is the swarm stack of protocols for this? just to clarify:
What is the swarm stack of protocols for this? just to clarify:
- Executors may connect one to the others, but they will just not negotiate certain protocols (dispersal specifically).
- Depending which protocols are mounted behaviour may change.
My swarms use default new() functions to initialize their behaviour. https://github.com/logos-co/nomos-node/blob/c5aebd31d145d922c092eec3a5aea459dc1c937c/nomos-da/network/core/src/protocols/dispersal/validator/behaviour.rs#L213
What I have noticed, DispersalValidatorBehaviour
has a protocol selected during new() https://github.com/logos-co/nomos-node/blob/c5aebd31d145d922c092eec3a5aea459dc1c937c/nomos-da/network/core/src/protocols/dispersal/validator/behaviour.rs#L39
while DispersalExecutorBehaviour
has no limit or selection visible:
https://github.com/logos-co/nomos-node/blob/c5aebd31d145d922c092eec3a5aea459dc1c937c/nomos-da/network/core/src/protocols/dispersal/executor/behaviour.rs#L201
Perhaps executor acts more like a client and should actually reject connections. It looks it forwards things to libp2p::swarm::dummy::ConnectionHandler
which I am not sure what it does ?
Problem
Some executors connected to other executors with dispersal requests when address book included both executor and validator addresses. Dispersal attempts have failed by approximately 50% - about a half of executors haven't received dispersal success message. And the same amount of dispersal messages never reached validators.
Impact
Occurrence medium, impact high.
Expected behavior
Executors should not connect or at least should not send dispersal requests to other executors.
To reproduce
Screenshots/logs