# Міжконтрактні виклики (env)

> Синхронні міжконтрактні виклики в NeuroWASM — call_contract, ідентичність викликача у вкладених викликах, спільний журнал і ліміт глибини.

Source: https://docs.nro.world/uk/neurowasm/cross-contract

Фаза A: **синхронні** виклики. Сховище батьківського контракту скидається у спільний журнал перед вкладеним викликом (читання власних записів). `MAX_CALL_DEPTH = 8`.

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

```text
call_contract(addr_ptr, addr_len, input_ptr, input_len, result_ptr, result_max) → i32
```

Викликає інший `.app`. У вкладеному виклику `get_caller` = цей контракт. Записує байти результату в `result_ptr`.

**Повертає:** кількість записаних байтів або `-1` (перевищено глибину / немає диспетчера / некоректні аргументи).

**Аналоги:** `WasmMsg::Execute` у CosmWasm (там ставиться в чергу), `promise_create` у NEAR (там асинхронно).

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

Те саме плюс прикріплення uNRO як депозиту для викликаного контракту.
