Skip to main content
Онлайн-голосования — «приз зрительских симпатий», конкурс, премия — слишком часто решает тот, кто купил голоса. CAPTCHA за плату решают специальные сервисы, почтовый адрес не стоит ничего, аккаунт в соцсети стоит дёшево. Организатору нечем ответить на обвинение, кроме обещания. Сценарий — виджет голосования, который встраивается на любой сайт. Каждый голос — это подтверждение Veriqa в мессенджере голосующего: одно нажатие, без регистрации, пароля и ввода кода, — а итог сопровождается подписанной квитанцией, которую могут проверить и сам голосующий, и третья сторона. Одной фразой: голосование, итог которого можно предъявить, а не только пообещать.
Основу этого сценария вы собираете сами из механизмов, которые в Veriqa уже есть; чего пока нет, перечислено ниже. Мы работаем над тем, чтобы упростить его реализацию в продукте.

Зачем это нужно

  • Голосующий голосует без учётной записи, а квитанция позволяет ему убедиться, что его голос вошёл в итог.
  • Номинант получает победу, которую можно доказать. Победа, которую никто не может проверить, мало стоит, как только кто-то скажет, что её купили.
  • Организатор переходит от «поверьте нам» к «проверьте сами» и не обязан хранить номера телефонов ради борьбы с накрутками.
  • Спонсор получает итог, который можно проверить аудитом, и охват, измеренный людьми, а не кликами.
  • Разработчик сайта встраивает виджет вместо собственной верификации, хранения номеров и своего антифрода.
Кампания, которая идёт сразу в нескольких соцсетях, получает ещё одно. Сегодня голоса из каждой сети складываются, и один и тот же человек учитывается столько раз, во скольких сетях проголосовал. Номер телефона — единственный идентификатор, общий для всех сетей: если посты во всех сетях ведут в один бюллетень, один человек — это один голос независимо от точки входа, а организатор видит, сколько уникальных людей привела каждая сеть и насколько пересекаются аудитории. Цена — лишний переход: во встроенный опрос самой сети — опрос в канале или стикер в Stories — подтверждение вставить некуда.

Насколько сильна защита

Совершенного антифрода не бывает, и сценарий не претендует на неуязвимость. Он делает накрутку дороже, чем при распространённых сегодня на сайтах способах: CAPTCHA или подтверждение по почте обходятся ферме почти даром, аккаунт в соцсети — дёшево, а личность, привязанная к номеру телефона, обходится дороже аккаунта в соцсети. SMS-верификация опирается на тот же якорь, и защита здесь та же, что у неё. Разница в другом: голосующий не переписывает код, а сообщения не тарифицируются поштучно: в WhatsApp Veriqa отвечает на сообщение пользователя без шаблона, а такие ответы по текущим тарифам Meta бесплатны. Тот же расчёт, что и в «Замене SMS-кодов»: телефонный якорь по цене мессенджера везде, где у аудитории он есть.

Из чего собирается сценарий

Голос — не отдельный продукт, а подтверждение действия с данными: какой опрос и какой выбор. Такая транзакция уже есть:
  1. Серверное подтверждение. Сервер сайта вызывает POST /api/transaction/confirmation с объявленным типом действия (action_type) и получает deep link канала и QR-код для голосующего. Исход забирается запросом GET /api/transaction/{id}/result — confirmed, declined, expired или failed, — и ответ не раскрывает, кто подтвердил.
  2. Точный предмет в сообщении. Опрос и выбор передаются типизированными слотами (slot_values) по схеме типа действия, и голосующий видит в чате, за что голосует, с кнопками «Подтвердить» и «Отклонить».
  3. Номер телефона как ключ. WhatsApp отдаёт phone_number — сразу с сообщением или шагом телефона, когда пользователь скрыл номер за username. Telegram передаёт идентификатор аккаунта, а не номер — см. каталог каналов.
  4. Журнал аудита. Журнал только дописывается; развёртывание может явно включить запись параметров подтверждённой операции, а идентификаторы пользователей попадают в него только в маскированном виде.

Чего сегодня нет

  • «Один человек — один голос». Продукт подтверждает действие, но голоса не считает и не дедуплицирует их в границах опроса.
  • Ключа, который не хранит номер. Для дедупликации нужен телефон, но в записи должен лежать необратимый хеш с секретом, свой для каждого опроса, а не сам номер, — подход из статьи «Устойчивость к утечке персональных данных». В Telegram номер доступен, только если пользователь явно им поделится.
  • Подписанной квитанции и проверяемого итога. Голосующему нужна квитанция, а опросу — публикуемая сводка, по которой голосующий проверяет, что его голос включён, а третья сторона — что итог сходится с реестром. Сообщение, которое Veriqa отправляет после подтверждения, — текст для пользователя, а не заверение, и журнал аудита не защищён от подмены записей.
  • Уровня якоря как свойства опроса. Не плашка «защищено», а «собрано на якоре стоимостью примерно столько-то за личность» — вместе с проверками вокруг ключа: виртуальные диапазоны номеров, всплески голосов из одной сети, повторяющиеся паттерны.
  • Виджета и сервиса за ним. Виджет на произвольном сайте означает, что голосование хостит Veriqa, а не интегратор: разрешённые источники (origin), ограничение частоты запросов, политика против злоупотреблений.
  • Email для этой транзакции не подходит: адрес ничего не стоит, поэтому голос, подтверждённый по почте, ни к чему не привязан.
Платформа голосований или конкурсов, которая принимает внешний OpenID Connect провайдер, может подключить Veriqa способом входа уже сегодня, как любой другой OIDC-клиент, — как устроено такое подключение, см. «SaaS-конструкторы». Пускает ли платформа публичную аудиторию через внешний провайдер — вопрос самой платформы. Голоса в этом случае считает она, поэтому таким путём доступны якорь и подтверждение одним нажатием, а квитанция и проверяемый итог — нет.

Ограничения

Подтверждённый голос атрибутируем: он связан с подтверждением голосующего. Это подходит для зрительских симпатий, конкурса или премии и не подходит для выборов и любых решений с правовыми последствиями, где важна тайна голосования.
  • Голоса, купленные у живых людей, здесь не останавливает ничто. Телефонный якорь поднимает цену голоса до стоимости времени человека — и на этом останавливается.
  • Квитанция сдвигает доверие, но не отменяет его. Она доказывает, что сайт не изменил итог, и не доказывает, что Veriqa не выпустила фиктивных личностей.
  • Охват. Там, где заметная часть аудитории не пользуется ни одним из поддерживаемых мессенджеров, — например, в США, где единого доминирующего мессенджера нет, — виджет не может быть единственным способом проголосовать, а любой запасной путь без телефонного якоря опускает гарантию до своего уровня.
  • Квитанция — это заверение подсчёта, а не электронная подпись в юридическом смысле.