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.

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

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).

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)

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).

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 updated