Taraxa Weekly Tech Update: 2020 Week 4

1月 28, 2020 博客 No Comments »

Another week is a wrap, and we’re thrilled to share some major achievements on the tech front!

We keep adding functionalities and fixing bugs of Aphrogenes to ship new features for the next release of Taraxa’s Testnet. In addition to the improved procedural stability and persistent state for nodes, we plan to roll out a block explorer to visualize DAG, block confirmation Metamask wallet integration.

As you might have noticed, we do a lot of experimenting and iterating to come up with the most optimized system architecture. And you too can start contributing your ideas to our GitHub!

In the meantime, here’s the rundown of what has been accomplished this past week.

Consensus and PFBT

We were mostly focused on working on Taraxa’s block proposal scheme to make sure that synchronization queues and database commits are atomic for PBFT.

  • Added a temporary PBFT sortition accounts table for intermediate updating during execution (the permanent table would only be able to update at beginning of each new round of PFBT)
  • Started using a sortition accounts table instead of DB for an account search
  • Handled the race condition where the number of active players is zero
  • Fixed PBFT syncing height consistency issue
  • Fixed PBFT manager and reviewed PBFT syncing code

Optimizing the network’s throughput

We make use of the DAG topology to enhance the network’s overall throughput by enabling the rapid finalization of the block DAG:

  • Finished implementation of the new sync/bootstrapping and tested /debugged related issues
  • Fixed a bug where two blocks with same transactions occur one after another in DAG
  • Debugged a DAG bug which block will package the same transactions with its anchor block and point to the anchor block
  • Fixed flaky tests for getting the peer count

Making it developer-friendly

Another major feature of Aphrogenes is the preliminary integration of EVM to allow developers to effortlessly get started with Taraxa. On this front, we kept working on making sure that database commitments are atomic to prevent the crashing of nodes that create corrupted states.