> 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/rome-zk-evm/run-a-rollup.md).

# Chạy một rollup

Đăng ký và chạy chuỗi Rome ZK EVM riêng của bạn trên devnet Solana với trình chạy rollup v0.3.0.

Các `./rollup` runner khởi chạy một chain dựa trên các chương trình devnet Solana dùng chung của Rome. Bạn vận hành node của nó và trả chi phí Solana cho nó. Bạn không tự triển khai các chương trình quyết toán. Việc đăng ký là không cần cấp quyền, nhưng các root đã được chứng minh cần một verification key đặc thù cho chain do Rome đăng ký.

Trang này dùng **v0.3.0**. [hướng dẫn devnet đầy đủ](https://github.com/rome-protocol/solana-zk-evm/blob/v0.3.0/docs/RUN-ON-DEVNET.md) bao quát mọi thiết lập, lỗi và bước khôi phục.

## Trước khi bắt đầu

Hãy dùng máy Linux x86-64 với bash 4 trở lên, Git, Docker Engine 28 trở lên với Compose, curl, jq, openssl, Solana CLI và Python 3.11 trở lên. Bạn cần một điểm cuối RPC devnet của Solana, một keypair payer Solana đã được nạp tiền, đồng thời cũng là authority của chain bạn, và một khóa ký sequencer. Giữ riêng tư cả hai tệp và đảm bảo người dùng container 999 có thể đọc được chúng. Hướng dẫn sẽ giải thích cách tạo chúng.

Dành khoảng **7 SOL trên devnet** cho payer. Việc đăng ký khóa 5 SOL; `./rollup check` yêu cầu còn ít nhất 1 SOL để đăng bài và trả rent. Khoản đặt cọc sẽ được hoàn lại sau root final đầu tiên hoặc sau mười root đã đăng. Nếu chain bị thu hồi trước đó, khoản đặt cọc sẽ chuyển vào kho bạc. Chain cũng cần một địa chỉ nhận phí EVM do bạn kiểm soát.

Để quyết toán các root, bạn cần một máy chủ prover với một GPU NVIDIA có hơn 30 GB bộ nhớ. Một card 24 GB là quá nhỏ cho bước tạo bằng chứng cuối cùng. [Máy chủ prover](/vi/rome-zk-evm/prover-host.md) cung cấp ngân sách RAM và đĩa. Node có thể chạy và công bố các batch trước khi prover sẵn sàng, nhưng sẽ không có root nào là final.

## Khởi động node

Clone bản phát hành và làm việc từ thư mục rollup của nó:

```sh
git clone --branch v0.3.0 https://github.com/rome-protocol/solana-zk-evm.git
cd solana-zk-evm/deploy/rollup
cp .env.example .env
cp chain.toml.example chain.toml
```

Đặt Solana RPC, vị trí signer và `ROME_ZK_TAG=v0.3.0` trên `.env`. Hãy giữ `PROGRAMS_JSON=programs.devnet.json`. Đặt `ROME_ZK_GUEST_TAG=v0.3.0` và `ZISK_RELEASE=1.3.1-alpha` cho bản dựng guest sau. Giữ RPC ràng buộc vào loopback cho lần chạy cục bộ đầu tiên. Để `PROVER` chưa đặt cho đến khi guest và khóa của nó sẵn sàng.

Đặt `genesis.fee_recipient` trên `chain.toml` đến địa chỉ EVM của bạn. Đừng chọn chain ID. Việc quyết toán sẽ suy ra một ID từ payer và số lần đăng ký của nó; `khởi tạo` đọc nó trước khi gửi bất cứ thứ gì. Khoảng một nửa số ID là quá lớn đối với MetaMask. Nếu ID của bạn nằm trong số đó, `khởi tạo` dừng lại với `ChainIdNotWalletSafe`; hãy tạo một khóa payer mới, trỏ `PAYER_KEYPAIR_PATH` vào đó và chạy `khởi tạo` lại.

Một chain mới khởi đầu với số dư bằng 0. Nếu bạn khai báo một số dư được bảo chứng để có gas trước khi mở nạp tiền, hãy khóa cùng số lượng wrapped SOL trong vault của chain trước khi yêu cầu verification key.

```sh
./rollup init
./rollup register --dry-run
./rollup register --confirm
./rollup up
./rollup check
```

`khởi tạo` kết xuất genesis và cấu hình dịch vụ. `register --confirm` khóa khoản đặt cọc 5 SOL và tạo con trỏ batch. `up` khởi động sequencer, batcher, derive và node verifier. `check` liệt kê mọi dịch vụ còn thiếu, rồi so sánh chain ID, các head, tiến độ của batcher, inbox và các root. Chạy lại sau khi các batch có thời gian đóng; lần kiểm tra tiến độ batch đầu tiên của nó chỉ ghi lại một mẫu.

Không có prover, sequencer sẽ phục vụ RPC, batcher đăng dữ liệu giao dịch lên inbox, và derive tái tạo lại chain. Một batch trong inbox không phải là một root quyết toán cuối cùng. Ngay cả root genesis cũng phải chờ bằng chứng.

## Chuyển từ các batch sang các root cuối cùng

Biên dịch guest cho genesis của chain bạn:

```sh
./rollup guest-build
```

Bản dựng sử dụng guest v0.3.0 và ZisK 1.3.1-alpha. Nó tạo ra chương trình guest của chain và siêu dữ liệu khóa xác minh. Việc tính toán `programVK` cần các proving keys của ZisK và khoảng 36 GB RAM. Việc đăng ký chain không đăng ký verification key. Gửi [yêu cầu verification-key](/vi/rome-zk-evm/verification-key.md) sau khi build. Rome kiểm tra genesis và guest của bạn, rồi đăng ký khóa với một slot kích hoạt.

Trên máy chủ prover, đặt `PROVER=on` và guest, siêu dữ liệu xác minh và các thiết lập ZisK được mô tả trong runbook đầy đủ. Sau khi khóa hoạt động:

```sh
./rollup init
./rollup up
./rollup check
```

Kiểm tra rằng `dịch vụ prover` và `khóa xác minh` đều đạt. Prover xử lý các batch trong inbox theo thứ tự. Mỗi proof hợp lệ sẽ đăng một root và root đó trở thành final ngay khi giao dịch Solana của nó được xác nhận.

## Tạo block đầu tiên

Khi không có số dư genesis được bảo chứng, chain không có gas cho giao dịch cho đến khi mở nạp tiền. Nạp tiền cần một root đầu tiên đã được chứng minh. Mặc định `empty_block_interval_secs = 0` để một chain nhàn rỗi không có block, vì vậy hãy đặt nó thành `60` dưới `[profile]` trên `chain.toml` sau khi khóa hoạt động và prover đang chạy. Kết xuất và khởi động lại:

```sh
./rollup init
./rollup up
./rollup check
```

Khi root đầu tiên đã trở thành final, đặt lại khoảng thời gian về `0` và chạy lại `khởi tạo` và `up` trừ khi bạn muốn các block rỗng định kỳ. Bật chúng trong khi chờ Rome đăng ký khóa sẽ tạo ra hàng đợi tồn đọng. Mọi batch phải được chứng minh theo thứ tự.

Với khoảng thời gian block rỗng 60 giây và thời gian đóng batch 60 giây, chain tạo ra khoảng một batch mỗi phút, tức khoảng 1.440 batch mỗi ngày. Trên devnet, một root đã được chứng minh tốn của payer khoảng **0.003 SOL**: khoảng 0.002 SOL tiền rent của tài khoản chờ, 0.001 SOL phí quyết toán và thêm một phí giao dịch. Nhịp độ đó tương đương khoảng 4,4 SOL mỗi ngày trước chi phí đăng lên inbox. Tiền rent của tài khoản chờ vẫn bị khóa với thiết lập mặc định. Khi tắt block rỗng, một chain nhàn rỗi không chốt batch nào và không tốn chi phí đăng.

Để chấp nhận tiền nạp, tiếp theo hãy tạo vault, kích hoạt cấu hình thoát sau thời gian trì hoãn của nó, và mở hàng đợi nạp tiền. Các lệnh đó và các kiểm tra nằm trong [Tiền gửi và rút tiền](/vi/rome-zk-evm/deposits-and-withdrawals.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/vi/rome-zk-evm/run-a-rollup.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.
