# README
Proof of Work server and client
Task description

Design and implement “Word of Wisdom” tcp server.
- TCP server should be protected from DDOS attacks with the Prof 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 Prof 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
How to run
To run locally, put your config.yaml
file in configs
directory. Default config file is already presented in repo. You can run server and clint separately with make server
and make client
commands respectively. You'll also need to run Redis as a store.
For deployment, Dockerfiles for both the server, the client and redis is also provided. Run containers with command make up
.
Algorithm choice explained
For the "Word of Wisdom" TCP server that employs a Proof of Work (PoW) mechanism to mitigate the risk of DDoS attacks, an efficient and suitable choice of PoW algorithm is crucial. The chosen algorithm is Hashcash. This decision is based on several factors that make Hashcash particularly apt for this application:
- Simplicity and Efficiency
- Widely Used and Tested
- Adjustable Difficulty
- Statelessness
- Used by Bitcoin 💰