Post
Topic
Board Tokens (Altcoins)
Re: [ANN]Dora is a highly parallelized, high performance public chain
by
Couriter
on 02/10/2018, 15:08:44 UTC
1) Performance Optimization for Tx Pool’s AddTx
  a. (30%) txSortedMap.len() repeatedly calculate existing tx queue len, it’s redundant code, will use one variable to avoid repeat calculation.
  b. (30%) various statedb operations, such as getBalance, getNonce, etc, belongs to levelDB operations.
  c. (30%) EIP155Siner.PublicKey() is calculated to get “from” address from signed message.
  d. (10%) There is WAL(write ahead log) inside of Tendermint’s mempool. It has no practical use.
Point a and d will be optimized directly. Point b depends on the performance of stateDB. For point c, it will be optimized by calculation parallelization and by delay calculation to execution.

2) Performance Analysis for tendermint P2P
  a. Sorted out the logic for P2P network transmission, realized the logic for speed testing based on P2P network transmission
  b. MConnection is the core data structure for the entire data transmission. Based on the same network connection, it conceptualizes different channels. Based on the Tendermint design, every channel will correspond to modules needing to be exchanged in the network (for example, mempool, consensus, etc).

Initial Conclusion:
  a. The buffer usage level in the network transmission logic is a little excessive. The transmission logic ultimately transmit data to the network through “Flush”.
  b. In the configuration of Tendermint, the speed for Send and Transmit is limited to 512k. If the speed limit is changed to 50M, the transmission speed between P2P nodes can easily reach 10MB/s.

3) PBFT Parallelization
  a. Expand PeerRoundState function, support synchronization of state/data under pipeline condition
  b. Solve the problem of unable to generate blocks when the consensus between 2 nodes is missing tx.

4) Performance Analysis of StateDB
  When Block data and Account data is divided into 2 DB, the performance increased by 15% compared to un-optimized levelDB. It’s about the same compared to the optimized levelDB.