diff --git a/doc/src/architecture/p2p-network.md b/doc/src/architecture/p2p-network.md index 34078257f..56f24eebb 100644 --- a/doc/src/architecture/p2p-network.md +++ b/doc/src/architecture/p2p-network.md @@ -26,25 +26,15 @@ The outbound session is responsible to ensure the hosts pool is populated, eithe through currently connected nodes or using the seed session. It performs this algorithm: -1. Start $N$ slots, and set each slot with `status = ACTIVE` +1. Start $N$ slots, and a sleeping peer discovery process Then each slot performs this algorithm: 1. If no addresses matching our filters are in the hosts pool then: - 1. If there is another slot where `status ≟ DISCOVERY` or `status ≟ SEED` then - let `status = SLEEP` and wait for a wakeup signal. - 2. If there are channels opened in `p2p` then let `status = DISCOVERY` - else skip this step, and let `status = SEED`. - 1. If `status ≟ DISCOVERY` and no hosts are found then let `status = SEED`. - 3. In either case when `status ≟ DISCOVERY` or `status = SEED` and we manage to find - new hosts, then wakeup the other sleeping slots. - 4. If there are still no hosts found, then let `status = SLEEP`. - -The slots are able to communicate to each other through pipes to signal status changes -such as wakeup requests. - -Sleeping slots are woken up periodically by the session. They can be forcefully woken up -by calling `session.wakeup()`. + 1. Wakeup the peer discovery process. This does nothing if peer discovery is already active. + 2. Peer discovery tries first 2 times to poll the current network if there are connected nodes, + otherwise it will do a seed server sync. + 3. Peer discovery then wakes any sleeping slots and goes back to sleep. ## Security