Перейти к содержанию

Газ-станция и автозаправка

В блокчейнах с моделью газа, чтобы отправить токен, мало иметь на балансе сам переводимый актив — нужно ещё чем-то заплатить сетевую комиссию (gas). В таких сетях комиссия платится отдельным базовым активом: ETH в Ethereum, BNB в BNB Chain и т. д., а токены (например, USDT) живут «поверх» него. Если вы держите на адресе только токен, но базового актива на нём нет, сеть не примет перевод — платить за газ нечем.

Газ-станция решает эту проблему автоматически. Это назначенный vault, который выступает источником базового актива для остальных vault'ов того же workspace: когда на адресе заканчивается газ, газ-станция переводит туда базовый актив, и транзакция пользователя проходит без ручного вмешательства. По смыслу это аналог Gas Station у Fireblocks.

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

  • Газ-станцияоткуда берётся газ. Один vault на workspace, из кошельков которого финансируются заправки.
  • Автозаправка (autofuel)куда и включена ли. Признак на каждом отдельном vault: разрешено ли пополнять его газом автоматически. Газ-станция может быть назначена, но пока ни на одном vault не включена автозаправка, заправок не происходит.

Где применима

Газ как отдельная сущность есть не во всех блокчейнах, поэтому газ-станция применима только к сетям с моделью газа.

  • Сети с газом (EVM-совместимые: Ethereum и другие EVM-сети) — комиссия за перевод токена платится отдельным базовым активом, поэтому газ может закончиться независимо от баланса токена. Здесь газ-станция и нужна.
  • Остальные сети — газа как отдельной сущности нет: комиссия удерживается из самого перевода (UTXO-сети вроде Bitcoin) либо оплачивается по иной модели (например, ресурсы energy/bandwidth в TRON). Доливать нечего, и газ-станция к таким сетям не применяется.

Список поддерживаемых сетей задаётся конфигурацией

Конкретные базовые активы, для которых работает газ-станция, прописаны в конфигурации платформы — там же лежат и их значения по умолчанию. Если для базового актива сети в конфигурации нет записи, автозаправка по нему просто не выполняется, даже когда газ-станция назначена. Набор сетей расширяется на стороне платформы, а не из пользовательского API.

Mainnet и testnet

Газ-станция работает и в mainnet-, и в testnet-воркспейсах. Набор валют в настройках всегда соответствует сети воркспейса: mainnet-воркспейс видит и настраивает только mainnet-активы, testnet-воркспейс — только их testnet-аналоги (например, ETH в Sepolia). Для testnet-активов действуют свои значения по умолчанию.

Валюта чужой сети недоступна в обе стороны:

  • запрос её конфигурации (GET /gas_station/{cid}) отвечает 404 (GAS_STATION_NOT_FOUND);
  • попытка задать ей конфигурацию (PUT) отклоняется с 400 и кодом GAS_STATION_NETWORK_MISMATCH.

Модель

WorkspaceVault (газ-станция)Vault (autofuel ON)Vault (autofuel OFF)Источник газа. На одинworkspace — одна газ-станция.заправкабазовым активомне заправляется
WorkspaceVault (газ-станция)Vault (autofuel ON)Vault (autofuel OFF)Источник газа. На одинworkspace — одна газ-станция.заправкабазовым активомне заправляется
Сущность Сколько Назначение
Газ-станция одна на workspace vault-источник базового актива для заправок
Per-asset конфигурация по одной на базовый актив пороги и лимиты заправки для конкретной сети
Автозаправка признак на каждом vault разрешает автоматически пополнять газ этого vault'а

Газ-станция не заправляет сама себя

Vault, назначенный газ-станцией, не может быть целью заправки. Попытка включить на нём автозаправку отклоняется с кодом GAS_STATION_CANNOT_ASSIGN_SELF, а сам механизм заправки пропускает случай, когда источник и цель совпадают — чтобы не создать перевод vault'а самому себе.

Параметры заправки

Поведение заправки настраивается отдельно для каждого базового актива (каждой сети). Три параметра задают, когда и насколько пополнять газ. В таблице — названия как в консоли и соответствующие им поля API:

Параметр в консоли Поле API Что задаёт
Порог threshold нижняя граница: как только доступный баланс газа на адресе падает ниже этого значения, запускается заправка
Лимит баланса cap целевой баланс: заправка доливает газ ровно до этого значения (cap − текущий баланс)
Комиссия за газ (макс) max_gas_price максимальная комиссия, которую газ-станция готова заплатить за одну заправку; защита от заправок в момент дорогой сети

Значения передаются и хранятся как целые числа в минимальных единицах актива (wei и т. п.) в виде строк — чтобы не терять точность на больших числах. Должно выполняться cap ≥ threshold > 0.

Семантика max_gas_price

Значение в запросе Эффект
поле не указано значение не меняется
"-1" без ограничения — заправка идёт при любой комиссии сети
"0" комиссия не допускается
положительное число заправка только если сетевая комиссия не выше этого лимита

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

Значения по умолчанию

Для поддерживаемых базовых активов на платформе заданы дефолтные параметры заправки. Они применяются автоматически в момент назначения газ-станции или включения автозаправки — для каждого актива, по которому в vault'е газ-станции есть кошелёк, и затем могут быть переопределены вручную. Если для актива дефолтов нет, заправка по нему просто пропускается, пока вы не зададите cap и threshold явно.

Конкретные текущие значения по сетям — на отдельной странице Значения по умолчанию.

Жизненный цикл настройки

ConfiguredAutofuelOffAutofuelOnвключить автозаправкуна целевом vaultвыключить автозаправкуNotConfiguredназначить vaultгаз-станцией
ConfiguredAutofuelOffAutofuelOnвключить автозаправкуна целевом vaultвыключить автозаправкуNotConfiguredназначить vaultгаз-станцией
  1. Назначить газ-станцию. Один vault workspace'а помечается как источник газа. При этом для каждого его базового актива создаются per-asset конфигурации со значениями по умолчанию.
  2. Включить автозаправку на тех vault'ах, газ которых нужно пополнять автоматически. Включение тоже досоздаёт недостающие per-asset конфигурации по дефолтам.
  3. При необходимости — переопределить параметры («Порог», «Лимит баланса», «Комиссия за газ») для конкретного актива.

После этого никаких ручных действий не требуется: пополнение газа происходит само в момент создания транзакций — см. Как работает автозаправка.

Управление через API

Все операции выполняются в контексте текущего workspace (заголовок X-Workspace-Id). Точные схемы запросов и ответов — в справочнике API.

Действие Метод и путь Право
Назначить vault газ-станцией POST /gas_station/vault/{vid} EditWorkspace
Включить автозаправку на vault POST /vault/accounts/{vid}/autofuel/activate EditWorkspace
Выключить автозаправку на vault POST /vault/accounts/{vid}/autofuel/deactivate EditWorkspace
Обновить конфигурацию актива PUT /gas_station/configuration/currency/{cid} EditWorkspace
Статус газ-станции workspace GET /gas_station ViewWorkspace
Конфигурация конкретного актива GET /gas_station/{cid} ViewWorkspace

Если газ-станция не настроена

GET /gas_station всегда отвечает 200 — с признаком configured: false, когда в workspace газ-станция ещё не назначена. Это не ошибка: значит, автоматических заправок в этом workspace нет.

Действия с газ-станцией фиксируются в журнале аудита: назначение станции, включение и выключение автозаправки, изменение per-asset конфигураций.