> 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/ja/hajimeni/key-concepts.md).

# 重要な概念

開発者向けの、SolanaとRome EVMの必須用語 — program、account、PDA、CPI、SPLトークン、アトミック実行とイテレーティブ実行など。

Rome Protocol 上で構築するための必須用語と概念。

## Solana の概念

**プログラム** — Solana におけるスマートコントラクト相当。プログラムはオンチェーンにデプロイされるステートレスな実行ファイルです。Rome EVM 自体も Solana プログラムです。

**アカウント** — Solana 上のすべての状態はアカウントに存在します。各アカウントには所有者（プログラム）、残高（lamports）、データがあります。Ethereum とは異なり、コードと状態は別々のアカウントに保存されます。

**PDA（Program Derived Address）** — シードとプログラム ID から導出される決定論的アドレス。PDA により、プログラムは秘密鍵なしでアカウントを「所有」できます。Rome は PDA を使って Ethereum アドレスを Solana アカウントにマッピングします。

**CPI（Cross-Program Invocation）** — 同一トランザクション内で、ある Solana プログラムが別のプログラムを呼び出すこと。Rome EVM のコントラクトが Jupiter、Kamino、SPL Token など他の Solana プログラムとやり取りする仕組みです。

**SPL Token** — Solana の標準トークンプログラム。Ethereum の ERC-20 に相当します。Solana 上のすべての代替可能トークン（USDC、SOL など）は SPL トークンです。

**Token-2022** — Transfer Hooks、Confidential Transfers、Permanent Delegates などの拡張を備えた次世代の SPL トークンプログラム。

**Transfer Hook** — すべての `transfer_checked` 呼び出し。

**ATA（Associated Token Account）** — 特定のウォレット + ミントの組み合わせに対して決定論的に作られるトークンアカウント。各ユーザーは、保有するトークンごとに 1 つの ATA を持ちます。

**Lamports** — SOL の最小単位。1 SOL = 1,000,000,000 lamports（10^9）。

**Compute Units（CU）** — Ethereum の gas に相当する Solana の単位。各トランザクションには計算予算があり（デフォルト約 200K CU、最大約 1.4M CU）、操作は CU を消費します。

## Rome の概念

**Rome EVM プログラム** — EVM バイトコードインタープリタを含む Solana プログラム。環境ごとに特定のプログラム ID にデプロイされます。

**チェーンID** — Rome 上の各アプリケーションには独自の EVM chain ID が割り当てられます。これにより、同じ基盤の Solana 状態を共有する独立した EVM 環境が作られます。

**原子的実行（VmAt）** — 1 つの Solana トランザクション内で完全に実行される EVM トランザクション。ほとんどの操作で使用されます。

**反復実行（VmIt）** — 複数の Solana トランザクションに分割された EVM トランザクションで、各ステップでは 1 回の Solana トランザクションの計算予算に収まるだけの opcode を詰め込みます（固定数ではなく適応的）。BN254 ペアリングのような計算集約的な操作で使用されます。

**保有アカウント** — 4 KB の Solana（v1）トランザクションサイズ制限を超える大きな EVM トランザクション（最大 80 KB）を保存するオンチェーンバッファ。SDK によって透過的に管理されます。

**StateHolder** — 反復的な実行ステップ間でシリアライズされた VM 状態を保存するオンチェーンアカウント。

**Rome Proxy** — Ethereum API 呼び出しを Solana トランザクションに変換する JSON-RPC サーバー（ポート 9090）。MetaMask や Hardhat はここに接続します。

**Hercules** — Solana 上の Rome EVM イベントを監視し、Ethereum 互換のブロックデータを生成するブロックインデクサー。

**Payer** — EVM ユーザーに代わって Solana トランザクションに署名し、手数料を支払う Solana の keypair。Proxy が payer pool を通じて管理します。

## トークンの概念

**SPL\_ERC20 / SPL\_ERC20\_cached** — Rome EVM 内で SPL トークンを表現する ERC-20 ラッパーコントラクト。ウォレットの場合、ラッパーは基盤となる SPL トークンアカウントから直接残高を読み取ります。コントラクトが保有するトークンはラッパー自身のエスクロートークンアカウントに置かれ、ラッパーのストレージで追跡されます（参照 [Solana プログラムを統合する](/ja/gaido/integrate-solana-program.md)）。

**ERC20SPLFactory** — 任意の SPL トークン用のラッパーをデプロイする factory コントラクト。

**レジストリ** — 標準ラッパー、gas トークン、ブリッジ接続は、オフチェーンの [rome-protocol/registry](https://github.com/rome-protocol/rome-registry)で管理されます。オンチェーンの token-registry コントラクトはありません。これにより、各資産は 1 つの標準的な SPL ミントにマッピングされます。

## プリコンパイル

**標準 Ethereum プリコンパイル** — ecrecover（0x01）、SHA-256（0x02）、RIPEMD-160（0x03）、identity（0x04）、modexp（0x05）、BN254 ecAdd/ecMul/ecPairing（0x06-0x08）、Blake2f（0x09）。

**System プリコンパイル** (`0xFF...07`) — Solidity からの PDA 導出と base58 変換。

**CpiProgram プリコンパイル** (`0xFF...08`) — クロスプログラム呼び出し（`invoke` / `invoke_signed`) に加えてクロスステート読み取りショートカット。

**HelperProgram プリコンパイル** (`0xFF...09`) — ATA/PDA の作成、SPL 送金、そして gas↔lamports 変換。ユーザーの PDA 署名による SPL 操作の主要な入口です。

**Withdraw プリコンパイル** (`0x42...16`) — EVM から Solana へ SOL または SPL トークンを引き出します。

キャッシュトラック系のファミリー（`0xff…04/05/06/0b`）は、CU 効率の高い読み取りのためにこれらに対応します。コントラクトは一貫して 1 つのトラックを使用します。

## トランザクションタイプ

**RheaTx** — 1 つの rollup 上の単一の EVM トランザクション。最も一般的なタイプです。

**RemusTx** — 異なる rollup をまたぐ複数の EVM トランザクションを、アトミックに実行します。いずれか 1 つでも失敗すると、すべてロールバックされます。

**RomulusTx** — EVM トランザクションとネイティブな Solana 命令を 1 つのアトミック操作にまとめます。最も強力なタイプで、1 つのトランザクションで Solidity と Solana を組み合わせます。

## 次は

* [実行モデル](/ja/ji-ben-gai-nian/execution-model.md) — EVM トランザクションが Solana 上でどのように実行されるかの詳細解説
* [Token Interop](/ja/ji-ben-gai-nian/token-interop.md) — ERC-20 と SPL トークンがどのように相互作用するか
* [制約](/ja/ji-ben-gai-nian/constraints.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/ja/hajimeni/key-concepts.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.
