# Валидатор болох (Mainnet)

Энэ хэсэгт Линукс үйлдлийн систем дээр Валидатор node ажиллуулахыг харуулна. Танд мэдээллийн технологийн мэргэжлийн мэдлэг, туршлага хэрэгтэй болохыг анхаарна уу!

## Валидаторын шаардлага

Та Валидатор node-ыг ажиллуулахдаа дараах шаардлагыг анхаарна уу!

1. Хамгийн бага барьцааны хэмжээ: 2,000,000 CRX дансандаа байршуулсан байх
2. Бусдын барьцаатай нийлэх дээд хязгаар: Өөрийн барьцаанаас 15 дахин их
3. Төхөөрөмжийн үзүүлэлт: 4 vCPUs (3.1 GHz), 16GiB RAM, багадаа 1TB SSD диск

Валидатор сервер унтрах нь танд хохиролтой тул үүлэн тооцооллыг сонгохыг зөвлөж байна. Энэ зааварт ubuntu-server ашигласан болно.

## Шаардагдах хэрэгслүүдийг суулгах

Та [энэ](/general/network-connection/mainnet.md#shaardalagatai-kheregsliig-suulgakh) зааврын дагуу node-ыг ажиллуулахад хэрэгтэй хэрэгслийг суулгаарай.

## Валидатор хаяг үүсгэх

TEO Валидатор node-ыг ажиллуулахаас өмнө эхлээд TEO энгийн node-ыг асааж, үүнтэйгээ харьцаж байж валидатор эрхийг бүртгүүлнэ. Дараах алхмаар `mainnet`-ын genesis файлыг татан авч `go-corex`-ыг ажиллуулснаар энгийн node асаж, корэкс сүлжээтэй шууд синхрон буюу сүлжээний бүх мэдээллийг дамжуулж эхэлнэ.

```shell
cd build
wget https://github.com/teo-mn/releases/raw/main/genesis/mainnet.g
./corex --genesis mainnet.g
```

![](/files/G1u55Wj5tYGB9gBdUtmK)

Таны node TEO сүлжээнд амжилттай холбогдсон бол `New event` гэсэн өгөгдлүүдийг хүлээн авч синхрончлох процессыг эхлүүлнэ.

![](/files/3SzgekNdF7pZipW1w0lX)

### Валидатор хэтэвч үүсгэх

Бидний ажиллаж буй терминал дээр энгийн node ажиллаж эхэлсэн учраас бид SSH ашиглан валидатор сервертэйгээ нэмж холбогдоно. Сервертэй холбогдсоны дараагаар дараах командаар шинэ хэтэвч үүсгэнэ.

```shell
cd go-corex/build
./corex account new
```

![](/files/KTOirmd1Dfcvdf76pG2Q)

&#x20;Дээрх командыг ажиллуулснаар танаас түлхүүрийг нууцлах нууц үгийг асуух болно. Энэ нууц үгийг та мартахгүй санах хэрэгтэй. Нууц үгээ мартсан тохиолдолд, эсвэл хэтэвч устсан тохиолдолд сэргээх боломжгүй гэдгийг хатуу анхаарна уу. Тиймээс аюулгүйн үүднээс та secret key file-д заагдсан зам, нэрээр үүсгэгдсэн файлыг хаа нэгтэй нөөцөлж авах нь зүйтэй. Уг файл доторх таны хувийн түлхүүр таны нууц үгээр хамгаалагдсан байх болно.

Зурагт үзүүлснээр `Public address of the key` хэсэгт таны түлхүүрийн хаяг байрлах болно. Энэхүү зургаас түлхүүрийн хаягийг албаар авч хаясан болно. Одоо та өөрийн хаягаа [www.corex.mn](http://www.corex.mn) биржээр орж дор хаяж 2,000,000CRX-р цэнэглэх ёстой. Нэмэлт гүйлгээний төлбөрт зориулж арай ихээр цэнэглэхээ мартуузай.

Одоо бид валидатор түлхүүрийг үүсгэх болно.

```shell
./corex validator new
```

![](/files/PjswOL42jkVl5s5FwXLr)

&#x20;Дээрх командыг ажиллуулсны дараа танаас түлхүүрийг нууцлах нууц үгийг асууна. Энэ нууц үгийг та мартахгүй санах хэрэгтэй. Нууц үгээ мартсан тохиолдолд, эсвэл хэтэвч устсан тохиолдолд сэргээх боломжгүй гэдгийг хатуу анхаарна уу. Тиймээс аюулгүйн үүднээс та secret key file-д заагдсан зам, нэрээр үүсгэгдсэн файлыг хаа нэгтэй нөөцөлж авах нь зүйтэй. Уг файл таны нууц үгээр хамгаалагдсан байх болно.

## TEO валидатор бүртгүүлэх

TEO валидатор бүртгүүлэхдээ бид гүйлгээ хийж ухаалаг гэрээтэй харьцах тул дараах командаар JavaScript console-д орно.

```shell
./corex attach
```

![](/files/AOE0oLPkdzVQEOJgH8vm)

&#x20;Уг console дээр `web3` гэж бичиж та хийж болох үйлдлүүдийг харах боломжтой.

Одоо бид TEO сүлжээнд суурилсан ухаалаг гэрээг ашиглан валидатор бүртгүүлэх болно. Эхлээд бидэнд уг гэрээний ABI хэрэгтэй. ABI-г эндээс [github](https://github.com/corex-mn/releases/blob/main/abi/sfc-abi.json) татаж аваарай.

```shell
abi = JSON.parse('Татаж авсан json тэкст')
```

ABI нь TEO-ийн албан ёсны ухаалаг гэрээний, JSON хэлбэрт байгаа [abi](https://en.wikipedia.org/wiki/Application_binary_interface). Одоо гэрээний хуулбарыг авчиръя. Уг албан ёсны ухаалаг гэрээ corex блокчейн дээр `0xc04e800000000000000000000000000000000cfc` хаяг дээр үүсгэгдсэн байдаг.

```shell
sfcc = web3.crx.contract(abi).at("0xc04e800000000000000000000000000000000cfc")
```

Хэрэв бүх зүйл амжилттай болсон бол одоо ухаалаг гэрээний функцийг дуудаж шалгаж үзье. `sfcc` гэж доторх үйлдлүүдийг харах боломжтой.

```shell
sfcc
# Хамгийн сүүлийн валидаторын ID. Алдаагүй бол 0-ээс их утга буцаана.
sfcc.lastValidatorID()
```

<div align="left"><img src="/files/xiU1EA3KnBpYV8nbw5OY" alt=""></div>

&#x20;Хэрэв бүх зүйлүүд амжилттай болсон бол энд алдаа заах учиргүй. Хамгийн сүүлд бүртгүүлсэн валидаторын ID-ыг буцаана. Валидатор бүр дахин давхардахгүй ID-тай байдаг.

Мөн бид бусад валидаторуудын мэдээллийг эндээс харах боломжтой.

```shell
for (i = 1; i <= sfcc.lastValidatorID(); i++) { console.log(sfcc.getValidator(i)); }
```

Дээрх функцийг дуудсанаар та бусад бүх валидаторуудын барьцааны хэмжээ төлөв гэх мэт мэдээллийг харж байх ёстой.

Одоо валидатор үүсгэх гүйлгээг хийцгээе. Эхлээд гүйлгээ хийхэд бэлдэж хэтэвчээ нээе.

```shell
personal.unlockAccount("<таны хаяг>")
```

<div align="left"><img src="/files/xboaph25zVt3lQEXTDGR" alt=""></div>

Дээрх командын `<таны хаяг>` хэсэг дээр `./corex account new` командаар буцаасан хаягийг тавина. Командыг ажиллуулахад түлхүүрийг онгойлгох нууц үгийг танаас асуух болно. Амжилттай болсон бол **true** утга буцаана.

Валидатораар бүртгүүлэхийн тулд гэрээний `createValidator` функцийг дуудна. Уг гүйлгээ 2,000,000CRX болон түүнээс дээш төлбөр шаардана.

```shell
tx = sfcc.createValidator("<таны нийтийн түлхүүр>", {from:"<таны хаяг>", value: web3.toWei("2000000.0", "crx")}) 
```

<figure><img src="/files/U0hyMVRns4MCK9Uj3XoB" alt=""><figcaption></figcaption></figure>

Дээрх командын `<таны нийтийн түлхүүр>` хэсэгт `./corex validator new` командаар буцаасан `Public Key:` дээрх нийтийн түлхүүрийг хуулж тавина. **"0xPubkey" бүтэцтэй байх ёстой.** Харин `<таны хаяг>` гэдэг нь өмнөх командтай адилхан байх юм. `tx`-т валидатор үүсгэх гүйлгээний хаяг хадгалагдана. Энд бид 2,000,000CRX ашиглан валидатор бүртгүүлсэн бөгөөд та энэ хэмжээг ихэсгэх боломжтой. Одоо гүйлгээ аль хэдийн хийгдсэн бөгөөд гүйлгээ амжилттай болсон эсэхийг

```shell
crx.getTransactionReceipt(tx)
```

гэж харах боломжтой.

Одоо та албан ёсоор валидатор болсон бөгөөд өөрийн валидатор ID-аа дараах командаар харах боломжтой.

```shell
sfcc.getValidatorID("<таны хаяг>")
```

<div align="left"><img src="/files/GycqFuavlGf086Jeh051" alt=""></div>

**Анхааруулга**: Дээрх зурагт үзүүлсэн ID-г туршилтаар үүсгэсэн бөгөөд corex сүлжээн дээр ямар ч холбоогүй болно.

Та валидатор болоход барьцаанд тавьсан CRX-ын хэмжээг дараах үйлдлээр харах боломжтой.

```shell
sfcc.getStake("<таны хаяг>", "<таны Validator ID>")
```

<div align="left"><img src="/files/39Nfzp5fe0WsXk5snfwJ" alt=""></div>

Одоо та өөрийн node-ыг валидатор горимоор дахин асаах л үлдлээ.

## Валидатор node асаах

Одоо сүүлийн алхам үлдлээ. Та өөрийн серверийг валидатор горимоор ажиллуулах ёстой. Та өмнө ажиллуулсан энгийн node (SSH терминал) дээр очоод `ctrl + C` дарж зогсоогоод, дараах командаар валидатор горимоор ажиллуулах ёстой.

```shell
nohup ./corex --genesis mainnet.g --nousb --validator.id "Validator ID" --validator.pubkey "0xPubkey" --validator.password "password file" &
```

Дээрх командыг дуудахдаа та өөрийн валидатор ID, нийтийн түлхүүр, валидатор түлхүүрийн нууц үгийг агуулах файлыг зааж өгнө. Нууц үг текст хэлбэрээр файл дотор байрших шаардлагатай. Одоо таны node нь валидатор горимоор ажиллаж эхэллээ. Танд баяр хүргэе!


---

# Agent Instructions: 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:

```
GET https://docs.teo.mn/general/network-connection/validator.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
