From 5e5e497822733cc5105aec6d5bada622334bff71 Mon Sep 17 00:00:00 2001 From: Dmitry Shulyak Date: Tue, 27 Mar 2018 15:39:45 +0300 Subject: [PATCH] Initial version of peer docs --- _assets/docs/artifacts/v5reg.png | Bin 0 -> 22214 bytes _assets/docs/artifacts/v5search.png | Bin 0 -> 26792 bytes _assets/docs/discovery.md | 52 ++++++++++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 _assets/docs/artifacts/v5reg.png create mode 100644 _assets/docs/artifacts/v5search.png create mode 100644 _assets/docs/discovery.md diff --git a/_assets/docs/artifacts/v5reg.png b/_assets/docs/artifacts/v5reg.png new file mode 100644 index 0000000000000000000000000000000000000000..fb5575cb4cf3ccdb6b9fdf4d8746d2a7c4351a58 GIT binary patch literal 22214 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 SJD!J)2UydKCdEdC+y4Q2mdO49 literal 0 HcmV?d00001 diff --git a/_assets/docs/artifacts/v5search.png b/_assets/docs/artifacts/v5search.png new file mode 100644 index 0000000000000000000000000000000000000000..da5f96711e4c442b3a8bca4d37001a20d34a6875 GIT binary patch literal 26792 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 MpVd~&Q!(@ZKR>);(f|Me literal 0 HcmV?d00001 diff --git a/_assets/docs/discovery.md b/_assets/docs/discovery.md new file mode 100644 index 000000000..74a1f1026 --- /dev/null +++ b/_assets/docs/discovery.md @@ -0,0 +1,52 @@ +Discovery v5 usage in status-go +=============================== + +Capability-based discovery will be using two mechanisms from discv5 go-ethereum +implementation. Topic registration and topic search. + + +Registration +------------ +![alt text](artifacts/v5reg.png) + +Every topic registration spawns two interdependent loops: +1. Node that registers itself as a topic provider will periodically send topics +to the peers. +2. Second loop advertises itself to peers in the network. +It does so by requesting peers from known peers and sending ping request to them. +As a result all peers in the network will learn about new node faster. + +Search +------ +![alt text](artifacts/v5search.png) + +Search request spawns single loop for every searched topic. This loop +request peers from known peers (starting from one-self) and then requests +from them nodes that are registered as a topic provider. + +We can control how often this loop wil run, more about it in the next section. + + +Peer pool in status-go +---------------------- + +Peer pool uses search mechanism described above to find peers in a timely manner +without using a lot of resources in the long run. It achieves it by introducing +two modes of synchronization: + +1. Fast mode. +Peer will run search loop quite often (every 500ms at the time of writing) with the +goal to visit as much nodes as possible and once it will find minimum amount of +peers with required capability it will swich to slow mode. +2. Slow mode. +This mode might be useful to get information about new peers that can be used +later if initial set of peers will dissapear. Should run once in a 10m-30m. + +However finding peers even with fast mode can take noticeable amount of time, +which is fine if node is a long-running, but will be a huge problem on a mobile +device. To workaround such problem we will introduce a leveldb cache that will +maintain a list of peers that was used by a device before it went offline. + +Another important detail of a peer pool is a support of min and max amount of peers: +- min is required to switch from fast to slow sync mode +- max is an upper limit that can be used by a single node \ No newline at end of file