# 跨合约调用（env）

> NeuroWASM 中的同步跨合约调用——call_contract、嵌套调用中的调用者身份、共享日志和深度限制。

Source: https://docs.nro.world/zh/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`（超出深度 / 无调度器 / 参数无效）。

**类比：** CosmWasm `WasmMsg::Execute`（在那里会排队执行），NEAR `promise_create`（在那里是异步的）。

## `call_contract_with_value` <Badge type="info" text="计划中" />

同上，另外附带 uNRO，作为子合约的附带存款。
