Назад в блог

Security31 авг. 2026 г.

Две подписи перед выводом

ZenbooxОфициальный блог

Вывод средств — та единственная операция, где осторожность почти ничего не стоит, а небрежность стоит всего. Вот что происходит между вашей заявкой и переводом.

КОГДА ВЫ СОЗДАЁТЕ ЗАЯВКУ

Вывод начинается с одноразового кода. Код расходуется атомарно, поэтому он действителен ровно один раз, даже если две заявки придут в один и тот же момент.

Затем баланс проверяется внутри той же транзакции базы данных, которая записывает вывод, а не до неё. Есть дневной лимит, и день считается по UTC из одного места в коде, чтобы окно не сдвинулось незаметно при смене часового пояса сервера.

Заявка также несёт ключ идемпотентности. Если связь оборвётся и приложение повторит запрос, вы получите ту же самую заявку, а не вторую.

КОГДА РЕШАЕМ МЫ

Вывод не отпускает тот, кто просто оказался в системе.

Роли сотрудников разделены. Оператор может видеть и готовить, но решение по выводу принимает только утверждающий или администратор. И тот, кто создал заявку, не может её одобрить. Это правило четырёх глаз.

Важны обе половины, и мы поняли почему на собственном опыте. Само по себе правило говорит: создавший не одобряет. Но для вывода создатель — это инвестор, поэтому правило не срабатывало никогда, и низшая роль сотрудника могла одобрить уход денег вообще без второй подписи. Роль утверждающего существовала в коде и не защищала ничего. Объявленное, но не применяемое право вводит в заблуждение сильнее, чем его отсутствие.

Если вывод отклонён, сумма возвращается на доступный баланс, и вы получаете уведомление. Ничего не зависает в неопределённости.

ЧЕГО МЫ ЕЩЁ НЕ СДЕЛАЛИ

Изменение реферальных ставок сегодня не требует второй подписи. Такое изменение не портит историю, потому что уже выплаченные комиссии остаются привязаны к той версии ставки, по которой были рассчитаны, но будущую ставку сейчас определяет один человек.

Мы предпочитаем опубликовать пробел, а не впечатление.