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).
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.
graph LR
Users((Users)) -. ProxyAPI .-> peer_1
Users((Users)) -. ProxyAPI .-> peer_2
subgraph Private netwrork
peer_1[RAFT+TM] --- peer_2[RAFT+TM]
peer_1 --- peer_3[RAFT+TM]
peer_1 --- peer_4[RAFT+TM]
peer_1 --- peer_5[RAFT+TM]
peer_2 --- peer_3
peer_2 --- peer_4
peer_2 --- peer_5
peer_3 --- peer_4
peer_3 --- peer_5
peer_4 --- peer_5
end
- Users - users
- RAFT+TM - payment network peer with core validator
- ProxyAPI - access to the peer via ProxyAPI
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).
graph LR
TM(User core peer) -. TM P2P .-> TM1
Users((Users)) -. ProxyAPI .-> peer_1
Users((Users)) -. ProxyAPI .-> peer_2
subgraph Private netwrork
TM1[TM-validators] -. TM P2P .-> peer_1
TM1 -. TM P2P .-> peer_2
peer_1[RAFT+TM] --- peer_2[RAFT+TM]
peer_1 --- peer_3[RAFT+TM]
peer_1 --- peer_4[RAFT+TM]
peer_1 --- peer_5[RAFT+TM]
peer_2 --- peer_3
peer_2 --- peer_4
peer_2 --- peer_5
peer_3 --- peer_4
peer_3 --- peer_5
peer_4 --- peer_5
end
- 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)
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).
graph LR
TM(User core peer) -. TM P2P .-> TM1
Users((Users)) -. ProxyAPI .-> peer_1
Users((Users)) -. ProxyAPI .-> peer_tm_1
subgraph Private core netwrork
TM1[TM-validators] -. TM P2P .-> peer_tm_1
TM1 -. TM P2P .-> peer_tm_2
peer_tm_1[TM] --- peer_tm_2[TM]
peer_tm_1 --- peer_tm_3[TM]
peer_tm_1 --- peer_tm_4[TM]
peer_tm_1 --- peer_tm_5[TM]
peer_tm_2 --- peer_tm_3
peer_tm_2 --- peer_tm_4
peer_tm_2 --- peer_tm_5
peer_tm_3 --- peer_tm_4
peer_tm_3 --- peer_tm_5
peer_tm_4 --- peer_tm_5
end
subgraph Private payment netwrork
peer_1[RAFT] --- peer_2[RAFT]
peer_1 --- peer_3[RAFT]
peer_1 --- peer_4[RAFT]
peer_1 --- peer_5[RAFT]
peer_2 --- peer_3
peer_2 --- peer_4
peer_2 --- peer_5
peer_3 --- peer_4
peer_3 --- peer_5
peer_4 --- peer_5
end
- 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 2yr ago