Газ-станция и автозаправка
В блокчейнах с моделью газа, чтобы отправить токен, мало иметь на балансе сам переводимый актив — нужно ещё чем-то заплатить сетевую комиссию (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.
Модель
| Сущность | Сколько | Назначение |
|---|---|---|
| Газ-станция | одна на 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
явно.
Конкретные текущие значения по сетям — на отдельной странице Значения по умолчанию.
Жизненный цикл настройки
- Назначить газ-станцию. Один vault workspace'а помечается как источник газа. При этом для каждого его базового актива создаются per-asset конфигурации со значениями по умолчанию.
- Включить автозаправку на тех vault'ах, газ которых нужно пополнять автоматически. Включение тоже досоздаёт недостающие per-asset конфигурации по дефолтам.
- При необходимости — переопределить пороги (
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 конфигураций.