# Run Validator

### الزامات سخت‌افزاری

#### Mainnet

| مؤلفه | مشخصات                                                                                                                      |
| ----- | --------------------------------------------------------------------------------------------------------------------------- |
| CPU   | پردازنده سروری پرقدرت و High-performance؛ توصیه می‌شود HyperThreading غیرفعال باشد؛ برای دستیابی به بیش از ۱۰٪ بهبود عملکرد |
| حافظه | ۱۲۸ گیگابایت RAM                                                                                                            |
| دیسک  | ۷ ترابایت NVMe SSD؛ با 40k IOPS، توان انتقال 500 MB/s و تأخیر خواندن کمتر از ۱ میلی‌ثانیه                                   |
| شبکه  | پهنای باند حداقل 512 Mbps                                                                                                   |

> <p align="right">عملکرد دیسک اهمیت بسیار بالایی دارد.<br>NVMe را با SSD معمولی یا HDD جایگزین نکنید؛ چون این کار روی سرعت Sync شدن نود و تولید بلاک تأثیر منفی می‌گذارد.</p>

#### Testnet

| مؤلفه | مشخصات                                             |
| ----- | -------------------------------------------------- |
| CPU   | AMD نسل ۳ یا جدیدتر / Intel Ice Lake یا جدیدتر     |
| حافظه | ۱۶ گیگابایت RAM                                    |
| دیسک  | ۱.۵ ترابایت SSD؛ با 8k IOPS و توان انتقال 250 MB/s |
| شبکه  | پهنای باند حداقل 128 Mbps                          |

***

***

### مرحله ۱؛ نصب Full Node دات‌وان

<p align="right">پیش از اجرای اعتبارسنج، باید یک <strong>Full Node دات‌وان</strong> نصب و کاملاً Sync شده باشد.<br>برای انجام این مرحله، ابتدا راهنمای نصب Full Node را در بخش Developer دنبال کنید.</p>

***

### مرحله ۲؛ آماده‌سازی حساب‌ها

<p align="right">برای راه‌اندازی اعتبارسنج، به دو حساب نیاز دارید:</p>

<p align="right"><strong>Consensus Account</strong><br>برای امضای بلاک‌ها و تولید بلاک استفاده می‌شود.</p>

<p align="right"><strong>BLS Vote Account</strong><br>برای رأی‌دهی در فرایند Fast Finality استفاده می‌شود.</p>

<p align="right">هنگام ثبت اعتبارسنج روی زنجیره، مطمئن شوید این حساب‌ها دقیقاً با اطلاعاتی که وارد می‌کنید مطابقت داشته باشند.</p>

***

### ساخت Consensus Address

<p align="right">برای ساخت یک حساب جدید Consensus و تعیین رمز عبور، دستور زیر را اجرا کنید:</p>

```
geth account new --datadir ${DATA_DIR}
```

<p align="right"><code>DATA_DIR</code> مسیری است که فایل‌های keystore شما در آن ذخیره می‌شوند.</p>

<p align="right">اگر از قبل حساب Consensus دارید، این مرحله را رد کنید.</p>

<p align="right">رمز عبور خود را در یک فایل ذخیره کنید:</p>

```
echo {your-consensus-account-password} > password.txt
```

***

### ساخت BLS Vote Address

<p align="right">برای ساخت یک حساب جدید BLS، دستور زیر را اجرا کنید:</p>

```
geth bls account new --datadir ${DATA_DIR}
```

<p align="right">اگر از قبل کلید BLS دارید، آن را با دستور زیر import کنید:</p>

```
geth bls account import ${KEY_FILE} --datadir ${DATA_DIR}
```

<p align="right">برای بررسی آدرس BLS خود:</p>

```
geth bls account list --datadir ${DATA_DIR}
```

<p align="right">رمز عبور BLS را در یک فایل ذخیره کنید:</p>

```
echo {your-bls-wallet-password} > blspassword.txt
```

***

### مرحله ۳؛ اجرای نود اعتبارسنج

<p align="right">⚠️ <strong>هشدار:</strong> هرگز RPC endpointهای خود را در معرض شبکه عمومی قرار ندهید.</p>

<p align="right">برای شروع اعتبارسنج، دستور زیر را اجرا کنید:</p>

```
geth --config ./config.toml \  --datadir ./node \  -unlock {your-consensus-account-address} \  --miner.etherbase {your-consensus-account-address} \  --password password.txt \  --blspassword blspassword.txt \  --mine \  --vote \  --allow-insecure-unlock \  --cache 18000 \  --history.transactions 0 \  --history.logs.disable
```

***

## عملیات پس از راه‌اندازی

### مانیتور وضعیت نود

<p align="right">توصیه می‌شود از همان لحظه‌ای که نود فعال می‌شود، وضعیت آن را مانیتور کنید.<br>می‌توانید یک metrics exporter را از طریق Docker اجرا کنید:</p>

```
docker run -it -d -p 9090:9090 \  -e "GETH=http://your-node-address:8545" \  hunterlong/gethexporter
```

داشبورد مرجع:\
**Grafana Dashboard #6976**

***

### توقف و ادامه اعتبارسنجی

<p align="right">برای توقف تولید بلاک، به کنسول نود خود متصل شوید:</p>

```
geth attach ipc:path/to/geth.ipc
```

<p align="right">سپس اجرا کنید:</p>

```
miner.stop()
```

<p align="right">برای ادامه اعتبارسنجی:</p>

```
miner.start()
```

***

## نکات و بهترین روش‌ها

### اجرای نود پشتیبان

<p align="right">راه‌اندازی یک نود پشتیبان به‌شدت توصیه می‌شود.<br>اگر اعتبارسنج اصلی شما با مشکل مواجه شود؛ مانند خرابی سخت‌افزار، قطع ارتباط یا خطای نرم‌افزاری؛ نود پشتیبان باعث می‌شود مشارکت شما در شبکه ادامه پیدا کند و ریسک جریمه ناشی از Downtime کاهش یابد.</p>

***

### بررسی پایداری نود

<p align="right">تعداد slashهای اعتبارسنج خود را به‌صورت منظم بررسی کنید.<br>برای این کار از ابزار slash status در ریپازیتوری نود استفاده کنید:</p>

```
cd <dotone>/cmd/jsutils
```

<p align="right">بررسی slashها در آخرین بلاک:</p>

```
node getslashcount.js --Rpc https://rpc.dotone.network
```

<p align="right">بررسی slashها در یک شماره بلاک مشخص:</p>

```
node getslashcount.js --Rpc https://rpc.dotone.network --Num {block_number}
```

<p align="right">یک اعتبارسنج سالم باید روزانه صفر یا نزدیک به صفر slash داشته باشد.<br>بیش از سه slash در یک روز، نشانه‌ای جدی است و باید فوراً بررسی شود.</p>

***

### Maintenance Mode

<p align="right">اگر اعتبارسنج شما به ۵۰ slash برسد، به‌صورت خودکار وارد <strong>Maintenance Mode</strong> می‌شود.</p>

<p align="right">در این وضعیت:</p>

<p align="right">مشکل اصلی را سریع شناسایی و برطرف کنید.<br>به‌محض پایدار شدن نود، از Maintenance Mode خارج شوید.<br>اگر به‌موقع از این وضعیت خارج نشوید، ممکن است نود شما وارد وضعیت jail شود.</p>

<p align="right">برای خروج از Maintenance Mode، تراکنش زیر را از آدرس Consensus اعتبارسنج خود ارسال کنید:</p>

```
geth attach geth.ipc
```

```
web3.eth.sendTransaction({  from: "0x{your-consensus-address}",  to: "0x0000000000000000000000000000000000001000",  data: "0x04c4fec6"})
```

***

### فیلتر کردن Peerها بر اساس الگو

<p align="right">در شرایطی که یک نسخه مشخص از نود دارای باگ‌های بحرانی شناخته‌شده باشد و ارتقای فوری کل شبکه ممکن نباشد، می‌توانید با به‌روزرسانی فایل <code>config.toml</code>، اتصال به peerهایی که از آن نسخه استفاده می‌کنند را قطع کنید:</p>

```
[Node.P2P]PeerFilterPatterns = ["Geth/v{problematic-version}.*"]
```

<p align="right">پس از اعمال تغییر، نود خود را ری‌استارت کنید.</p>

<p align="right">این راهکار موقتی است و پس از ارتقای شبکه باید حذف شود.</p>


---

# 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.dotone.network/documentation/dotone-smartchain-persian/aatbarsnj/run-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.
