CAPTCHA for Computers
Problem#
Капчи существуют, что бы защититься от ботов. Однако от этого страдают человеки. Причем боты уже умеют решать сложные капчи, из-за чего капчи становятся сложнее и иногда настолько, что уже кожанным становится тяжко. Для того, что бы восстановить справедливость - нужно заставить роботов решать капчи, а человеков кликать по ссылочкам.
Idea#
Капча, к которой мы привыкли - это штука, которая якобы может быть решена только живым человеком, а роботу будет сложно это сделать якобы потому, что здесь нет “видимого алгоритмического решения”, а большое кол-во проверок от вендоров этих капч еще больше усложнют жизнь ботоводам.
Но что, если развернуть ситуацию в другую сторону? Предоставить вполне понятное и удобное апи для капчи для удобного и легкого написания алгоритма получения капчи и ее решения - как это сделано сейчас в re:Captcha (для человеков). В re: Captcha и остальных все удобно - кликаешь мышкой по велосипедам и все гуд. Сделаем для роботов то же самое - заставим их решать понятные и удобные задачи, только они будут так же сложны для машины, как и человеческая капча для людей ( возможно сложнее). И так же как re:Captcha использует человеческий труд для разметки своих данных - так же и мы можем использовать ботов для майнинга данных/денег/etc.
Solution#
В этой сфере есть большой выбор алгоритмов, которые используются для доказательства работы (proof of work). Они
используют большое количество памяти для работы, которое нельзя оптимизировать. Например, scrypt
, которая обязана быть
знакома всем, кто хоть раз писал систему для регистрации/аутентификации пользователей. Именно этой функцией
(или bcrypt
) вы должны хэшировать и проверять пароли пользователей. Если это не так - погуглите по теме и переделайте,
плиз.
Workflow:
- Клиент получает данные для вызова scrypt функции на своей платформе
- Клиент вызывает scrypt с заданными параметрами для решения задачи
- Клиент отправляет запрос на сервер вместе с передачей результата от scrypt
- Сервер проверяет результат и обрабатывает запрос
Useful links#
Additional#
- Функция может быть любой. scrypt выбран как пример
- Функцией может являться алгоритм ecdsa или другие алгоритмы на эллиптических кривых
- Можно действительно отправлять задачи на майнинг чего-либо