> ## Documentation Index
> Fetch the complete documentation index at: https://docs.li.fi/llms.txt
> Use this file to discover all available pages before exploring further.

# Addresses

> Canonical deployment addresses for the Composer on-chain contracts.

Composer 在每一条受支持的 EVM 链上都会部署一小组合约。你的钱包将编译后的交易发送到**你的每用户 proxy**（或者，在该 proxy 首次使用时，发送到 **ProxyFactory**，由它部署 proxy 并原子地运行 flow）。proxy 会 `delegatecall` 到 **VM**，即共享逻辑合约，因此 flow 在你自己的 proxy 的余额与存储上下文中执行。其余合约用于在执行期间支持算术与不变量检查。

| Contract                 | Role                                                                                                                                                     |
| ------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **VirtualMachine**       | 执行已编译 Flow 的共享逻辑。每个 proxy 都会 `delegatecall` 到 VM，它**不是** `transactionRequest.to`。                                                                        |
| **ProxyFactory**         | 为每个签名者确定性地派生其专属执行 proxy，并在该 proxy 首次使用时作为 `transactionRequest.to`（`deployAndExecute`）。参见 [Account model](/composer/composer-api/overview#account-model)。 |
| **ArithmeticProcessor**  | 在执行期间求值 `core.*` 算术指令。                                                                                                                                   |
| **InvariantChecker**     | 强制执行烘焙进 calldata 的 guard 断言。                                                                                                                             |
| **FlashloanRegistry**    | 为 [`flashloan`](/composer/composer-api/materialisers/flashloan) materialiser 解析闪电贷提供方。                                                                   |
| **LiFiFlashloanAdapter** | 发起闪电贷并路由提供方回调，使 `lifi.flashloanRepay` 能够结算每一段（leg）。                                                                                                      |

<Note>
  **硬编码之前先核实。** 最可靠的来源是 `POST /compose` 响应本身：`userProxy` 是你的每用户 proxy，而 `transactionRequest.to` 在 proxy 部署后就是同一个 proxy（或者首次使用时为 ProxyFactory）。它们始终与生成你 calldata 的那次部署相匹配。请将下面的表格视为便利用途的快照。
</Note>

## Canonical (production)

由 `https://composer.li.quest` 提供。这些地址在**每一条受支持的链上都相同**。

| Contract            | Address                                      |
| ------------------- | -------------------------------------------- |
| VirtualMachine      | `0xb57Ce43Be47DF611C98EB0943e5D36EBDb36cc6D` |
| ProxyFactory        | `0xe174D02351656a883f6626497C86684e849efB35` |
| InvariantChecker    | `0xe17006F4DfE8Aa2bf80589E497ad98D470f66fef` |
| ArithmeticProcessor | `0x46C2c852E6FEfaF173dFe49457f0Fe61Dc3F587a` |

## Addresses from the compile response

你几乎不需要硬编码任何内容：每个 `POST /compose` 响应都携带集成实际会触及的两个地址，且它们始终与生成 calldata 的那次部署相匹配。

```ts theme={"system"}
const result = await builder.compile({ signer, inputs, sweepTo });

result.transactionRequest.to; // your execution proxy (the ProxyFactory on first use)
result.userProxy;             // your per-signer execution proxy address
```

其余合约（arithmetic processor、invariant checker、flashloan registry、adapter）由编译器在降级（lowering）期间接线，无需从集成代码中引用。
