March 15, 2022
Rongjian LanJacky Wang
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
Have a gas fee model that deter spamming
- Integrate extra commit signature in crosslink and update crosslink/block reward accounting logic.
- Store extra commit signature in data base and reuse stored extra commit in node restart.
- Add extra data field in consensus protocol buffer message so validators won't miss the data.
- Fully integrate everything on extra commit signature and successfully tested locally.
- Implement extra commit signature logic in consensus module; voting power accounting module; block proposal module.
- Update crosslink and block reward logic based on the new extra commit signature design.
- Design the extra commit signature model and implement extra commit signature block structure hard fork.
- Discussing with Herumi and blst team on the comparison between the two libs.
- Work with bounty submitter on beacon chain pruning PR to save validator disk space.
- Updated blst base point with Harmony's original base points. Posted further question on blst github for guidance.
- Consensus performance/timing analysis tool is finished and tested by Garret.
- 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