# Газ і ліміти

> Ліміти й ціни fuel у NeuroWASM — бюджет fuel на виклик, розмір байткоду, глибина викликів, зростання сховища і як fuel перетворюється на газ транзакції.

Source: https://docs.nro.world/uk/neurowasm/gas-limits

До виклику контракту застосовуються два окремі лічильники:

- **Fuel** усередині VM — кожна інструкція WASM і host-функція спалює fuel; виклик має бюджет.
- **Газ** на рівні транзакції — те, що платить відправник, в uNRO. Див. [Газ і комісії](/uk/learn/gas).

Після виклику спалений fuel перетворюється на одиниці газу: `ceil(fuel / NEUROCHAIN_FUEL_PER_GAS_UNIT)`, щонайменше 1; за замовчуванням курс — 20 000 fuel за одиницю газу. Передплачені за виклик контракту 50 одиниць (`GAS_CONTRACT_CALL`) потім повертаються або доплачуються до фактичного значення.

## Ліміти

| Константа | Значення | Що відбувається на межі |
|-----------|----------|-------------------------|
| `MAX_CONTRACT_GAS` | 1 000 000 fuel на виклик верхнього рівня | Fuel вичерпано → виклик переривається, усе відкочується, комісія й nonce витрачаються |
| `MAX_BYTECODE_SIZE` | 512 KiB | Розгортання відхилено |
| `MAX_CALL_DEPTH` | 8 вкладених `call_contract` | `call_contract` повертає `-1` |
| `MAX_STATE_GROWTH_BYTES_PER_TX` | 64 KiB нового сховища на виклик | `set_storage` нічого не пише |
| Один запит `allocate` | 1 MiB | Запит обрізається |

## Ціни fuel host-функцій

| Host-функція | Fuel | Константа |
|--------------|------|-----------|
| `get_storage` | 800 + 5 × довжина значення | `FUEL_STORAGE_READ_BASE`, `FUEL_STORAGE_READ_PER_BYTE` |
| `set_storage` | 5 000 + 50 × (довжина ключа + значення) | `FUEL_STORAGE_WRITE_BASE`, `FUEL_STORAGE_WRITE_PER_BYTE` |

Інші host-функції та звичайні інструкції WASM обліковуються стандартними цінами fuel інтерпретатора. Заплановані AI host-функції отримають кожна свою іменовану ціну fuel.

Це константи протоколу; контрактам і клієнтам не варто покладатися на те, що їхні точні значення не зміняться.
