For the complete documentation index, see llms.txt. This page is also available as Markdown.

关键概念

面向开发者的核心 Solana 和 Rome EVM 术语——程序、账户、PDA、CPI、SPL 代币,以及原子执行与迭代执行。

构建 Rome Protocol 所需的核心术语和概念。

Solana 概念

程序 — Solana 中相当于智能合约的概念。程序是部署在链上的无状态可执行程序。Rome EVM 本身就是一个 Solana 程序。

账户 — Solana 上的所有状态都存储在账户中。每个账户都有所有者(程序)、余额(lamports)和数据。不同于以太坊,代码和状态存储在不同的账户中。

PDA(程序派生地址) — 由种子和程序 ID 派生出的确定性地址。PDA 允许程序在没有私钥的情况下“拥有”账户。Rome 使用 PDA 将以太坊地址映射到 Solana 账户。

CPI(跨程序调用) — 一个 Solana 程序在同一笔交易中调用另一个程序。Rome EVM 合约正是通过这种方式与 Jupiter、Kamino、SPL Token 以及其他 Solana 程序交互。

SPL Token — Solana 的标准代币程序。相当于以太坊上的 ERC-20。Solana 上所有可替代代币(USDC、SOL 等)都是 SPL 代币。

Token-2022 — 下一代 SPL 代币程序,支持 Transfer Hooks、Confidential Transfers 和 Permanent Delegates 等扩展。

Transfer Hook — Token-2022 的一种扩展,在每次 transfer_checked 调用时都会触发一个程序。

ATA(关联代币账户) — 针对特定钱包 + 铸币对的确定性代币账户。每位用户持有的每种代币都有一个 ATA。

Lamports — SOL 的最小单位。1 SOL = 1,000,000,000 lamports(10^9)。

计算单元(CU) — Solana 中相当于以太坊 gas 的概念。每笔交易都有计算预算(默认约 20 万 CU,最大约 140 万 CU)。操作会消耗 CU。

Rome 概念

Rome EVM 程序 — 包含 EVM 字节码解释器的 Solana 程序。每个环境都会部署到特定的程序 ID。

链 ID — Rome 上的每个应用都有自己的 EVM chain ID。这会创建相互隔离的 EVM 环境,但它们共享底层同一份 Solana 状态。

原子执行(VmAt) — 完全在一笔 Solana 交易内执行的 EVM 交易。用于大多数操作。

迭代执行(VmIt) — 跨多笔 Solana 交易拆分执行的 EVM 交易,每一步都会尽可能装入在一笔 Solana 交易计算预算内可容纳的尽量多的操作码(自适应,而非固定数量)。用于 BN254 pairing 等计算密集型操作。

持有者账户 — 用于存储超过 Solana 1,232 字节交易大小限制的大型 EVM 交易(最高 80 KB)的链上缓冲区。由 SDK 透明管理。

StateHolder — 在迭代执行步骤之间存储序列化虚拟机状态的链上账户。

Rome Proxy — 将以太坊 API 调用转换为 Solana 交易的 JSON-RPC 服务器(端口 9090)。MetaMask 和 Hardhat 通过此处连接。

Hercules — 监控 Solana 上 Rome EVM 事件并生成兼容以太坊的区块数据的区块索引器。

付款账户 — 代表 EVM 用户签名并支付 Solana 交易费用的 Solana 密钥对。由 Proxy 通过 payer 池进行管理。

代币概念

SPL_ERC20 / SPL_ERC20_cached — 在 Rome EVM 内代表 SPL 代币的 ERC-20 包装合约。该包装器直接从底层 SPL 代币账户读取余额——无需单独状态。当前工厂部署的是缓存版本。

ERC20SPLFactory — 为任意 SPL 代币部署包装器的工厂合约。

注册表 — 规范包装器、gas 代币和桥接配置由链下 rome-protocol/registry管理;不存在链上的代币注册表合约。这样可使每种资产都映射到唯一的规范 SPL mint。

预编译合约

标准以太坊预编译合约 — ecrecover (0x01)、SHA-256 (0x02)、RIPEMD-160 (0x03)、identity (0x04)、modexp (0x05)、BN254 ecAdd/ecMul/ecPairing (0x06-0x08)、Blake2f (0x09)。

系统预编译合约 (0xFF...07)— Solidity 中的 PDA 派生和 base58 转换。

CpiProgram 预编译合约 (0xFF...08)— 跨程序调用(invoke / invoke_signed)以及跨状态读取快捷方式。

HelperProgram 预编译合约 (0xFF...09)— ATA/PDA 创建、SPL 转账以及 gas↔lamports 转换;用户通过 PDA 签名进行 SPL 操作的主要入口。

Withdraw 预编译合约 (0x42...16)— 将 SOL 或 SPL 代币从 EVM 提取回 Solana。

缓存轨道系列(0xff…04/05/06/0b)为这些操作提供 CU 高效读取的镜像;合约会始终使用同一条轨道。

交易类型

RheaTx — 在单个 rollup 上执行的一笔 EVM 交易。最常见的类型。

RemusTx — 跨不同 rollup 的多笔 EVM 交易,原子执行。若任一交易失败,全部回滚。

RomulusTx — 将 EVM 交易与原生 Solana 指令合并为一次原子操作。最强大的类型——可在一笔交易中混合 Solidity 和 Solana。

下一步

最后更新于

这有帮助吗?