TestNet architecture
The network consists of two subnets: the core and the payment network. These networks have different synchronization algorithms, which have different security requirements. The complexity is added by the fact that part of the payment service is a core peer (for fast verification of EDS core data).

Stage 1 - Network launch

In the initial stages, we suggest running a private network of several peers. Core peers (tendermint) run as part of the payment network with RAFT. Only ProxyAPI can look "outside" (as separate services or as part of the peer).
I.e. payment network peers also act as validators in the core.
1
graph LR
2
3
Users((Users)) -. ProxyAPI .-> peer_1
4
Users((Users)) -. ProxyAPI .-> peer_2
5
6
subgraph Private netwrork
7
peer_1[RAFT+TM] --- peer_2[RAFT+TM]
8
peer_1 --- peer_3[RAFT+TM]
9
peer_1 --- peer_4[RAFT+TM]
10
peer_1 --- peer_5[RAFT+TM]
11
12
peer_2 --- peer_3
13
peer_2 --- peer_4
14
peer_2 --- peer_5
15
16
peer_3 --- peer_4
17
peer_3 --- peer_5
18
19
peer_4 --- peer_5
20
end
Copied!
    Users - users
    RAFT+TM - payment network peer with core validator
    ProxyAPI - access to the peer via ProxyAPI

Step 2 - Connecting external observers (validators) to the network

In the next step, the external validators/observers access the core network. This requires running additional core peers (in observer mode), which will be accessible from the public network and will have access to the private network. The core peers will act as a proxy between the internal network and the public network (tendermint documentation describes exactly this way of protecting validators from the public network attacks).
1
graph LR
2
3
TM(User core peer) -. TM P2P .-> TM1
4
5
Users((Users)) -. ProxyAPI .-> peer_1
6
Users((Users)) -. ProxyAPI .-> peer_2
7
8
subgraph Private netwrork
9
10
TM1[TM-validators] -. TM P2P .-> peer_1
11
TM1 -. TM P2P .-> peer_2
12
13
peer_1[RAFT+TM] --- peer_2[RAFT+TM]
14
peer_1 --- peer_3[RAFT+TM]
15
peer_1 --- peer_4[RAFT+TM]
16
peer_1 --- peer_5[RAFT+TM]
17
18
peer_2 --- peer_3
19
peer_2 --- peer_4
20
peer_2 --- peer_5
21
22
peer_3 --- peer_4
23
peer_3 --- peer_5
24
25
peer_4 --- peer_5
26
end
Copied!
    Users - users
    RAFT+TM - peer payment network with core validator
    ProxyAPI - access to the peer via ProxyAPI
    TM-validators - core validators accessible from the private network and from the Internet
    TM P2P - Tendermint peer interaction protocol with other Tendermint peers
    User core peer - core peers launched by users (as observers or validators)

Stage 3 - Separate networks

Ideally, there should be a separate core network (tendermint with generation on its own peers) and a separate payment network (RAFT, with part of the core peers working with core tendermint peers as observers).
1
graph LR
2
3
TM(User core peer) -. TM P2P .-> TM1
4
5
Users((Users)) -. ProxyAPI .-> peer_1
6
Users((Users)) -. ProxyAPI .-> peer_tm_1
7
8
subgraph Private core netwrork
9
10
TM1[TM-validators] -. TM P2P .-> peer_tm_1
11
TM1 -. TM P2P .-> peer_tm_2
12
13
peer_tm_1[TM] --- peer_tm_2[TM]
14
peer_tm_1 --- peer_tm_3[TM]
15
peer_tm_1 --- peer_tm_4[TM]
16
peer_tm_1 --- peer_tm_5[TM]
17
18
peer_tm_2 --- peer_tm_3
19
peer_tm_2 --- peer_tm_4
20
peer_tm_2 --- peer_tm_5
21
22
peer_tm_3 --- peer_tm_4
23
peer_tm_3 --- peer_tm_5
24
25
peer_tm_4 --- peer_tm_5
26
end
27
28
subgraph Private payment netwrork
29
30
peer_1[RAFT] --- peer_2[RAFT]
31
peer_1 --- peer_3[RAFT]
32
peer_1 --- peer_4[RAFT]
33
peer_1 --- peer_5[RAFT]
34
35
peer_2 --- peer_3
36
peer_2 --- peer_4
37
peer_2 --- peer_5
38
39
peer_3 --- peer_4
40
peer_3 --- peer_5
41
42
peer_4 --- peer_5
43
end
Copied!
    Users - users
    RAFT - payment network peers (additionally, they serve as observers of the core network, communication is not reflected)
    TM - core peers
    ProxyAPI - access to the peer via ProxyAPI
    TM-validators - core validators that access the private network and can be accessed from the Internet
    TM P2P - Tendermint peer interaction protocol with other Tendermint peers
    User core peer - core peers launched by users (as observers or validators)
Last modified 6mo ago