# 스토리지 (env)

> NeuroWASM 컨트랙트 스토리지 — fuel 가격과 증가 한도가 있는 get_storage와 set_storage, 그리고 계획된 스토리지 함수.

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

컨트랙트별 KV(격리된 접두사). 현재 호스트는 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 소진(OOG) → `-1`.

**유사 기능:** CosmWasm `storage.get`, NEAR `storage_read`.

## `set_storage` <Badge type="tip" text="작동 중" />

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

오버레이와 `storage_changes`에 씁니다. 잘못된 UTF-8, fuel 소진(OOG), 증가 한도 초과 시 거부됩니다(쓰지 않음).

**Fuel:** `FUEL_STORAGE_WRITE_BASE + PER_BYTE × (key+val)`(기본값 `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 호환).
