Client Puzzle Protocol ( CPP ) — это компьютерный алгоритм для использования в интернет -коммуникациях, цель которого — сделать невозможным злоупотребление ресурсами сервера. Это реализация системы доказательства работы (PoW).
Идея CPP заключается в том, чтобы потребовать от всех клиентов, подключающихся к серверу, правильно решить математическую головоломку перед установлением соединения, если сервер подвергается атаке. После решения головоломки клиент должен вернуть решение серверу, которое сервер быстро проверит, или отклонит и разорвет соединение. Головоломка сделана простой и легко решаемой, но требует по крайней мере минимального количества вычислений на стороне клиента. Законные пользователи столкнутся с незначительными вычислительными затратами, но злоупотребления будут сдержаны: те клиенты, которые попытаются одновременно установить большое количество соединений, не смогут сделать этого из-за вычислительных затрат (временной задержки). Этот метод обещает бороться с некоторыми типами спама , а также с другими атаками, такими как отказ в обслуживании .