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

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

В блокчейнах с моделью газа, чтобы отправить токен, мало иметь на балансе сам переводимый актив — нужно ещё чем-то заплатить сетевую комиссию (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.

Модель

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'а самому себе.

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

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

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

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

Семантика MaxGasPrice

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

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

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

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

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

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

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

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

Управление через 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 конфигураций.