Design and implement “Word of Wisdom” tcp server
- TCP server should be protected from DDOS attacks with the Proof of Work (https://en.wikipedia.org/wiki/Proof_of_work), the challenge-response protocol should be used.
- The choice of the POW algorithm should be explained.
- After Proof Of Work verification, server should send one of the quotes from “word of wisdom” book or any other collection of the quotes.
- Docker file should be provided both for the server and for the client that solves the POW challenge
Run server:
make run_server
Run client:
make run_client SERVER_HOST=$(ipconfig getifaddr en0):8081
- Its well known and widely used (in Bitcoin for example)
- Considered to be highly secure (not a signel collision found yet)
- Due its efficiency which can also be implemented in hardware
- Add prometheus metrics to track how clients "struggle" to access service in terms of seconds dedicated to solve hash
- Dynamically adjust leading zeros difficulty in solving sha256 hash if connection count grows rapidly