> For the complete documentation index, see [llms.txt](https://docs.aftermath.finance/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.aftermath.finance/ru/bessrochnye-fyuchersy/architecture/account/gasless-trading.md).

# Торговля без газа (GasPool)

Оплата газа агентского кошелька из общего пула

В приложении GasPool называется Gas Credit. [Торговля в 1 клик](/ru/bessrochnye-fyuchersy/architecture/account/one-click-trading.md) настраивает и использует его за вас.

Если вы запускаете ботов или программные стратегии, не нужно пополнять каждый агентский кошелёк SUI для оплаты газа. **GasPool** может спонсировать транзакции агентского кошелька из единого предоплаченного баланса.

GasPool работает как предоплаченная карта для газа. Вы пополняете его SUI (или USDC) с основного кошелька, а протокол списывает стоимость газа из пула каждый раз, когда агентский кошелёк совершает сделку. Агентскому кошельку достаточно держать только обеспечение в USDC.

## Как это работает

Основной кошелёк создаёт GasPool, вносит в него средства и добавляет агентский кошелёк в белый список. С этого момента, вызывая поддерживаемый торговый эндпоинт, агентский кошелёк передаёт поле `sponsor` с основным кошельком и его многоразовой подписью условий. API собирает транзакцию, берёт газ из пула и возвращает `txKind` и `sponsorSignature`. Агентский кошелёк подписывает транзакцию и отправляет её с обеими подписями.

Агентский кошелёк никогда не работает с SUI. Пополняйте GasPool с основного кошелька, когда баланс становится низким.

## Настройка

### Шаг 1. Создайте GasPool

С основного кошелька создайте и пополните GasPool одной транзакцией:

**Эндпоинт:** `POST /api/gas-pool/transactions/create`

```json
{
  "walletAddress": "<your-primary-wallet>",
  "deferShare": false,
  "initialDepositAmount": "1000000000n"
}
```

`initialDepositAmount` указывается в MIST (1 SUI = 1,000,000,000 MIST). Внести средства можно и позже.

### Шаг 2. Внесите средства (необязательное пополнение)

**Эндпоинт:** `POST /api/gas-pool/transactions/deposit`

Внесите SUI напрямую:

```json
{
  "walletAddress": "<your-primary-wallet>",
  "amount": "500000000n"
}
```

Или внесите USDC (либо любую другую монету). Перед внесением эндпоинт автоматически обменивает её на SUI через маршрутизатор Aftermath:

```json
{
  "walletAddress": "<your-primary-wallet>",
  "coinType": "0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC",
  "amount": "5000000n",
  "slippage": 0.01
}
```

Пополнить GasPool можно, не имея SUI, — любым токеном, который у вас уже есть.

### Шаг 3. Предоставьте доступ агентскому кошельку

**Эндпоинт:** `POST /api/gas-pool/transactions/grant`

```json
{
  "walletAddress": "<your-primary-wallet>",
  "targetWalletAddress": "<your-agent-wallet>"
}
```

### Шаг 4. Совершайте спонсируемые сделки

При вызове любого эндпоинта `/api/perpetuals/account/transactions/...` с агентского кошелька добавляйте поле `sponsor`:

```json
{
  "walletAddress": "<your-agent-wallet>",
  "accountId": "424n",
  "sponsor": {
    "walletAddress": "<your-primary-wallet>",
    "bytes": "<base64 of Aftermath Terms and Conditions>",
    "signature": "<primary-wallet signature>",
    "gasBudget": 50000000
  }
}
```

`gasBudget` — необязательный параметр в MIST. Если он не указан, бюджет определяет сервис. Подпишите точное UTF-8-сообщение `Aftermath Terms and Conditions`, передайте его представление в base64 в `bytes` и повторно используйте эту подпись для подключения кошелька.

API возвращает:

* `txKind` — транзакцию в кодировке base64, которую должен подписать агентский кошелёк
* `sponsorSignature` — подпись спонсора газа

Агентский кошелёк подписывает `txKind`, а затем отправляет транзакцию с обеими подписями.

## Управление GasPool

| Действие                             | Эндпоинт                                   |
| ------------------------------------ | ------------------------------------------ |
| Проверить баланс и белый список      | `POST /api/gas-pool/pool`                  |
| Внести дополнительные средства       | `POST /api/gas-pool/transactions/deposit`  |
| Вывести SUI                          | `POST /api/gas-pool/transactions/withdraw` |
| Предоставить доступ                  | `POST /api/gas-pool/transactions/grant`    |
| Отозвать доступ                      | `POST /api/gas-pool/transactions/revoke`   |
| Сделать отложенный пул общим (share) | `POST /api/gas-pool/transactions/share`    |
| Спонсировать транзакцию напрямую     | `POST /api/gas-pool/transactions/sponsor`  |

### Композиция PTB

Укажите `deferShare: true` при создании пула, чтобы получить `gasPoolArg` и `sharePolicyArg`, а затем передайте эти аргументы в `/api/gas-pool/transactions/share` дальше в той же составной транзакции. Депозиты могут использовать существующие `txKind` и `coinArg`. Для вывода можно указать `deferTransfer: true`, чтобы получить `withdrawnCoinArg` для другой команды PTB.

Эндпоинт прямого спонсирования принимает многоразовую подпись условий, необязательный `txKind` и необязательный `gasBudget` в MIST. Он возвращает `transaction`, `sponsorSignature` и `digest`; подпишите `transaction` как отправитель и отправьте обе подписи.

Ошибки GasPool имеют стабильные коды: `2030` — недостаточно средств, `2031` — сервис временно недоступен, `2032` — ошибка авторизации, `2033` — транзакцию невозможно спонсировать. Ошибки проверки подписи возвращают `2034`.

## Альтернатива: локальное спонсирование

Если вы не хотите использовать GasPool, можно спонсировать транзакции самостоятельно: перед отправкой основной кошелёк подписывает данные транзакции как спонсор газа. Так вы полностью контролируете спонсирование без GasPool.
