> For the complete documentation index, see [llms.txt](https://docs.rome.builders/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.rome.builders/zh/kuai-su-kai-shi/why-rome.md).

# 为什么选择 Rome？

Rome 与其他 Solana 上 EVM 方案的差异——原子化 CPI 可组合性、单一共享状态，以及支持自定义 gas 代币的主权应用链。

有多个项目将 EVM 兼容性引入 Solana。Rome 采取了一种根本不同的方法。

## 核心差异化

### 1. 通过 CPI 实现原子级可组合性

Rome 是唯一一个 Solidity 合约可以在同一笔交易内调用 Solana 程序的 EVM 环境。一个 Solidity 函数可以：

```solidity
// 全部在一笔原子交易中：
int256 price = IPyth(PYTH).getPrice("SOL/USD");        // 读取 Pyth 预言机
uint256 quote = IJupiter(JUPITER).getQuote(USDC, SOL);  // 获取 Jupiter 报价
IJupiter(JUPITER).swap(USDC, SOL, amount, minOut);       // 执行兑换
IKamino(KAMINO).deposit(SOL, collateralAmount);          // 存入 Kamino
```

如果任何一步失败，整个交易都会回滚。没有部分执行，没有竞争条件。

### 2. 单一状态

在 Rome 上，SPL 代币及其 ERC-20 表示形式共享同一个底层账户。当 Solidity 合约转移 USDC 时，移动的是实际的 SPL USDC，而不是包装后的副本。

这意味着：

* **没有流动性碎片化** — Solana DeFi 和 EVM DeFi 共享同一个资金池
* **没有桥接风险** — 由于不存在桥，所以没有可被利用的桥
* **实时可组合性** — EVM 合约会立即看到 Solana 状态变化

### 3. 应用主权

Rome 上的每个应用都会获得自己的 EVM 环境：

* **自定义链 ID** — 你的应用就是一条独立的链
* **自定义 Gas 代币** — 任意 SPL 代币，通过 Meteora LP 池定价
* **Gas 收入** — 费用累积到你的应用，而不是 Rome 协议
* **完整的 EVM 工具链** — 你的用户使用 MetaMask 连接，你的开发者使用 Hardhat

## 何时使用 Rome

**在以下情况下使用 Rome：**

* 你希望 EVM 合约直接访问 Solana DeFi
* 你希望在 Solana 上拥有一条主权 EVM 链，并使用自己的 Gas 代币
* 你正在迁移需要 Solana 速度和流动性的 Ethereum 合约
* 你需要在 EVM 和 Solana 程序之间进行原子操作

**在以下情况下考虑替代方案：**

* 你只需要标准的 Solana 程序（使用原生 Solana/Anchor）
* 你需要 Ethereum 主网结算（使用传统 L2）
* 你需要跨链消息传递，但不需要 EVM 执行（直接使用 Wormhole/Hyperlane）

## 接下来

* [架构](/zh/kuai-su-kai-shi/architecture.md) — Rome EVM 如何在 Solana 内部运行
* [快速入门](/zh/kuai-su-kai-shi/quickstart.md) — 部署你的第一个合约


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.rome.builders/zh/kuai-su-kai-shi/why-rome.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
