> 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/ko/getting-started/key-concepts.md).

# 핵심 개념

개발자를 위한 필수 Solana 및 Rome EVM 용어 — 프로그램, 계정, PDA, CPI, SPL 토큰, 그리고 원자적 실행과 반복적 실행.

Rome Protocol 위에 구축하기 위한 필수 용어와 개념.

## Solana 개념

**프로그램** — Solana의 스마트 계약에 해당합니다. 프로그램은 온체인에 배포되는 상태가 없는 실행 파일입니다. Rome EVM 자체도 Solana 프로그램입니다.

**계정** — Solana의 모든 상태는 계정에 저장됩니다. 각 계정은 소유자(프로그램), 잔액(lamports), 데이터로 구성됩니다. Ethereum과 달리 코드와 상태는 별도의 계정에 저장됩니다.

**PDA(프로그램 파생 주소)** — 시드와 프로그램 ID에서 파생되는 결정론적 주소입니다. PDA를 사용하면 프로그램이 개인 키 없이도 계정을 "소유"할 수 있습니다. Rome은 PDA를 사용해 Ethereum 주소를 Solana 계정에 매핑합니다.

**CPI(크로스 프로그램 호출)** — 하나의 Solana 프로그램이 같은 트랜잭션 안에서 다른 프로그램을 호출하는 것입니다. Rome EVM 계약이 Jupiter, Kamino, SPL Token 및 기타 Solana 프로그램과 상호작용하는 방식이 바로 이것입니다.

**SPL Token** — Solana의 표준 토큰 프로그램입니다. Ethereum의 ERC-20에 해당합니다. Solana의 모든 대체 가능 토큰(USDC, SOL 등)은 SPL 토큰입니다.

**Token-2022** — Transfer Hook, Confidential Transfers, Permanent Delegates 같은 확장을 포함한 차세대 SPL 토큰 프로그램입니다.

**Transfer Hook** — 매 호출마다 프로그램을 실행하는 Token-2022 확장 `transfer_checked` 호출.

**ATA(연결된 토큰 계정)** — 특정 지갑 + 민트 쌍에 대한 결정론적 토큰 계정입니다. 각 사용자는 보유한 각 토큰마다 하나의 ATA를 가집니다.

**람포트** — SOL의 최소 단위입니다. 1 SOL = 1,000,000,000 람포트(10^9)입니다.

**계산 단위(CU)** — Ethereum 가스에 해당하는 Solana의 개념입니다. 각 트랜잭션에는 계산 예산이 있으며(기본 약 20만 CU, 최대 약 140만 CU), 연산은 CU를 소비합니다.

## Rome 개념

**Rome EVM 프로그램** — EVM 바이트코드 인터프리터를 포함하는 Solana 프로그램입니다. 환경마다 특정 프로그램 ID에 배포됩니다.

**체인 ID** — Rome의 각 애플리케이션은 고유한 EVM 체인 ID를 받습니다. 이를 통해 동일한 기반 Solana 상태를 공유하는 분리된 EVM 환경이 만들어집니다.

**원자적 실행(VmAt)** — 하나의 Solana 트랜잭션 안에서 완전히 실행되는 EVM 트랜잭션입니다. 대부분의 작업에 사용됩니다.

**반복적 실행(VmIt)** — 여러 Solana 트랜잭션에 걸쳐 분할되는 EVM 트랜잭션으로, 각 단계는 하나의 Solana 트랜잭션의 계산 예산에 맞는 만큼의 오퍼코드를 패킹합니다(고정 개수가 아니라 적응형). BN254 페어링 같은 계산 집약적 작업에 사용됩니다.

**보관 계정** — 4KB Solana(v1) 트랜잭션 크기 제한을 초과하는 대형 EVM 트랜잭션(최대 80KB)을 저장하는 온체인 버퍼입니다. SDK가 투명하게 관리합니다.

**StateHolder** — 반복 실행 단계 사이의 직렬화된 VM 상태를 저장하는 온체인 계정입니다.

**Rome 프록시** — Ethereum API 호출을 Solana 트랜잭션으로 변환하는 JSON-RPC 서버(포트 9090)입니다. MetaMask와 Hardhat이 여기에 연결됩니다.

**Hercules** — Solana에서 Rome EVM 이벤트를 모니터링하고 Ethereum 호환 블록 데이터를 생성하는 블록 인덱서입니다.

**지불자** — EVM 사용자를 대신해 Solana 트랜잭션에 서명하고 비용을 지불하는 Solana 키페어입니다. 프록시가 payer pool을 통해 관리합니다.

## 토큰 개념

**SPL\_ERC20 / SPL\_ERC20\_cached** — Rome EVM 내에서 SPL 토큰을 나타내는 ERC-20 래퍼 계약입니다. 지갑의 경우 래퍼는 기본 SPL 토큰 계정에서 잔액을 직접 읽습니다. 계약이 보유한 토큰은 래퍼 자체의 에스크로 토큰 계정에 보관되며 래퍼의 저장소에 추적됩니다( [Solana 프로그램 통합](/ko/developer-guides/integrate-solana-program.md)). 현재 팩토리는 캐시드 변형을 배포합니다.

**ERC20SPLFactory** — 모든 SPL 토큰에 대한 래퍼를 배포하는 팩토리 계약입니다.

**레지스트리** — 정식 래퍼, 가스 토큰, 브리지 연결은 오프체인에서 관리됩니다 [rome-protocol/registry](https://github.com/rome-protocol/rome-registry); 온체인 토큰 레지스트리 계약은 없습니다. 이를 통해 각 자산은 하나의 표준 SPL 민트에만 매핑됩니다.

## 프리컴파일

**표준 Ethereum 사전 컴파일** — 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`) — EVM에서 Solana로 SOL 또는 SPL 토큰을 인출합니다.

캐시드 트랙 계열 (`0xff…04/05/06/0b`)는 CU 효율적인 읽기를 위해 이들을 복제합니다; 계약은 하나의 트랙을 일관되게 사용합니다.

## 트랜잭션 유형

**RheaTx** — 하나의 롤업에서 실행되는 단일 EVM 트랜잭션입니다. 가장 흔한 유형입니다.

**RemusTx** — 서로 다른 롤업에 걸친 여러 EVM 트랜잭션을 원자적으로 실행합니다. 하나라도 실패하면 모두 되돌아갑니다.

**RomulusTx** — 하나의 원자적 작업에서 EVM 트랜잭션과 네이티브 Solana 인스트럭션을 결합합니다. 가장 강력한 유형으로, 하나의 트랜잭션에서 Solidity와 Solana를 함께 사용합니다.

## 다음 단계

* [실행 모델](/ko/core-concepts/execution-model.md) — EVM 트랜잭션이 Solana에서 어떻게 실행되는지에 대한 심층 분석
* [토큰 상호운용성](/ko/core-concepts/token-interop.md) — ERC-20과 SPL 토큰이 상호작용하는 방식
* [제약 사항](/ko/core-concepts/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/ko/getting-started/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.
