Taraxa Tech Update — Week 42
A major milestone for Taraxa public testnet and new fixes to the network configuration.
This week marks the longest trial runtime of Aphrogenes. We’re finished with contract work and now polishing up the JSON-API delegation and debugging the remainder of the issues to ship a stable network before the end of the month.
Consensus and PBFT:
Taraxa enables the rapid finalization of block DAG to maximize the network’s throughput. Most of the week, we were working on fixing bugs in DAG-PBFT node syncing:
- Debugged and investigated on PBFT round stuck issue after the DAG refactoring- Debugged the PBFT syncing issue- Code review on DPOS integration and DAG refactoring- Moved the PBFT config from the top level of node config to the chain config section- Fixed the issue with incorrect sortition table entry that caused the tests failure and nodes getting stuck.
Network configuration:
- Moved the FullNode `boot_node` flag to the node config at path `<root>.network_is_boot_node`- Fixed node logging setup that was not always undone after the node destruction- Made the logging setup/un-setup more robust through encapsulation and immutability- Removed top.cpp, moved its function inside the FullNode. Respectively, removed `destroy_db` and `rebuild_network` with preference to remove those files outside the node code whenever needed- Made node config `ws_port` and `rpc_port` optional: if a port is not set, the respective server won't start - Refactored FullNode and DBStorage- Moved all test utils in one file, refactored/improved some, in particular the wait function, node config generators and node launching utilities- Fixed the tests accordingly and, in many instances, lifted the timeouts.
EVM Transaction Layer.
We keep working on a more asynchronous pipelined design to make transaction execution and PBFT consensus asynchronous. Done this week:
- Integrated Taraxa-EVM state API DPOS implementation to the PBFT manager- Adapted the code to Taraxa-EVM state API database now being encapsulated- Fixed null value of the account state root in Ethereum JSON-RPC.