CryptoLike хранит ключи подписи в отдельном сервисе подписи, к которому у API нет доступа, пропускает каждую выплату через проверки, которые вы настраиваете, и требует свежий код 2FA для выплат из кабинета и Telegram-бота. Ниже — все эти механизмы в том виде, как они работают в продукте, со значениями по умолчанию: решите, какие включить. Кто стоит за платформой и как мы о ней пишем — на странице о CryptoLike.
Где находятся ключи
Приватные ключи есть только внутри отдельного сервиса подписи. API, кабинет и основная база данных хранят адреса и публичные ключи, но не приватные ключи. Сервис подписи принимает запросы только по TLS с взаимной аутентификацией (mTLS) от фиксированного списка внутренних сервисов и сверяет каждый запрос со своими правилами, прежде чем что-то подписать.
- Выплата подписывается, только если она в обработке и на вашем балансе в журнале проводок есть соответствующая блокировка суммы.
- Консолидация идёт только на адреса из белого списка сервиса подписи, добавить адрес в этот список могут только два разных администратора, а удалить — один.
- Без заданного лимита подписи нет. Запрос сверх лимита ждёт в ручной очереди, пока оператор не подтвердит его отдельным одноразовым кодом; неверные коды ведут к блокировке.
- Ключи хранятся в зашифрованном виде и стираются из памяти после использования.
Горячий и холодный кошельки
Платежи приходят на отдельные депозитные адреса — свой для каждого платежа или клиента; затем платформа собирает средства с них в горячий кошелёк, из которого идут выплаты. Когда горячий баланс актива превышает заданный для него лимит, система предлагает перевод в холодное хранение, но сама средства туда не переводит. Каждый перевод оператор подтверждает свежим кодом 2FA, а предложение, которое никто не подтвердил, истекает, и ничего не переводится.
Холодный адрес меняется только вдвоём: один администратор предлагает, другой подтверждает. Переводы с холодного кошелька сервис подписи не подписывает — этот кошелёк он только отслеживает. Как это влияет на выплаты и как вести своё казначейство — в статье горячий и холодный кошельки.
Ограничения выплат
Каждая выплата из кабинета или Telegram-бота требует свежий код 2FA именно на это действие (для пакета из CSV — один код на весь файл), и один код нельзя использовать дважды. Выплату через API разрешает API-ключ с правом withdraw, и кода 2FA она не требует — поэтому ограничьте такой ключ IP-адресами сервера и включите белый список. Сверх этого вы сами решаете, насколько строгими будут выплаты: белый список, второе подтверждение и права ключей настраиваете вы. В таблице — каждая настройка и её значение по умолчанию.
| Настройка | Что делает | По умолчанию |
|---|---|---|
| 2FA на выплаты | Свежий код на каждую выплату из кабинета или Telegram-бота (на пакет из CSV — один) и на добавление адреса в белый список; без настроенной 2FA такие выплаты не проходят. Выплаты через API опираются на право ключа withdraw |
Всегда в кабинете и боте |
| Белый список адресов | Если включён, выплаты из кабинета и через API уходят только на адреса из списка. Новый адрес начинает работать через 24 часа после добавления (с 2FA); удаление не требует кода 2FA и действует сразу | Выключен; задержка 24 часа действует при добавлении адресов |
| Второе подтверждение | Выплата из кабинета или Telegram-бота выше заданной для актива суммы ждёт второго владельца или администратора — не того, кто её создал; выплаты через API не задерживаются | Выключено |
| Лимиты проверки | Задаёт платформа для вашего аккаунта: выплата сверх разового или дневного лимита или необычная активность, например крупная выплата на новый адрес или серия выплат подряд, уходит на ручную проверку | Для каждого аккаунта |
| Верификация аккаунта | Выплаты доступны после верификации аккаунта (KYB); приём платежей её не ждёт | Включена |
| Права API-ключа | read, create_invoice, create_address, withdraw — ключу магазина withdraw не нужен; каждый ключ можно ограничить IP-адресами. Ключами управляют владелец, администратор и разработчик, а выдача права withdraw требует их код 2FA |
Для каждого ключа |
Выплате через API можно передать собственный payout_id: повтор запроса с тем же активом, суммой и адресом возвращает ту же выплату, а не создаёт вторую, а при других параметрах ответ — 409. Как это выглядит на практике: белый список адресов, второе подтверждение и массовые выплаты.
Защита аккаунта
Вход в кабинет — по паролю и, когда вы её включите, по коду TOTP из приложения-аутентификатора, с 10 одноразовыми резервными кодами. Секрет TOTP хранится в зашифрованном виде.
- Пароли — от 10 до 128 символов, хранятся как хеши argon2id.
- Блокировка. Число попыток входа ограничено. Повторные неудачи блокируют аккаунт, и каждая следующая блокировка длится дольше; неверные коды 2FA тоже считаются.
- Сессии. «Выйти на всех устройствах» завершает все сессии, сброс пароля — тоже. Сессия заканчивается через 24 часа без активности и максимум через 30 дней.
- Журнал безопасности. Вы видите свои входы и изменения настроек защиты, владелец и администратор — ещё и всей команды. Записи журнала нельзя изменить.
- Уведомления. Письма о смене пароля, включении или выключении 2FA и блокировке аккаунта после неверных кодов 2FA; сообщения в Telegram о новом входе, новом API-ключе и изменениях белого списка.
API и вебхуки
Каждый запрос к API подписывается HMAC-SHA256 по времени запроса, методу, пути и хешу тела. Метка времени, отличающаяся больше чем на 5 минут, отклоняется, а уже использованная подпись отклоняется как повтор. API-секрет показывается один раз и хранится в зашифрованном виде; после ротации старый секрет работает ещё 10 минут, чтобы вы успели выкатить новый. Подробности — в разделе аутентификация API.
Вебхуки несут подпись HMAC-SHA256 от метки времени и сырого тела, сделанную секретом конкретного эндпоинта. Доставка идёт только на адреса https:// на публичных хостах: частные, loopback- и link-local-адреса отклоняются при сохранении URL и ещё раз при подключении. Если за 10 секунд нет ответа 2xx, доставка повторяется через 1, 5 и 15 минут, 1, 6 и 24 часа — 7 попыток примерно за 31 час. Как их проверять — в разделе вебхуки.
Проверка средств и бизнеса
Отправителя входящего перевода проверяют после подтверждений, до того как средства станут доступны на балансе. Средства из санкционного источника или выше порога риска задерживаются для проверки комплаенсом, а ваш сервер получает вебхук deposit.on_hold; если сервис проверки не отвечает, зачисление ждёт, а не проходит без неё. Правила проверки платформа задаёт для вашего аккаунта, в том числе для перевода, отправителя которого определить нельзя: такой перевод зачисляется с отметкой или задерживается для проверки. Адрес выплаты проверяется при создании выплаты и ещё раз перед подписью: санкционный адрес отклоняется, адрес высокого риска уходит на проверку. Что вы видите на каждом шаге и как обработать задержанный платёж — в статье AML-проверка входящих криптоплатежей.
Журнал проводок и сверка
Любое изменение баланса — проводка двойной записи в журнале, в который можно только дописывать: база данных отклоняет изменение и удаление записей, а баланс не может стать отрицательным. Сверка регулярно сравнивает балансы в блокчейнах с журналом и поднимает тревогу при любом расхождении.
Платёж зачисляется только после подтверждений, заданных для актива. Если реорганизация блоков отменит подтверждённый перевод, CryptoLike сторнирует зачисление и пришлёт invoice.reverted или deposit.reverted; реорганизация глубже той, что платформа обрабатывает сама, останавливает обработку этой сети до решения оператора.
Вопросы и ответы
Хранит ли CryptoLike приватные ключи от моего баланса?
Да. CryptoLike ведёт кошельки за вас: платежи приходят на адреса платформы, а ключи остаются внутри отдельного сервиса подписи, который подписывает только запросы, прошедшие его проверки. Вам не нужно держать ноды и хранить ключи. Куда уходят деньги, вы управляете выплатами — с 2FA, необязательным белым списком адресов и необязательным вторым подтверждением.
Может ли тот, кто украл мой API-ключ, вывести средства?
Только если у ключа есть право withdraw. Ключам магазинов и плагинов достаточно create_invoice и read. Ключ можно ограничить IP-адресами вашего сервера и включить белый список выплат — тогда даже ключ с withdraw сможет платить только на адреса, добавленные минимум за 24 часа до выплаты.
Что если кто-то узнает пароль от кабинета?
С включённой 2FA одного пароля недостаточно для входа, а каждая выплата из кабинета требует свежий код из вашего аутентификатора. Повторные неверные коды блокируют аккаунт и завершают все сессии, а вам приходит письмо. Новый адрес в белом списке начинает работать только через 24 часа после добавления — есть время заметить.
Как убедиться, что вебхук действительно от CryptoLike?
Проверьте заголовок X-Signature: это sha256= и HMAC-SHA256 от значения X-Timestamp, точки и сырого тела запроса, посчитанный секретом вашего эндпоинта. Сравнивайте за постоянное время и отклоняйте старые метки. Код на четырёх языках — в руководстве по проверке вебхуков.
Что происходит со средствами, которые не прошли проверку?
Они задерживаются, а не зачисляются. Проверенный перевод из санкционного источника или выше порога риска ждёт проверки комплаенсом, и ваш сервер получает о нём вебхук deposit.on_hold. По итогам проверки решается, будут ли средства зачислены; до этого они не появляются в доступном балансе.
Термины на странице
Начните с тестового платежа
Создайте аккаунт, попросите у поддержки доступ к тестовой среде и посмотрите, как платёж проходит путь от pending до paid в тестовой сети.