# 上下文（env）

> NeuroWASM 上下文宿主函数——调用者身份、区块高度、余额，以及用于抗闪电质押投票的历史质押——还有计划中的上下文函数。

Source: https://docs.nro.world/zh/neurowasm/context

权威的身份和链上下文。**绝不**从用户 JSON 中获取调用者、高度或质押。

## `get_caller` <Badge type="tip" text="已上线" />

```text
get_caller(out_ptr, out_max) → i32
```

直接调用者（EVM 中的 `msg.sender`）：顶层时为交易签名者；嵌套 `call_contract` 时为父合约。在真实交易上下文之外为空。

**类比：** CosmWasm `info.sender`，NEAR `predecessor_account_id`。

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

本合约的 `.app` 地址（`current_account`）。

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

根交易的签名者（在嵌套调用中与调用者不同）。

## `get_block_height` <Badge type="tip" text="已上线" />

```text
get_block_height() → i64
```

宿主为本交易提供的高度（在交易上下文之外为 `0`）。用于时间锁 / 投票期。

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

Unix 时间戳（毫秒/纳秒——命名常量）。每个区块内确定。

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

本次执行所在的分片 id。

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

上一级调用者附带的 uNRO。

## `get_balance` <Badge type="tip" text="已上线" />

```text
get_balance(addr_ptr, addr_len) → i64
```

来自宿主快照的原生余额（uNRO）（包含调用内转账的模拟结果）。出错时返回 `-1`。

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

本次调用剩余的 fuel。

## `get_stake` <Badge type="tip" text="已上线" />

```text
get_stake(addr_ptr, addr_len) → i64
```

当前的自有质押（uNRO）。宿主可能预加载 `stake:{addr}`。

## `get_stake_at` <Badge type="tip" text="已上线" />

```text
get_stake_at(addr_ptr, addr_len, height: i64) → i64
```

在 `height` 或之前的历史自有质押（用于抗闪电质押的投票）。没有历史记录 / 没有调度器时返回 `0`。
