> For the complete documentation index, see [llms.txt](https://docs.chiliz.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.chiliz.com/vi/hoc-tap/tro-thanh-nha-xac-thuc/chay-mot-node-nha-xac-thuc.md).

# Chạy một node Nhà xác thực

## **Node validator là gì?**

Để trở thành một [validator](https://docs.chiliz.com/chiliz-chain-2.0/validator) của Chiliz Chain, bạn cần chạy một node Validator, hoặc bằng phần cứng của riêng bạn, hoặc thông qua một đối tác.\
Một node là một web server được thiết lập riêng để xác thực các giao dịch trước khi commit chúng lên Chiliz Chain.

{% hint style="info" %}
Lưu ý rằng chúng tôi có một trang tài liệu chạy node mang tính tổng quát hơn: [chay-mot-node-chiliz-chain.md](/vi/phat-trien/co-ban/ket-noi-voi-chiliz-chain/chay-mot-node-chiliz-chain.md)
{% endhint %}

## TL;DR

Để chạy một node Validator, bạn cần thiết lập các tham số sau:

```bash
docker run \
-v $(pwd)/my-datadir:/datadir \
--name ccv2-node \
-p 30303:30303 \
chilizchain/ccv2-geth:latest \
--mine \
--chiliz \ # for Chiliz Mainnet. Use --spicy for Spicy Testnet.
--datadir=/datadir \
--password=/datadir/password.txt \
--allow-insecure-unlock \
--unlock=REPLACE_WITH_VALIDATOR_ADDRESS \
--syncmode=full \
--gcmode=archive \
--miner.etherbase=REPLACE_WITH_VALIDATOR_ADDRESS
--nodekeyhex=2668f377e69de_EXAMPLE_REPLACE_WITH_YOUR_VALUE_c88bea3e337446ed73 \
--nat=extip:140.250.140.250 \ # This is just an example.
--verbosity=4
```

{% hint style="warning" %}
Đừng dùng đoạn này nguyên trạng!

Hãy chắc chắn cập nhật các tham số `unlock`, `miner.etherbase` và `nodekeyhex`!
{% endhint %}

## Điều kiện tiên quyết

Để chạy node validator của Chiliz Chain, bạn phải cài đặt Docker Engine trên máy hoặc server của mình.\
Bạn có thể sử dụng một nhà cung cấp cloud như Amazon Web Services, Google Cloud Platform, hoặc Microsoft Azure, hoặc bạn có thể tự thiết lập server của riêng mình (xem bên dưới).

Vui lòng hoàn tất[ việc cài đặt Docker](https://docs.docker.com/engine/install/) trước khi tiếp tục.

### Yêu cầu hệ thống

Bạn sẽ cần một server chuyên dụng để chạy node validator của mình:

* CPU: Ít nhất 2 nhân CPU.
* Bộ nhớ: Ít nhất 4 GB RAM.
* Ổ đĩa: Sử dụng ổ đĩa thể rắn (SSD) để có hiệu năng tối ưu.
  * Chúng tôi khuyến nghị có ít nhất 300 GB dung lượng đĩa trống để sync với chain.
* Băng thông mạng: Ít nhất 10 Gbps.

## Các Docker image dựng sẵn

Xem hoặc sử dụng các Docker image dựng sẵn từ [kho lưu trữ công khai Chiliz Chain 2.0](https://hub.docker.com/repository/docker/chilizchain/ccv2-geth) trên Docker Hub. Lưu ý rằng bạn phải có một tài khoản Docker Hub để truy cập kho lưu trữ.

## Khởi chạy một node Validator và bắt đầu sync

Điểm khởi đầu được khuyến nghị để chạy một node validator của Chiliz Chain là với volume dữ liệu được mount. Nếu phương pháp này được dùng để tạo lại một Docker container, dữ liệu sẽ được lưu trong thư mục và có thể dễ dàng được tái sử dụng hoặc clone sang một validator khác.

{% hint style="info" %}
Là một fork của Ethereum, Chiliz Chain dựa vào [Geth](https://geth.ethereum.org/) cho các node server của mình.

Go-ethereum (còn gọi là Geth) là một Ethereum client được xây dựng bằng Go. Chạy Geth cùng với một consensus client sẽ biến một máy tính thành một node. Do đó nó là một phần thiết yếu của node của bạn.

Chúng tôi đã fork Geth thành `ccv2-geth`, như bạn sẽ thấy bên dưới.
{% endhint %}

### Tạo địa chỉ validator

Tạo node validator bằng lệnh sau:

```sh
docker run --rm -ti \
-v $(pwd)/keystore:/root/.ethereum/keystore/ \
chilizchain/ccv2-geth:latest \
--chiliz \  # for Chiliz Mainnet. Use --spicy for Spicy Testnet.
account new
```

Bạn sẽ cần nhập một password cho file secret key.

* **Địa chỉ public của key:** Khi chạy validator, địa chỉ này sẽ được dùng để thiết lập tham số `--unlock`.

```sh
docker run \
-v $(pwd)/my-datadir:/datadir \
--name ccv2-node \
-p 30303:30303 \
chilizchain/ccv2-geth:latest \
--chiliz \ # for Chiliz Mainnet. Use --spicy for Spicy Testnet.
...
--unlock=REPLACE_WITH_VALIDATOR_ADDRESS # This is just an example.
```

* **Đường dẫn của file secret key:** File này cần được chuyển vào thư mục "keystore" bên trong datadir `$(pwd)/my-datadir` mà bạn đã tạo ở các bước trước, vì vậy đường dẫn cuối cùng của file sẽ là\
  `"$(pwd)/my-datadir/keystore/UTC–(TIMESTAMP)-(ADDRESS)"`.\
  **ĐỪNG** thay đổi tên của file.
* **Password:** Password mà bạn đã nhập trong quá trình thực thi lệnh trước đó cần được lưu trong một file:\
  `$(pwd)/my-datadir/password.txt`\
  File này sẽ được dùng để thiết lập tham số `--password` khi chạy node validator.\
  Đừng quên rằng tất cả các file trong đường dẫn host `$(pwd)/my-datadir` sẽ nằm trong container ở thư mục `/datadir`, đây là lý do tham số password nên được thiết lập như ví dụ sau:

```sh
docker run \
-v $(pwd)/my-datadir:/datadir \
--name ccv2-node \
-p 30303:30303 \
chilizchain/ccv2-geth:latest \
--chiliz \ # for Chiliz Mainnet. Use --spicy for Spicy Testnet.
...
--password=/datadir/password.txt
...

```

Điều rất quan trọng là cần ghi nhớ các khuyến nghị sau:

* Bạn có thể chia sẻ địa chỉ **public** của mình với bất kỳ ai. Người khác cần nó để tương tác với bạn.
* Bạn **KHÔNG BAO GIỜ ĐƯỢC CHIA SẺ** secret key với bất kỳ ai! Key kiểm soát quyền truy cập vào tài sản của bạn!
* Bạn phải **SAO LƯU** file key của mình! Nếu không có key, không thể truy cập tài sản trong tài khoản!
* Bạn phải **GHI NHỚ** password của mình! Nếu không có password, không thể giải mã key!

### Tạo node key cho validator

*Phần này là tùy chọn.*

Chúng tôi khuyến nghị bạn tạo một chuỗi thập lục phân ngẫu nhiên cho node.\
Điều này hữu ích cho việc truy vết trên log và để tránh các vấn đề peering với chain.

Để thực hiện điều này, bạn có thể sử dụng <https://www.browserling.com/tools/random-hex> và tạo một key thập lục phân với 64 ký tự cho mỗi node.\
Khi chạy một node validator, bạn có thể thiết lập `--nodekeyhex` với giá trị này. Điều này sẽ đảm bảo rằng khi bạn khởi động lại node, nó sẽ có cùng địa chỉ node (gọi là "enode address") và sẽ giúp việc debug hoặc tìm lỗi trong tương lai dễ dàng hơn.

```bash
docker run \
-v $(pwd)/my-datadir:/datadir \
--name ccv2-node \
-p 30303:30303 \
chilizchain/ccv2-geth:latest \
--chiliz \ # for Chiliz Mainnet. Use --spicy for Spicy Testnet.
...
--nodekeyhex=2668f377e69de_EXAMPLE_REPLACE_WITH_YOUR_VALUE_c88bea3e337446ed73 # This is just an example.
...
```

### Thiết lập cơ chế ánh xạ port NAT của Geth

Tham số `--nat` của Geth có các tùy chọn sau: `any`, `none`, `upnp`, `pmp`, `pmp:<IP>`, và `extip:<IP>`. Mặc định là `any`. [Xem tài liệu Geth để biết thêm thông tin](https://geth.ethereum.org/docs/fundamentals/command-line-options).

Chúng tôi khuyến nghị bạn sử dụng tùy chọn `extip:<IP>`, trong đó `<IP>` là địa chỉ IPv4 public nơi validator được khởi chạy.

```sh
docker run \
-v $(pwd)/my-datadir:/datadir \
--name ccv2-node \
-p 30303:30303 \
chilizchain/ccv2-geth:latest \
--chiliz \ # for Chiliz Mainnet. Use --spicy for Spicy Testnet.
...
--nat=extip:140.250.140.250 # This is just an example.
...
```

### Thiết lập verbosity

Để khắc phục sự cố sâu hơn, tham số mức độ chi tiết log `--verbosity` của Geth có thể được thiết lập như sau:

* 0=silent
* 1=error
* 2=warn
* 3=info
* 4=debug
* 5=detail

Giá trị mặc định là 3.\
Chúng tôi khuyến nghị bạn sử dụng 4.

```sh
docker run \
-v $(pwd)/my-datadir:/datadir \
--name ccv2-node \
-p 30303:30303 \
chilizchain/ccv2-geth:latest \
--chiliz \ # for Chiliz Mainnet. Use --spicy for Spicy Testnet.
...
--verbosity=4 # This is just an example.
...
```

## Thay đổi chủ sở hữu của một node

Có thể sẽ đến lúc bạn không muốn chạy node validator nữa. Khi đó bạn có thể muốn chuyển giao node cho người khác.

Trong trường hợp đó, bạn có thể làm theo các bước sau:

1. Kết nối ví của bạn với [Chiliz Staking dApp](https://governance.chilizchain.com/staking).
2. Nhấp vào nút "Change owner".
3. Trong cửa sổ modal, chỉ ra địa chỉ hiện tại của node mà bạn muốn thay đổi chủ sở hữu, và địa chỉ mới của nó (do chủ sở hữu mới cung cấp).

Sau khi gửi, thay đổi sẽ được áp dụng 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 dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.chiliz.com/vi/hoc-tap/tro-thanh-nha-xac-thuc/chay-mot-node-nha-xac-thuc.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
