Description
Build a system of probers to listen to P2P traffics on the IoTeX mainnet, collecting and aggregating P2P traffics, sample-storing some of them and visualizing the metrics on a dashboard.
Context
IoTeX mainnet is growing - it is now composed of over 100 delegate nodes talking to each other in a P2P fashion, to process transactions, produce blocks by reaching consensus and help others to sync. When debugging an issue on the IoTeX mainnet recently, the developers complain about the lack of visibility of the network at the p2p layer, e.g, which types of messages are congesting the network, from which nodes and why. Such a system would greatly help the developer to understand the current status of the network, implement new features that keep the protocol improving and scaling up.
Misc/References
This project should be composed of 4 parts:
- An P2P prober written in Golang; multiple instances of which will be deployed and connects to IoTeX mainnet's P2P layer
- A backend written in Golang that aggregates all collected information from probers
- A dashboard (e.g., ELK) that visualizes the network status and let the developers dive into some of the P2P messages that happened on the network
- The script (e.g., helm, dockercompose) to easily deploy the whole system to AWS or GCP, e.g. 10 probers + 1 backend + 1 dashboard
Acceptance criteria
- Architectural Design
- PoC (one prober + one backend + one dashboard with basic flows implemented)
- Full-features implementation with production quality
- Read to deploy to testnet and mainnet
Time estimation
2 weeks
Reward
4,500 USD
Important Links
Getting started: https://docs.iotex.io
IoTeX Blockchain Explorer: https://iotexscan.io
IoTeX Testnet Faucet https://faucet.iotex.io/
Follow Us
https://iotex.io
https://t.me/IoTeXGroup
https://twitter.com/iotex_io
https://medium.com/@iotex
https://www.reddit.com/r/IoTeX