> 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/vi/bao-mat/known-limitations.md).

# Các giới hạn đã biết

Các ràng buộc EVM hiện tại của Rome và ý nghĩa của chúng — opcode không được hỗ trợ, bố cục account lưu trữ, trần CU, độ sâu CPI, và giới hạn oracle.

Tài liệu trung thực về các hạn chế hiện tại của Rome Protocol và những hàm ý của chúng.

## Hạn chế thực thi

**SELFDESTRUCT không được hỗ trợ.** Opcode này không có bộ xử lý, nên một hợp đồng thực thi nó sẽ hủy toàn bộ giao dịch (xem bên dưới), chứ không chỉ hoàn nguyên một frame.

**Một opcode mà Rome không triển khai sẽ làm hủy toàn bộ giao dịch.** Bộ thông dịch không có bộ xử lý cho byte này, vì vậy giao dịch kết thúc với `IncompatibleVersionEVM(opcode)`, không có gì nó đã làm được ghi nhận, và lỗi được trả về cho bên gửi thay vì bị hợp đồng gọi nuốt mất.

**Không có lịch gas theo từng opcode.** Giá trị gas truyền cho `CALL`, `DELEGATECALL`, `STATICCALL` và `CREATE` được chấp nhận để tương thích ABI nhưng không được thực thi — hàm được gọi chạy với toàn bộ ngân sách còn lại của bên gọi, và không có khoản trợ cấp 2300 gas. Bảo vệ tái nhập dựa trên stipend (`transfer()` / `send()`) không có hiệu lực trên Rome; hãy dùng các bộ chặn tái nhập rõ ràng và mô hình checks-effects-interactions.

**Modexp (0x05) bị vô hiệu hóa.** Một lời gọi hoàn nguyên với `lệnh gọi big_mod_exp bị vô hiệu hóa` cho đến khi Solana kích hoạt `big_mod_exp` syscall.

**256 ô lưu trữ cho mỗi tài khoản lưu trữ.** Bộ nhớ lưu trữ của hợp đồng được phân chia trên các tài khoản Solana, mỗi tài khoản có 256 ô. Các hợp đồng có bộ nhớ lưu trữ lớn sử dụng nhiều tài khoản, điều này ảnh hưởng đến chi phí CU.

**\~1,4 triệu đơn vị tính toán cho mỗi giao dịch nguyên tử.** Công việc vượt quá ngân sách của một giao dịch Solana đơn lẻ sẽ chuyển sang thực thi lặp (tách qua nhiều giao dịch). Một số thao tác chỉ có thể chạy nguyên tử và không thể chạy lặp — đặc biệt là CPI theo luồng cũ (`CpiProhibitedInIterativeTx`; các tác động của cached-track được dàn xếp và có thể chạy lặp).

**Giới hạn độ sâu CPI là 4.** Các lời gọi CPI lồng sâu sẽ thất bại. Hãy thiết kế hợp đồng với cây lời gọi nông.

## Hạn chế của Oracle

**Không có dữ liệu vòng lịch sử.** Các bộ chuyển đổi Oracle Gateway chỉ hỗ trợ `latestRoundData()`. Các truy vấn giá lịch sử qua `getRoundData(roundId)` sẽ hoàn nguyên.

**Các offset của bộ phân tích được xác thực theo bố cục hiện tại.** Dữ liệu tài khoản của Pyth và Switchboard được phân tích bằng các offset byte. Nếu Pyth hoặc Switchboard thay đổi bố cục tài khoản của họ, các bộ chuyển đổi sẽ trả về dữ liệu sai cho đến khi các offset được xác thực lại.

## Hạn chế của công cụ

**Không có truy vết giao dịch kiểu Ethereum.** `debug_traceTransaction` và `trace_*` không được hỗ trợ. Phương thức truy vết duy nhất là `debug_traceRomeTransaction`, phương thức này tách một giao dịch gộp nhiều lời gọi thành các lời gọi con và CPI của nó. Các giao dịch thông thường trả về `null`. Đối với mọi thứ khác, hãy dùng `eth_call` và các [Qua explorer](/vi/ung-dung-tren-rome/via.md) (hiển thị các lệnh Solana đứng sau một giao dịch) để gỡ lỗi. Xem [JSON-RPC](/vi/tai-lieu-tham-khao/json-rpc.md).

**`eth_getLogs` bị giới hạn theo phạm vi.** Các chuỗi công khai từ chối các phạm vi block quá rộng (lỗi `-32005`); hãy giới hạn truy vấn của bạn. Xem [JSON-RPC](/vi/tai-lieu-tham-khao/json-rpc.md).

## Hạn chế về hạ tầng

**Mô hình một nhà vận hành duy nhất.** Mỗi triển khai Rome được vận hành bởi một thực thể duy nhất (nhà vận hành nhóm payer). Không có tập hợp nhà vận hành phi tập trung.

**Khóa chế độ lặp.** Trong quá trình thực thi lặp, các tài khoản bị khóa trong vài giây, điều này có thể gây tranh chấp trên các tài khoản được sử dụng nhiều.

## Tiếp theo là gì

* [Công bố có trách nhiệm](/vi/bao-mat/responsible-disclosure.md) — cách báo cáo sự cố


---

# 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/vi/bao-mat/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.
