Ключи горячего кошелька хранятся в системе, подключённой к сети, поэтому он подписывает выплаты автоматически. Ключи холодного кошелька хранятся офлайн, и ничто в сети не может сдвинуть его средства. Криптопроцессингу нужны оба: в горячем — столько, чтобы платить без задержек, остальное — там, куда не дотянется взломанный сервер. Разбираем, как CryptoLike делит средства между ними, кто может их перемещать, что вы видите, когда горячий кошелёк пустеет, и как применить ту же идею к собственному казначейству.
Горячий и холодный кошелёк: сравнение
Горячий кошелёк платит уязвимостью за скорость: программа может подписать перевод его ключами в любой момент — это нужно для автоматических выплат, и этим же воспользовался бы злоумышленник, получивший доступ к системе. Холодный кошелёк платит скоростью за изоляцию: его ключи никогда не касаются машин в сети, поэтому расход из него требует людей и времени. Любой кастодиальный сервис ищет баланс между ними.
| Параметр | Горячий кошелёк | Холодный кошелёк |
|---|---|---|
| Где ключи | В онлайн-системе, которая подписывает автоматически | Офлайн, вне любых систем в сети |
| Для чего | Выплаты и ежедневные переводы | Средства, которые выплатам сейчас не нужны |
| Скорость расхода | Как только пройдены проверки | Часы и больше: ручная процедура с несколькими людьми |
| Главный риск | Взлом онлайн-системы | Потеря офлайн-ключей, медленный доступ |
| Сколько в нём | До лимита, если он задан для актива | Всё, что выше лимита |
В CryptoLike горячий кошелёк — это набор адресов в каждой сети, а холодный — адрес для каждой монеты, ключей от которого у платформы в онлайне нет. Короткие определения — в глоссарии: горячий кошелёк и холодный кошелёк.
Куда попадают платежи ваших клиентов
Каждый платёж CryptoLike принимает на собственный депозитный адрес: он отдельный у каждого платежа и каждого статического адреса, и индекс адреса никогда не используется повторно. После подтверждения платежа и зачисления на ваш баланс платформа собирает средства с депозитных адресов в горячий кошелёк, из которого идут выплаты. На ваш баланс сбор средств не влияет: баланс — это запись в леджере, а не содержимое одного адреса.
- Депозитный адрес. Клиент платит; перевод зачисляется после подтверждений актива.
- Сбор средств. Платформа пачками переводит средства с депозитных адресов в горячий кошелёк и сама платит комиссии сети. В TRON для этого нужны энергия и bandwidth, их платформа оплачивает в TRX со своего кошелька для газа — см. энергия и bandwidth в TRON.
- Горячий кошелёк. Из него идут ваши выплаты и другие исходящие переводы платформы.
- Холодное хранение. Сюда после подтверждения уходит излишек сверх лимита горячего кошелька.
Это кастодиальная модель: кошельками и ключами управляет CryptoLike, а вы распоряжаетесь деньгами через выплаты. Запускать ноды, хранить ключи и управлять адресами вам не нужно.
Кто может подписать перевод и по каким правилам
Приватные ключи CryptoLike есть только внутри отдельного сервиса подписи. В API, кабинете и основной базе данных хранятся адреса и публичные ключи, но не приватные ключи. Запрос на подпись приходит по TLS со взаимной аутентификацией (mTLS) от фиксированного списка внутренних сервисов, и сервис подписи проверяет его по своим правилам, прежде чем подписать.
- Выплата подписывается, только если она в обработке и на вашем балансе в леджере есть соответствующая блокировка суммы. Запрос на что-то другое отклоняется.
- Сбор средств идёт только на адреса из списка разрешённых. Добавить адрес в этот список могут только два разных администратора, каждый подтверждает добавление отдельным одноразовым кодом; удалить адрес может один администратор.
- Нет заданного лимита — нет подписи. Сверх лимитов на транзакцию или на день запрос ждёт в ручной очереди, пока его не одобрит оператор; неверные коды ведут к блокировке.
- Холодный кошелёк — только для наблюдения. Сервис подписи видит его баланс, но ключа для подписи из него у него нет.
Полный перечень мер, включая защиту аккаунта и подписи вебхуков, — на странице защиты.
Как излишек попадает в холодное хранение
Платформа может задать лимит горячего кошелька для каждого актива. Задача по расписанию проверяет горячие балансы, и когда актив с лимитом его превышает, предлагает перевести излишек в холодное хранение. Сам по себе перевод не происходит: каждое предложение оператор подтверждает свежим кодом 2FA, а неподтверждённое предложение истекает, и ничего не переводится.
| Правило | От чего защищает |
|---|---|
| Не больше одного открытого предложения на актив | От двух переводов одного и того же излишка |
| Нет предложений, пока курсу больше 5 минут | От применения долларового лимита к неверной цене |
| Холодный адрес должен быть в списке сервиса подписи | От перевода на адрес, который никто не утверждал |
| Новый холодный адрес утверждают два разных администратора | От перенаправления холодного хранения одним человеком |
| Записи о предложениях нельзя изменить | От переписывания того, кто что одобрил |
Сам перевод по-прежнему подписывает сервис подписи, поэтому крупная сумма может попасть и в его ручную очередь и потребовать там второго подтверждения. Обратный перевод из холодного хранения — офлайн-процедура с участием нескольких людей и физическим доступом; запросом к платформе её не запустить.
Что вы видите, когда в горячем кошельке не хватает средств
Если горячий кошелёк актива не покрывает выплату, CryptoLike не отклоняет её, а держит в ожидании. Выплата остаётся в статусе pending, а кабинет показывает: «Обрабатывается. Сумма заблокирована до отправки выплаты; её ещё можно отменить.». Операторы получают уведомление с размером нехватки и очередью, пополняют горячий кошелёк из холодного хранения и возобновляют выплату.
Что это значит на практике:
- Крупная выплата может идти дольше мелкой. Выплата больше остатка горячего кошелька ждёт пополнения из холодного хранения, а это ручная процедура.
- Пока выплата ждёт, ничего не теряется. Сумма остаётся заблокированной на балансе, и выплата подписывается, только когда её можно провести целиком.
- Это можно учесть заранее. Перед необычно крупной выплатой предупредите поддержку или разбейте её на несколько выплат во времени.
Изменения статуса выплаты приходят вебхуками withdrawal.*; статусы и их значение — в справочнике API.
Как ваш баланс сверяется с блокчейнами
Баланс в CryptoLike ведётся в леджере с двойной записью: каждое изменение — проводка с дебетом и кредитом, записи нельзя изменить или удалить, а баланс не может уйти в минус. Задача сверки регулярно сравнивает, сколько лежит на депозитных и горячих адресах платформы в блокчейнах, с тем, сколько там должно быть по леджеру, и поднимает тревогу при любом расхождении.
Благодаря леджеру и реорганизация блоков обрабатывается чисто: если подтверждённый перевод исчез из цепочки, зачисление сторнируется отдельной проводкой, и вы получаете invoice.reverted или deposit.reverted. У каждого движения есть ID транзакции, который можно проверить.
Как вести своё казначейство поверх CryptoLike
То же разделение работает и для вашего бизнеса: держите на CryptoLike столько, сколько нужно для выплат, а остальное выводите на кошелёк под вашим контролем. CryptoLike даёт инструменты, которые затрудняют злоупотребление таким переводом; регламент определяете вы.
- Определите рабочий остаток по каждому активу. Столько, чтобы хватало на обычную неделю выплат и возвратов. Всё сверх — ваш излишек.
- Внесите адрес своего холодного кошелька в белый список. Включите белый список адресов: выплаты пойдут только на добавленные вами адреса, а новый адрес станет доступен через 24 часа после добавления с 2FA.
- Задайте порог второго подтверждения. Выплаты из кабинета или Telegram-бота выше выбранной суммы по активу будут ждать второго владельца или администратора — не того, кто их создал; на выплаты через API порог не действует. См. второе подтверждение.
- Выводите излишек по расписанию. Например, раз в неделю — выплата из кабинета на холодный адрес из белого списка с подтверждением 2FA. Сначала смотрите оценку: в ней комиссия платформы, комиссия сети и итоговое списание.
- Давайте API-ключам минимум прав. Ключу магазина нужны
create_invoiceиread; правоwithdraw— только системе, которая делает выплаты, и этот ключ стоит ограничить IP-адресами ваших серверов: выплаты через API идут без кода 2FA.
Пошагово эти настройки разобраны в гайде белый список адресов и второе подтверждение выплат, а выплаты многим получателям сразу — в гайде массовые выплаты в USDT.
Вопросы и ответы
Ключи от моего баланса хранит CryptoLike?
Да. CryptoLike — кастодиальный сервис: платежи приходят на адреса, которыми управляет платформа, а ключи хранятся в отдельном сервисе подписи, который подписывает только запросы, прошедшие его проверки. Ваш баланс — запись в леджере. Куда уходят деньги, решаете вы через выплаты: для выплат из кабинета и Telegram нужен свежий код 2FA, для выплат через API — ключ с правом withdraw, а белый список включается по желанию.
Может ли CryptoLike сам перевести средства в холодное хранение?
Нет. Когда горячий баланс превышает лимит актива, система только предлагает перевод. Каждое предложение оператор подтверждает свежим кодом 2FA, а неподтверждённое истекает, и ничего не переводится. Холодный адрес меняется только двумя разными администраторами.
Почему выплата долго показывает «Обрабатывается»?
Выплата ждёт подписи и отправки. Обычно долгое ожидание значит, что горячий кошелёк этого актива нужно пополнить из холодного хранения, чтобы провести полную сумму. Сумма всё это время заблокирована на балансе, а выплату можно отменить, пока она в статусе pending.
Как часто баланс сверяется с блокчейном?
Автоматически, по расписанию. Задача сверки сравнивает балансы депозитных и горячих адресов платформы в каждом блокчейне с леджером и поднимает тревогу при любом расхождении. Сам леджер работает только на добавление: записи нельзя изменить или удалить.
Стоит ли держать всю криптовалюту на CryptoLike?
Это ваше решение. Распространённый порядок — держать рабочий остаток для выплат и возвратов, а излишек регулярно выводить на кошелёк под своим контролем выплатой на адрес из белого списка, со вторым подтверждением выше заданного вами порога.