از زمان The Merge، نود Ethereum دو برنامه است که با هم کار میکنند: یک کلاینت اجرایی که تراکنشها و وضعیت را مدیریت میکند و یک کلاینت اجماع که زنجیرهٔ اثبات سهام (proof-of-stake) را دنبال میکند. این راهنما Geth (اجرایی) و Lighthouse (اجماع) را روی VPS لینوکسی اجرا میکند. همین چیدمان با جفتکلاینتهای دیگر هم کار میکند.
یک نود کامل به چه چیزی نیاز دارد
- دیسک. این مهمترین محدودیت است. یک نود کامل امروز تقریباً به 1 تا 2 TB ذخیرهسازی سریع NVMe نیاز دارد و این مقدار رشد میکند. نود آرشیو بسیار بیشتر نیاز دارد. پیش از خرید، مستندات فعلی کلاینت را برای حجمهای بهروز بررسی کنید.
- RAM. 16 GB حداقل مطمئن است. 32 GB در زمان همگامسازی و زیر بار RPC کمک میکند.
- CPU. 4 هسته یا بیشتر. سرعت ذخیرهسازی از سرعت کلاک مهمتر است.
- شبکه. ترافیک نامحدود روی پورت سریع. نودها داده زیادی جابهجا میکنند.
به دلیل حجم دیسک، بیشتر افراد برای Ethereum از سرور اختصاصی استفاده میکنند. برای پلنهای متناسب، هاستینگ نود Ethereum را ببینید.
گام ۱: آمادهسازی سرور
از نصب تازهٔ Ubuntu LTS استفاده کنید و مراحل ایمنسازی یک VPS جدید را اجرا کنید. برای هر کلاینت یک کاربر بسازید تا چیزی با root اجرا نشود.
sudo adduser --system --group --no-create-home geth
sudo adduser --system --group --no-create-home lighthouse
sudo mkdir -p /var/lib/geth /var/lib/lighthouse /etc/ethereum
sudo chown geth:geth /var/lib/geth
sudo chown lighthouse:lighthouse /var/lib/lighthouse
مرحله 2: ساخت راز JWT مشترک
دو کلاینت با یک فایل راز مشترک به یکدیگر احراز هویت میکنند.
openssl rand -hex 32 | sudo tee /etc/ethereum/jwt.hex
sudo chmod 640 /etc/ethereum/jwt.hex
sudo chgrp geth /etc/ethereum/jwt.hex
sudo usermod -aG geth lighthouse
مرحله 3: نصب و اجرای Geth
نسخهٔ پایدار را از صفحهٔ رسمی دانلود Geth یا مخزن بستهٔ پروژه دریافت کنید و آن را تأیید کنید. سپس /etc/systemd/system/geth.service را بسازید:
[Unit]
Description=Geth
After=network-online.target
[Service]
User=geth
ExecStart=/usr/local/bin/geth \
--mainnet \
--datadir /var/lib/geth \
--authrpc.jwtsecret /etc/ethereum/jwt.hex \
--http --http.addr 127.0.0.1 --http.api eth,net,web3
Restart=on-failure
TimeoutStopSec=180
[Install]
WantedBy=multi-user.target
اتصال HTTP به 127.0.0.1 RPC را خصوصی نگه میدارد. هرگز آن را مستقیماً روی اینترنت باز نکنید.
مرحله 4: نصب و اجرای Lighthouse
[Unit]
Description=Lighthouse beacon node
After=geth.service
[Service]
User=lighthouse
ExecStart=/usr/local/bin/lighthouse bn \
--network mainnet \
--datadir /var/lib/lighthouse \
--execution-endpoint http://127.0.0.1:8551 \
--execution-jwt /etc/ethereum/jwt.hex \
--checkpoint-sync-url https://mainnet.checkpoint.sigp.io
Restart=on-failure
[Install]
WantedBy=multi-user.target
همگامسازی با چکپوینت (Checkpoint sync) به کلاینت اجماع اجازه میدهد از یک وضعیت مطمئن اخیر شروع کند، بنابراین بهجای چند روز در چند دقیقه آماده میشود. پیش از اتکا به نشانی چکپوینت، آن را با مستندات کلاینت بررسی کنید.
مرحله 5: شروع و پایش همگامسازی
sudo systemctl enable --now geth lighthouse
journalctl -u geth -f
curl -s -X POST -H 'Content-Type: application/json' \
--data '{"jsonrpc":"2.0","method":"eth_syncing","params":[],"id":1}' http://127.0.0.1:8545
مقدار false در نتیجه یعنی نود کاملاً همگام شده است. همگامسازی اول بسته به سرعت دیسک میتواند از چند ساعت تا چند روز طول بکشد.
فایروال و پورتها
پورتهای همتابههمتا را باز کنید (بهطور پیشفرض 30303 TCP/UDP برای Geth و 9000 TCP/UDP برای Lighthouse) تا تعداد همتاهای خوبی داشته باشید. پورتهای 8545، 8551 و 5052 را برای اینترنت عمومی بسته نگه دارید.