For the complete documentation index, see llms.txt. This page is also available as Markdown.

Резервы: обычные, связанные и из файлов

Резерв показывает, сколько средств обменник готов выдать клиенту. Если резерв меньше суммы заявки или настроен неправильно, направление может скрыться, форма может не дать создать заявку, а оператор получит спорную ситуацию.

Какие виды резервов есть

Вид
Что означает
Когда использовать

Обычный резерв валюты

Сумма хранится у конкретной валюты

Основной вариант для большинства обменников

Фиксированный резерв

Сумма задается вручную и не должна автоматически меняться

Когда владелец хочет держать публичный лимит руками

Связанный резерв

Резерв одной валюты привязан к другому резерву

Когда несколько валют используют один общий остаток

Резерв из файла

Сумма приходит из удаленного txt-файла через ключ

Когда внешний сервис публикует остатки

Резерв направления

Дополнительная логика в настройке направления

Когда нужно ограничить конкретную пару

Обычные резервы и резервы из файлов — разные вещи. Файл не заменяет весь раздел резервов. Файл дает ключ и сумму, а обычный резерв валюты должен быть явно привязан к этому ключу.

Список резервов

Элемент
Как работает
Что проверять

Валюта

К какой валюте относится резерв

Правильный код, сеть и платежная система

Сумма

Текущий доступный остаток

Соответствует ли реальным средствам

Быстрое изменение суммы

Позволяет обновить резерв прямо из списка

После правки проверить журнал

Дерево связанных резервов

Показывает, какие резервы прикреплены к корню

Нет ли случайной привязки

Сортировка

Меняет порядок корневых резервов

Удобно для операторов

Настройки

Точность отображения и включение файловых резервов

Нужно для файлового режима

Создание и обновление обычного резерва

Поле
Как работает
Рекомендация

Валюта

Выбор активной валюты

Выбирайте точную сеть, например USDT TRC20

Сумма

Добавляемая или задаваемая сумма

Указывайте фактический доступный остаток

Комментарий

Причина ручного изменения

Пишите коротко: "пополнение", "коррекция", "вывод"

Если резерв по активной валюте отсутствует, система может создать его автоматически с нулевой суммой. Это удобно, но нулевой резерв не означает, что валюта готова к работе.

Редактирование резерва

Поле
Как работает
Важно

Сумма

Ручное значение резерва

Не завышайте без реальных средств

Фиксированный резерв

Оставляет резерв под ручным контролем

Может мешать автоматическому изменению

Комментарий

Попадает в историю изменения

Помогает расследовать спор

Резерв из файла

Привязывает обычный резерв к файловому ключу

Доступно только если включены резервы из файла

Связанный резерв

Делает текущий резерв дочерним от другого

Нельзя привязывать резерв к самому себе

Как работает связанный резерв

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

Перед привязкой проверьте:

  1. Какая валюта должна быть главной.

  2. Какие направления используют каждую валюту.

  3. Не получится ли двойной учет одного и того же остатка.

  4. Как будет выглядеть резерв на сайте.

История резервов

Журнал резерва показывает ручные изменения суммы.

Поле
Что означает

Было

Сумма до изменения

Стало

Сумма после изменения

Тип

Пополнение или уменьшение

Менеджер

Кто изменил резерв

Дата

Когда произошло изменение

Комментарий

Причина, если ее указали

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

Настройки резервов

Настройка
Как работает
Рекомендация

Количество знаков резерва

Сколько знаков после запятой показывать

Для crypto можно больше, для фиата меньше

Резервы из файла

Включает возможность привязать резерв к файловым ключам

Включайте только если настроен источник и cron

Резервы из файлов

Резервы из файлов нужны, когда внешний источник публикует остатки в простом txt-файле. Система читает файл, находит строки формата ключ : сумма, создает или обновляет файловые ключи, а затем обновляет обычные резервы, которые к этим ключам привязаны.

Формат файла

Правила:

Правило
Что означает

Одна строка — один резерв

Название : сумма

Название может быть любым

Reserve, ReserveBitcoin, Everyone — это примеры, не обязательные имена

Разделитель

Используется двоеточие :

Пустые строки можно пропускать

Они не создают резерв

Комментарии можно писать через #, ;, //

Такие строки игнорируются

Сумма должна быть числом

Неверная сумма попадет в ошибку

Максимальный размер файла

До 10 МБ

Источники файлов

Поле
Как работает
Пример

Название источника

Понятное имя файла/поставщика

Main reserve file

Ссылка

HTTP/HTTPS ссылка на txt-файл

https://example.com/reserve.txt

Статус

Включен ли источник

Включайте после проверки preview

Последняя проверка

Когда источник проверялся

Если давно, проверить cron

Последний успех

Когда файл успешно прочитался

Важнее, чем просто дата проверки

Ошибка

Почему файл не прочитался

Неверный URL, недоступен файл, пустой файл

Размер и тип файла

Информация о последнем ответе

Помогает понять, что сервер отдает не txt

Количество ключей

Сколько строк найдено

Если 0, формат файла неправильный

Файловые ключи

Поле
Как работает
Важно

Источник

К какому txt-файлу относится ключ

Один и тот же ключ в разных источниках считается отдельно

Название

Человекочитаемое имя ключа

Должно совпадать со строкой файла или быть понятным

Key

Нормализованный ключ

Используется системой для сравнения

Amount

Сумма из файла

Следующая синхронизация может перезаписать ручную правку

Статус

Активен ли ключ

Неактивный ключ не обновляет привязанные резервы

Количество знаков

Точность суммы

До 18 знаков

Last seen

Когда ключ был найден в файле

Если давно, строка исчезла из файла

Last error

Ошибка по ключу

Например ключ больше не найден

Привязанные резервы

Сколько обычных резервов используют ключ

Если больше 0, удалить ключ нельзя

Preview при создании ключа

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

Поле
Что означает

Файл открыт

Удаленный файл доступен

Резерв найден

Ключ найден в файле

Нормализованный ключ

Как система будет сравнивать строку

Сумма

Значение, которое будет записано

Строка

Номер строки в файле

Raw value

Исходное значение из файла

Если preview не находит ключ, не сохраняйте привязку вслепую. Сначала исправьте название или файл.

Как подключить резерв из файла

  1. Откройте "Резервы".

  2. Нажмите настройки и включите "Резервы из файла".

  3. Откройте "Резервы из файлов".

  4. Создайте источник: название и ссылку на txt-файл.

  5. Нажмите синхронизацию источника или дождитесь cron.

  6. Проверьте, что файловые ключи появились.

  7. Откройте обычный резерв валюты.

  8. В поле "Резерв из файла" выберите нужный ключ.

  9. Сохраните.

  10. Проверьте, что сумма обычного резерва стала равна сумме ключа.

  11. Проверьте направление на сайте.

CRON для файловых резервов

Автообновление файловых резервов выполняется через фоновые задачи. На сервере должен работать Laravel scheduler.

Команда cron для FastPanel:

Важно:

Правило
Почему важно

Между /opt/php84/bin/php и путем к проекту должен быть пробел

Без пробела команда не запустится

Путь должен быть полным и точным

Используйте путь проекта как в FastPanel

Нужен PHP 8.4 FastPanel

Не используйте /usr/bin/php, если проект настроен на /opt/php84/bin/php

Scheduler должен запускаться каждую минуту

Иначе reserve:update не будет регулярно выполняться

Почему резерв не обновился из файла

Причина
Что проверить

Выключены резервы из файла

Настройки резервов

Источник выключен

Статус источника

URL недоступен

Открыть ссылку, проверить SSL, firewall, HTTP-код

Файл слишком большой

Лимит 10 МБ

В файле нет корректных строк

Формат ключ : сумма

Ключ не найден

Название ключа и preview

Ключ выключен

Статус файлового ключа

Обычный резерв не привязан

Поле "Резерв из файла" в резерве валюты

Cron не работает

Проверить schedule:run, PHP 8.4, логи

Очередь/фоновые процессы стоят

Проверить серверные процессы

Как резерв влияет на направления

Связь
Что происходит

Резерв валюты "Получаю" маленький

Клиент не сможет создать заявку больше резерва

В направлении включено скрытие при малом резерве

Пара может пропасть из сайта или XML

Максимальный отображаемый резерв меньше фактического

Клиент видит меньший остаток

Резерв связан с другим

Доступность зависит от общего остатка

Резерв из файла устарел

Сайт может показывать старый лимит

Практические примеры

Небольшой стартовый обменник

Настройка
Рекомендация

Резерв USDT TRC20

Реальный остаток, например 1000-3000 USDT

Max заявки

Ниже резерва, например 200-500 USDT

Отображаемый резерв

Можно показать меньше фактического

Файл резервов

Не нужен, если остатки ведутся вручную

Обменник с внешним учетом остатков

Настройка
Рекомендация

Источник файла

Один источник на поставщика остатков

Ключи

Понятные имена: USDTTRC20, BTC, RUBCARD

Обычные резервы

Привязать каждую валюту к своему ключу

Cron

Обязательно каждую минуту через PHP 8.4

Диагностика

Смотреть last_success_at, last_error, last_seen_at

Важные предупреждения

Не ставьте резерв выше фактической суммы. Резерв напрямую влияет на то, сможет ли клиент создать заявку.

Не удаляйте файловый источник или ключ, если к нему привязаны обычные резервы. Сначала отвяжите резервы или переведите их на ручной режим.

Не путайте резерв валюты и резерв направления. Если валюта имеет резерв, но направление все равно скрыто, проверьте лимиты и настройки направления.

Связанные разделы

Валюты, Полный порядок настроек валют, Направления обмена, Комиссии направления, CRON и процессы, Техническая настройка сервера.

Последнее обновление

Это было полезно?