Multi-threaded consensus signature and message processing in leader node; reference implementation: https://github.com/harmony-one/harmony/pull/3239
Upgrade our BLS implementation with faster BLST library; see benchmark https://github.com/AlexiaChen/benchmarks-bls-libs
Only wait for two-third signature quorum in commit phase and accept late commit signatures in next block
Broadcast only block header and the list of txn ids and let validators recompile the txn list
Optimize p2p network to be sharded in connectivity and network topology
- Analyzed consensus bottleneck on block processing and reduced unnecessary processing of blocks through result caching.
- Figured out how to update the base point for blst library with Ganesha
- Looked into BLE12-381 curve specification https://hackmd.io/@benjaminion/bls12-381
- Found the place in blst for base point setting: https://github.com/supranational/blst/blob/master/src/e1.c#L23. But it needs more help from the blst team on how to set it correctly.
- Change consensus block verification logic: optimistically verify new blocks in prepare phase so it won't be a bottleneck in the commit phase.
- Add block content in the announce message of the leader
- Refactor block verification logic as a utility to be used by both announce and prepared message handling in validator node.
- Mainnet shard 0 block time stays around 1.7s and other shards around 0.5s
- Add support for subscribing to pending transactions in websocket event listening https://github.com/harmony-one/harmony/pull/3885
- Add support for fetching pending transactions in GetTransactionByHash RPC: https://github.com/harmony-one/harmony/pull/3892
- Adding gas price estimation logic in rpc so users can get suggested gas price which will mostly like get their transactions accepted in next block: https://github.com/harmony-one/harmony/pull/3876
- Add fork condition for evm datacopy bug so we won't have shard-down and forking risk: https://github.com/harmony-one/harmony/pull/3858
- Add security patch for evm datacopy bug: https://github.com/harmony-one/harmony/pull/3856
- Add the capability in EVM on fetching VRFs from history blocks: https://github.com/harmony-one/harmony/pull/3850 as requested by developer community (https://github.com/harmony-one/harmony/issues/3846).
- Turn on block reward/crosslink aggregated processing in testnet and conduct the testing plan on it: https://github.com/harmony-one/harmony/issues/3840