> 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/security/known-limitations.md).

# 알려진 제한 사항

현재 Rome EVM의 제약과 그 영향 — 지원되지 않는 opcode, 스토리지 계정 레이아웃, CU 상한, CPI 깊이, 오라클 제한.

Rome Protocol의 현재 제약과 그 의미를 솔직하게 문서화한 내용.

## 실행 제한 사항

**SELFDESTRUCT는 지원되지 않습니다.** 해당 opcode에는 핸들러가 없으므로, 이를 실행하는 컨트랙트는 전체 트랜잭션을 중단합니다(아래 참조). 단일 프레임만 되돌리지는 않습니다.

**Rome이 구현하지 않은 opcode는 전체 트랜잭션을 중단시킵니다.** 인터프리터에 이 바이트에 대한 핸들러가 없으므로, 트랜잭션은 다음으로 끝납니다 `IncompatibleVersionEVM(opcode)`, 수행한 작업은 아무것도 커밋되지 않으며, 실패는 호출한 컨트랙트에 의해 삼켜지지 않고 발신자에게 전달됩니다.

**opcode별 가스 스케줄이 없습니다.** 에 전달되는 가스 값은 `CALL`, `DELEGATECALL`, `STATICCALL` 및 `CREATE` 는 ABI 호환성을 위해 허용되지만 강제되지는 않습니다. 호출 대상은 호출자의 남은 전체 예산으로 실행되며, 2300 가스 스티펜드도 없습니다. 스티펜드 기반 재진입 방지(`transfer()` / `send()`)는 Rome에서는 무효합니다. 명시적 재진입 가드와 checks-effects-interactions 패턴을 사용하세요.

**Modexp(0x05)는 비활성화되어 있습니다.** 호출은 다음으로 되돌려집니다 `big_mod_exp 호출이 비활성화되어 있습니다` Solana가 다음을 활성화할 때까지 `big_mod_exp` syscall.

**저장 계정당 256개의 저장 슬롯.** 컨트랙트 저장소는 각 256개의 슬롯을 가진 Solana 계정들에 분할됩니다. 저장 공간 사용량이 큰 컨트랙트는 여러 계정을 사용하며, 이는 CU 비용에 영향을 줍니다.

**원자적 트랜잭션당 약 140만 CU.** 단일 Solana 트랜잭션의 예산을 초과하는 작업은 반복 실행(여러 트랜잭션으로 분할)으로 전환됩니다. 일부 작업은 원자적 실행만 가능하며 반복적으로 실행할 수 없습니다. 특히 legacy-track CPI (`CpiProhibitedInIterativeTx`; cached-track의 효과는 단계적으로 적용되며, 반복적으로 실행됩니다).

**CPI 깊이 제한은 4입니다.** 깊게 중첩된 CPI 호출은 실패합니다. 호출 트리가 얕도록 컨트랙트를 설계하세요.

## 오라클 제한 사항

**과거 라운드 데이터가 없습니다.** Oracle Gateway 어댑터는 다음만 지원합니다 `latestRoundData()`. 과거 가격 조회는 다음을 통해 `getRoundData(roundId)` revert됩니다.

**파서 오프셋은 현재 레이아웃과 대조하여 검증됩니다.** Pyth 및 Switchboard 계정 데이터는 바이트 오프셋을 사용해 파싱됩니다. Pyth 또는 Switchboard가 계정 레이아웃을 변경하면, 오프셋이 다시 검증될 때까지 어댑터는 잘못된 데이터를 반환합니다.

## 도구 제한 사항

**Ethereum 스타일의 트랜잭션 추적은 지원되지 않습니다.** `debug_traceTransaction` 및 `trace_*` 는 지원되지 않습니다. 유일한 trace 메서드는 `debug_traceRomeTransaction`이며, 여러 호출을 하나의 배치로 묶은 트랜잭션을 하위 호출과 CPI로 분해합니다. 일반 트랜잭션은 `null`. 그 밖의 경우에는 다음을 사용하세요 `eth_call` 그리고 [익스플로러를 통해](/ko/rome/via.md) (트랜잭션 뒤의 Solana instruction을 보여줌)에서 디버그하세요. 다음을 참조하세요 [JSON-RPC](/ko/reference/json-rpc.md).

**`eth_getLogs` 는 범위가 제한됩니다.** 퍼블릭 체인은 지나치게 넓은 블록 범위를 거부합니다(오류 `-32005`); 쿼리 범위를 제한하세요. 다음을 참조하세요 [JSON-RPC](/ko/reference/json-rpc.md).

## 인프라 제한 사항

**단일 운영자 모델.** 각 Rome 배포는 단일 주체(페이어 풀 운영자)가 운영합니다. 분산된 운영자 집합은 없습니다.

**반복 모드 잠금.** 반복 실행 중에는 계정이 몇 초 동안 잠기며, 이로 인해 사용량이 많은 계정에서 경합이 발생할 수 있습니다.

## 다음 단계

* [책임 있는 공개](/ko/security/responsible-disclosure.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/security/known-limitations.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.
