> 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/tai-lieu-tham-khao/contract-addresses.md).

# Địa chỉ Hợp đồng

Các precompile, program ID, và địa chỉ hợp đồng đã triển khai theo từng chuỗi.

Các địa chỉ precompile được tích hợp sẵn trong chương trình Rome EVM và giống hệt trên mọi chuỗi. Các hợp đồng được triển khai theo từng chuỗi là **chính thống trong** [**sổ đăng ký Rome**](https://github.com/rome-protocol/rome-registry/tree/main/chains). Bảng Hadrian bên dưới liệt kê các hợp đồng tiêu biểu mà registry (bản phát hành v0.2.0) đánh dấu `live`; registry là nguồn sự thật duy nhất, và một hợp đồng có thể được triển khai lại sau khi trang này được viết. Xem [Đọc danh sách hợp đồng](#reading-the-contracts-list) để biết cách chọn địa chỉ đang hoạt động trong mã.

## Precompile (tất cả chuỗi)

Các precompile Ethereum tiêu chuẩn, với ngữ nghĩa tương đương mainnet:

| Precompile      | Địa chỉ                                      |
| --------------- | -------------------------------------------- |
| ecrecover       | `0x0000000000000000000000000000000000000001` |
| SHA-256         | `0x0000000000000000000000000000000000000002` |
| RIPEMD-160      | `0x0000000000000000000000000000000000000003` |
| đồng nhất       | `0x0000000000000000000000000000000000000004` |
| lũy thừa mô-đun | `0x0000000000000000000000000000000000000005` |
| BN254 cộng      | `0x0000000000000000000000000000000000000006` |
| BN254 nhân      | `0x0000000000000000000000000000000000000007` |
| ghép cặp BN254  | `0x0000000000000000000000000000000000000008` |
| blake2f         | `0x0000000000000000000000000000000000000009` |

Các precompile không phải EVM của Rome, để truy cập vào Solana (giao diện trong [`rome-solidity/contracts/interface.sol`](https://github.com/rome-protocol/rome-solidity/blob/master/contracts/interface.sol)):

| Precompile     | Địa chỉ                                      | Giao diện                 | Mục đích                                  |
| -------------- | -------------------------------------------- | ------------------------- | ----------------------------------------- |
| System         | `0xFF00000000000000000000000000000000000007` | `ISystemProgram`          | Suy ra PDA, chuyển đổi base58             |
| CpiProgram     | `0xFF00000000000000000000000000000000000008` | `ICrossProgramInvocation` | CPI tùy ý + đọc xuyên trạng thái          |
| HelperProgram  | `0xFF00000000000000000000000000000000000009` | `IHelperProgram`          | Tạo ATA/PDA, chuyển SPL, gas↔lamports     |
| Rút            | `0x4200000000000000000000000000000000000016` | `IWithdraw`               | Rút SOL/SPL từ EVM sang Solana            |
| SystemCached   | `0xFF00000000000000000000000000000000000004` | `ISystemCached`           | Các hàm trợ giúp System theo luồng cached |
| SplCached      | `0xFF00000000000000000000000000000000000005` | `ISplCached`              | Các thao tác SPL theo luồng cached        |
| ASplCached     | `0xFF00000000000000000000000000000000000006` | `IAssociatedSplCached`    | Các thao tác ATA theo luồng cached        |
| WithdrawCached | `0xFF0000000000000000000000000000000000000b` | `IWithdrawCached`         | Rút theo luồng cached                     |

Một hợp đồng sử dụng một luồng — legacy (`SplCached` tắt) hoặc cached — một cách nhất quán; hai loại này không được trộn lẫn trong cùng một lời gọi.

## ID chương trình

các chương trình rome-evm (chương trình Solana chạy EVM), theo từng mạng Rome:

| Mạng              | ID chương trình                               |
| ----------------- | --------------------------------------------- |
| Hadrian (testnet) | `RPTWwELXAY4KC9ZPHhaxp7Sq1hHtU3HNEgLbSegCcWf` |
| Rubicon (mainnet) | `RomePq9X3iAoTr813HR7uRarafFDUJty6GdiEceYpzX` |

Các chương trình Solana nổi tiếng (giống như ở mọi nơi trên Solana):

| Chương trình                | ID                                             |
| --------------------------- | ---------------------------------------------- |
| SPL Token                   | `TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA`  |
| SPL Token-2022              | `TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb`  |
| Token liên kết              | `ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL` |
| Chương trình hệ thống       | `11111111111111111111111111111111`             |
| Siêu dữ liệu token Metaplex | `metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s`  |

## Rome ZK EVM trên Solana devnet

Các chương trình v0.3.0 này được dùng chung bởi các chuỗi ZK EVM do nhà vận hành chạy trên Solana devnet. Danh sách chương trình được gắn thẻ [danh sách chương trình được gắn thẻ](https://github.com/rome-protocol/solana-zk-evm/blob/v0.3.0/deploy/rollup/programs.devnet.json) là nguồn cho các ID này.

| Chương trình  | ID                                             |
| ------------- | ---------------------------------------------- |
| zk-inbox      | `28948c2Qt1QtG2XJA823ytzCfj7U5cNNm3FuM2KoXsAa` |
| zk-settlement | `8anSjJZu5vgfNbESPLoKudVBNEraDZASwKJnkDLTCaGo` |
| veritas       | `2cLGd9FKC7TiZrEHCvpw291AwXNcGgP9nDT4W3PHLe5k` |
| zk-bridge     | `27TbMDUyVynpFpqeKygpUMcDzWKHfW4k9aRN5yCysLEQ` |

Ảnh node: `ghcr.io/rome-protocol/rome-zk-evm:v0.3.0`.

## Các hợp đồng đã triển khai — Hadrian (testnet, 200010)

Các hợp đồng tiêu biểu, lấy từ `live` các mục của [registry](https://github.com/rome-protocol/rome-registry/tree/main/chains/200010-hadrian) (v0.2.0). Toàn bộ tập hợp (các wrapper SPL, Uniswap V2/V3/V4, Aave, các nguồn oracle) có trong registry.

| Hợp đồng             | Địa chỉ                                      |
| -------------------- | -------------------------------------------- |
| ERC20SPLFactory      | `0x37c13e4ff21fb914eb24014dcbd0f8dbeaa31078` |
| Multicall3           | `0xb7180d3c46632b582b99d9af3daae394fab9ae4c` |
| OracleAdapterFactory | `0x52b008771fc95b4674a4f3533570b3d223f27f68` |
| BatchReader          | `0x2869f0a96572e7fb15036656e9a32fd17346499b` |
| RomeBridgeWithdraw   | `0x6eeacb4e6006b7a29c8141f69b6c75346dedec73` |
| MeteoraDAMMv1Factory | `0xd68b355f62643de0ec40243cba8f699f959ea3c4` |
| UniswapV3Factory     | `0xD9E323088561D40267767b52252595ea9cF1D5bD` |
| UniswapV4PoolManager | `0x8a281Be9B5173B2F52328437eAa0d272791707f7` |

## Các hợp đồng đã triển khai — Rubicon (mainnet, 7531)

Các hợp đồng tiêu biểu (registry công khai hiện công bố bộ Hadrian; bộ Rubicon được liệt kê ở đây). Các wrapper: `wUSDC` `0x0952d233b0c254cd375f3bfb3e5869c1a906f9b3`, `wETH` `0x01e8b3573da1d4b7b4b1ce0932cf07c8af0c92e9`, `wSOL` `0xc4e29e0f726a906e93277cbbc37bf27a9848a113`.

| Hợp đồng                        | Địa chỉ                                      |
| ------------------------------- | -------------------------------------------- |
| ERC20SPLFactory                 | `0x4068aa7482dc15e9f78e22fbe0f884531c83ae6e` |
| Multicall3                      | `0xd6e0b13ea70aea0d44db083544f01d8b7693a759` |
| OracleAdapterFactory            | `0x6a1340dd86c3951b6f13d9001b3951d56a2fe581` |
| BatchReader                     | `0x580dc0ecb226530ee8a90b57e0f0cd2555fb4f0f` |
| RomeBridgeWithdraw              | `0xceea191761cdba2fc589996d7dd096e57db29c84` |
| WETH9                           | `0x8dc8bf908efa4511f71a9e2ed95f46a70507f1ae` |
| UniswapV2Factory                | `0x23af4d2065d24b42a1a17f22b963c9216d0a1dc2` |
| UniswapV2Router                 | `0x445d7af7888db44a4904b63336cc43446dfb37f7` |
| UniswapV3Factory                | `0x02aed7762fdc8bae826e7ee0ac2d2e1f754ba025` |
| SwapRouter (V3)                 | `0x680b7645c63421e33584a02aca91be6642d3d034` |
| NonfungiblePositionManager (V3) | `0xfb132adf6b7d811408f3639e91c8f638bddd6123` |
| QuoterV2 (V3)                   | `0x1d68d09dcc3a8c1b9aa8f0e2b138205c04bad4a7` |

## Đọc danh sách hợp đồng

Mỗi thư mục chuỗi trong registry đều có một `contracts.json`. Đó là danh sách các hợp đồng. Mỗi mục có một `name` và một `versions[]` danh sách, và mỗi phiên bản có một `address`, một `version` và một `trạng thái` của `live`, `không còn dùng` hoặc `đã ngừng hoạt động`. Một hợp đồng đã được triển khai lại sẽ giữ các phiên bản cũ trong danh sách, vì vậy mục đầu tiên hoặc cuối cùng không nhất thiết là mục nên dùng. Chọn phiên bản có `trạng thái` là `"live"`. Một vài mục (các hợp đồng Aave của Hadrian) có hơn một phiên bản đang hoạt động, vì vậy hãy lọc theo `trạng thái` và chủ động chọn thay vì lấy kết quả khớp đầu tiên.

```ts
import { getContracts } from "@rome-protocol/registry";
const factory = getContracts(200010).find((c) => c.name === "ERC20SPLFactory");
const address = factory.versions.find((v) => v.status === "live").address;
```

`getContracts(chainId)` trả về danh sách cho chuỗi đó, hoặc `null` nếu chuỗi đó chưa được công bố. Một số mục hoàn toàn không có phiên bản đang hoạt động nào (các `RomeswapMinimalRouter` là một trong số đó), vì vậy hãy kiểm tra rằng `find` đã tìm thấy gì đó trước khi đọc `.address`. Registry package được cài từ GitHub, không phải npm: `npm install github:rome-protocol/rome-registry#v0.2.0`.

## Môi trường

| Môi trường        | Mã Chain | RPC                                | Trạng thái |
| ----------------- | -------- | ---------------------------------- | ---------- |
| Rubicon (mainnet) | `7531`   | `rubicon.mainnet.romeprotocol.xyz` | Trực tiếp  |
| Hadrian (testnet) | `200010` | `hadrian.testnet.romeprotocol.xyz` | Trực tiếp  |


---

# 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/tai-lieu-tham-khao/contract-addresses.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.
