# Сховище (env)

> Сховище контрактів NeuroWASM — get_storage і set_storage з цінами fuel і лімітом зростання, а також заплановані функції сховища.

Source: https://docs.nro.world/uk/neurowasm/storage

Ключ-значення для кожного контракту (ізольований префікс). Поточний хост працює з ключами й значеннями — рядками UTF-8. Записи оплачуються fuel і мають ліміт.

## `get_storage` <Badge type="tip" text="працює" />

```text
get_storage(key_ptr, key_len, val_ptr, val_max) → i32
```

Копіює `min(value_len, val_max)` байтів у `val_ptr`. Відсутній ключ → довжина `0`. Некоректний UTF-8 чи вказівник → `-1`.

**Fuel:** `FUEL_STORAGE_READ_BASE + PER_BYTE × len` (за замовчуванням `800 + 5×len`). Вичерпано fuel → `-1`.

**Аналоги:** `storage.get` у CosmWasm, `storage_read` у NEAR.

## `set_storage` <Badge type="tip" text="працює" />

```text
set_storage(key_ptr, key_len, val_ptr, val_len)
```

Пише в накладку і `storage_changes`. Відмовляє (нічого не пише) при некоректному UTF-8, вичерпаному fuel або перевищенні ліміту зростання.

**Fuel:** `FUEL_STORAGE_WRITE_BASE + PER_BYTE × (ключ+значення)` (за замовчуванням `5000 + 50×nbytes`).

**Ліміт:** сумарно нових байтів ≤ `MAX_STATE_GROWTH_BYTES_PER_TX` (64 KiB).

## `remove_storage` <Badge type="info" text="заплановано" />

```text
remove_storage(key_ptr, key_len) → i32
```

`1`, якщо ключ існував, інакше `0`.

## `storage_has` <Badge type="info" text="заплановано" />

```text
storage_has(key_ptr, key_len) → i32
```

## `storage_usage` <Badge type="info" text="заплановано" />

```text
storage_usage() → i64
```

Загальна кількість байтів, збережених цим контрактом (сумісно з NEAR).
