> 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/canton-zk-evm/run-it-locally.md).

# Chạy nó cục bộ

Chạy các bài kiểm tra, buổi chạy thử không có GPU và bản demo Ostia cục bộ trên GPU.

Các script được cung cấp chạy một mạng kiểm thử cục bộ. Canton giữ trạng thái của nó trong bộ nhớ, nên mỗi lần khởi động lại sẽ loại bỏ trạng thái đó và tạo một mạng mới. Bản demo GPU chứng minh các khối. Buổi tập dượt sử dụng một chứng minh thay thế và không cần GPU.

Trang này mô tả commit `a84e84e439a5cc669c0ae61facf7c8c995d9d564`. Đọc toàn bộ [hướng dẫn mạng](https://github.com/rome-protocol/canton-zk-evm/blob/a84e84e439a5cc669c0ae61facf7c8c995d9d564/network/README.md) và [hướng dẫn demo](https://github.com/rome-protocol/canton-zk-evm/blob/a84e84e439a5cc669c0ae61facf7c8c995d9d564/demo/README.md). Chạy các lệnh dưới đây từ `canton-zk-evm` thư mục gốc của kho.

## Những gì bạn cần

| Công việc                        | Yêu cầu                                                                                                                   |
| -------------------------------- | ------------------------------------------------------------------------------------------------------------------------- |
| Kiểm tra kho                     | Docker, `bash`, `curl`, `jq`, `openssl` và Python 3. Các bài kiểm thử Rust dùng `rust-toolchain.toml`.                    |
| các bài kiểm thử tích hợp Canton | Linux x86-64, Java 21 và kết nối mạng.                                                                                    |
| Tập dượt demo                    | Linux x86-64, Docker, Java 21, Rust và Python 3.12 trở lên.                                                               |
| Kiểm thử Explorer                | Node 22.18 trở lên.                                                                                                       |
| Mạng GPU và demo                 | Linux x86-64, một GPU NVIDIA đã cài trình điều khiển, Docker, Rust, Python 3.12 trở lên, `jq`, `curl`, `openssl` và ZisK. |

Các [README của kho lưu trữ](https://github.com/rome-protocol/canton-zk-evm/blob/a84e84e439a5cc669c0ae61facf7c8c995d9d564/README.md#running-the-tests) liệt kê các điều kiện tiên quyết cho kiểm thử. Trình cài đặt GPU dùng `sudo` và `apt` trên Debian hoặc Ubuntu và cần khoảng 100 GB dung lượng đĩa trống. Nó cài các gói hệ thống và thay đổi giới hạn khóa bộ nhớ. Bộ tìm nạp công cụ của mạng sẽ cài Java 21 nếu thiếu. Xem [Máy chủ prover](/vi/canton-zk-evm/prover-host.md) để biết phần cứng đã được kiểm thử; dung lượng bộ nhớ GPU tối thiểu chưa được xác định.

## Chạy các bài kiểm thử

Bắt đầu bằng các kiểm tra nhanh từ [CONTRIBUTING.md](https://github.com/rome-protocol/canton-zk-evm/blob/a84e84e439a5cc669c0ae61facf7c8c995d9d564/CONTRIBUTING.md#building-and-testing):

```sh
tests/static.sh                  # các ghim, genesis và các dòng giấy phép khớp nhau
tests/refuses_missing_flag.sh    # lệnh khởi chạy reth từ chối một cờ bị thiếu hoặc sai
tests/fixtures.sh                # chứng minh đã ghi lại là nhất quán
gateway/build.sh --check         # mã gateway đã check-in là thứ mà Gateway.sol biên dịch ra (Docker)
```

README của kho cũng nêu các kiểm tra này. Chúng không cần GPU:

```sh
tests/udp_control.sh             # kiểm tra UDP thất bại trên một container có bộ lắng nghe UDP (không có reth)
tests/discovery.sh               # khởi chạy reth đã ghim, kiểm tra nó không có peer nào, rồi dừng nó
tests/network_static.sh          # chỉ qua launch.sh của reth, cấu hình Canton, kết quả smoke đã ghi lại
tests/network_checks.sh          # kiểm tra ghim trình biên dịch, ID của DAR, việc dừng trên một chương trình khácVK (không GPU)
tests/canton_network.sh          # Canton đã ghim, gói Daml thật và một Advance (Linux x86-64, Java 21, Python 3; không GPU)
gateway/tests/run.sh             # gateway trên một reth thật, khởi chạy với phát hiện peer tắt (Docker, curl, jq, Python 3 với các gói trong demo/requirements.txt)
tests/guest-repro.sh             # bản dựng guest chạy trong một thư mục cố định, nên thư mục nguồn không làm thay đổi ELF (các bản thay thế cho các công cụ ZisK; cùng kiểm tra này trên ZisK thật đã thành công vào 2026-10-04, xem guest/README.md)
tests/demo_static.sh             # các ghim của demo, công tắc chống sửa đổi và ghi đè genesis, cùng các kết quả đã ghi lại của nó (không GPU)
tests/demo_explorer_static.sh    # các hình ảnh của explorer được ghim, và những gì container của nó nhận được (không Docker)
(cd explorer && npm ci && npm test)  # các bài kiểm thử của explorer, đối chiếu với các bản giả (Node 22.18+; CI dùng EXPLORER_NODE_IMAGE trong PINS)
(cd guest/rules && cargo test)   # các luật chuỗi và hash của chúng (cần Rust)
```

## Tập dượt không cần GPU

```sh
tests/demo_rehearsal.sh          # demo và explorer với một chứng minh thay thế (Linux x86-64, Docker, Java 21, Rust, Python 3.12+; không GPU)
```

Phần này chạy reth thật, Canton, gói Daml, chuẩn token và builder. Sidecar kiểm tra các chân của gateway so với các chứng minh lưu trữ, trong khi một bản thay thế trả lời `xác minh` lời gọi. Buổi tập dượt không chứng minh một khối nào và cũng không xác minh một chứng minh zero-knowledge thật.

Nó cũng kiểm tra explorer và faucet. Kiểm tra Verify của explorer phải từ chối chứng minh thay thế.  [README của demo](https://github.com/rome-protocol/canton-zk-evm/blob/a84e84e439a5cc669c0ae61facf7c8c995d9d564/demo/README.md#the-rehearsal) mô tả phạm vi bao phủ của buổi tập dượt.

## Khởi động mạng cục bộ trên GPU

Cài ZisK bằng `prover/install.sh` trước khi khởi động mạng. Luôn khởi chạy reth thông qua trình khởi chạy được cung cấp; `network/up.sh` sử dụng nó.

```sh
network/up.sh       # công cụ, bản dựng guest, reth, sidecar, prover, Canton, chuỗi
CZE_SOURCE_COMMIT=$(git rev-parse HEAD) network/smoke.sh    # một khối trống, được chứng minh và ghi nhận
network/down.sh
```

`up.sh` xây dựng guest và từ chối một khóa chương trình, gốc ZisK hoặc hash quy tắc khác với các giá trị đã ghi lại. Mạng có một synchronizer và ba participant. Participant operator và confirmer mỗi bên chạy một sidecar. Participant tên users lưu trữ các bên kiểm thử và reader.

Bài smoke test ghi nhận một khối trống, kiểm tra head của chuỗi và bản ghi khối của reader, đồng thời kiểm tra rằng reth đã đánh dấu nó là cuối cùng. Trạng thái và nhật ký được ghi vào `state/`, hoặc `CZE_STATE_DIR` khi được đặt.

## Chạy năm trường hợp demo trên GPU

Dùng một mạng cục bộ mới cho demo:

```sh
demo/prepare.sh
CZE_GENESIS_FILE=$PWD/state/demo/genesis.json network/up.sh
CZE_SOURCE_COMMIT=$(git rev-parse HEAD) network/smoke.sh      # tùy chọn: chạy một khối trống trước
CZE_SOURCE_COMMIT=$(git rev-parse HEAD) demo/run.sh
network/down.sh
```

Script chuẩn bị tạo các khóa kiểm thử và một genesis có vốn cho lần chạy. Demo chạy khối thiết lập, nạp tiền, thanh toán, rút tiền, từ chối phân bổ và từ chối chứng minh đã bị sửa đổi. Script sẽ dừng nếu một kiểm tra thất bại và ghi kết quả vào `demo/results/`.

Đối với một bản xuất nguồn không có `.git`, hãy đặt `CZE_SOURCE_COMMIT` thành mã băm đầy đủ của commit được dùng cho bản xuất. Để bao gồm faucet, genesis có vốn của nó phải được chuẩn bị trước khi mạng khởi động; xem [Trình khám phá](/vi/canton-zk-evm/explorer.md) và hướng dẫn demo đầy đủ.


---

# 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/canton-zk-evm/run-it-locally.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.
