Taraxa Community Update: January 2020
How did we spend January here at Taraxa? More lines of code, hours of client meetings and Uber rides, six pizzas, and two new hires! To be more precise, the month was mostly focused on pushing the technical development of Taraxa’s Testnet, carrying on with our R&D, and setting the goals for 2020. On to the updates!
➕Community
As we move forward with our proof of concept and market research, we stumble onto brilliant findings and meaningful insights that we incorporate in our blog weekly. Here’s one on why securing data at the source is essential to ensure its provenance. And another major dig into the nuts and bolts of the secure and fair ordering of the block DAG from our co-founder Steven Pu. We’ve also outlined some major goals to take us through the year. Have a read, leave a comment, or fire your questions to the chat — we’d love to hear your feedback! Scroll through our Twitter highlights to have a glance at other things that excited our minds (and hearts!) in January:
➕The Tech
As we progress towards the vision of infrastructure and application-agnostic API platform powered by a DLT engine to validate the provenance and immutability of data, our core developers (along with community bug submissions) have been hard at work to maintain the stability of nodes of Taraxa’s Testnet. But we also like to step away for a minute to get a broader picture, and then we iterate a bit more. So we do a lot of experimenting on Taraxa’s consensus and rapid finalization of DAG to come up with the most optimized system architecture. And you too can start contributing to our GitHub — we’re happy to see more brilliant ideas from the developer community!
This month we successfully accomplished multiple sprints of adding functionalities and fixing bugs of Aphrogenes to ship new features for the next release. In addition to the improved procedural stability and persistent state for nodes, we plan to roll out a block explorer to visualize DAG and block confirmation Metamask wallet integration.
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. To that end, we’ve successfully accomplished several sprints on the secure and fair ordering of the block DAG that is essential to Taraxa’s consensus. Efficient proposals enable Taraxa’s PoS system to produce fair and non-coordinated block proposals, which is essential for the network’s security:
- Added exist DAG block checking, and fix counting DAG block issue
- Added locking for DagManager::deleterPeriod. Comment out assert for size compare of DAG and anchor tree, need test to check if will catch up later
- 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 and reviewed PBFT syncing code
Optimizing the network’s throughput
Taraxa makes use of the DAG topology to enhance the network’s overall throughput by enabling the rapid finalization of the block DAG:
- Experimented with ways to ensure that block DAG period finalization’s voting rounds rapidly converge by dynamically selecting period block candidates a few levels back into the block DAG, instead of always voting on blocks at the frontier.
- Implemented the new sync/bootstrapping where PBFT and DAG are synced in parallel.
- 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 without having to learn new languages and tools. On this front, we kept working on making sure that database commitments are atomic to prevent the crashing of nodes that create corrupted states.