🇹🇷 Adım adım Türkçe manuel kurulum rehberi.
🌐 Ağ: Testnet Asimov Phase 5
📖 Kaynak: docs.genlayer.com/validators/setup-guide
- Sistem Gereksinimleri
- Sunucu Hazırlığı
- GenLayer CLI ve Validator Cüzdanı
- Node Yazılımını İndir ve Kur
- Konfigürasyon Dosyasını Oluştur
- Operator Key'i İçe Aktar
- Node'u Servis Olarak Çalıştır
- Faydalı Komutlar
- Güncelleme Rehberi
- Sık Yapılan Hatalar
| Kaynak | Gereksinim |
|---|---|
| 🖥️ RAM | 16 GB |
| ⚙️ CPU | 8 çekirdek — AMD64 (x86_64) zorunlu! ARM çalışmaz. |
| 💾 Disk | 128 GB SSD/NVMe |
| 🌐 Ağ | 100 Mbps |
| 🐧 İşletim Sistemi | 64-bit Linux (Ubuntu 20.04+ önerilir) |
| 🔧 Yazılım | Docker, Python 3, Node.js v18+, npm |
⚠️ ÖNEMLİ: Mutlaka AMD64/x86_64 mimarili sunucu kullan.uname -mkomutux86_64döndürmelidir.
💰 Token Gereksinimi: Minimum 42.000 GEN token gereklidir.
sudo apt update && sudo apt upgrade -ysudo apt install -y curl wget git build-essential python3 python3-pip python3-venv ca-certificates gnupg lsb-release# Eski Docker sürümlerini kaldır
sudo apt remove -y docker docker-engine docker.io containerd runc 2>/dev/null || true
# Resmi GPG anahtarını ekle
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# Repoyu ekle
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Docker'ı kur
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
# Kullanıcını docker grubuna ekle (sudo'suz docker kullanımı)
sudo usermod -aG docker $USER
newgrp docker
# Doğrula
docker --version
docker compose version💡 Alternatif — tek komutla Docker kurulumu:
wget -q -O docker.sh https://raw.githubusercontent.com/molla202/molla202/refs/heads/main/docker.sh && chmod +x docker.sh && sudo /bin/bash docker.sh
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt install -y nodejs
# Doğrula (18.x veya üzeri olmalı)
node --version
npm --versionuname -m
# x86_64 görmelisin. Başka bir şey varsa bu sunucu çalışmaz.
⚠️ Bu adım kendi bilgisayarında (local) yapılmalıdır. Owner adresi soğuk cüzdanda tutulmalıdır.
💡 Bu bölümün amacı nedir?
Validator olabilmek için bir validator akıllı kontratı deploy etmen gerekiyor.
Bu kontratgenlayer staking wizardile oluşturuluyor.
Wizard aynı zamanda node'un blok imzalamak için kullanacağı operator adresini de üretiyor.
Operator adresi olmadan node validator modunda çalışamaz.
npm install -g genlayer
genlayer --versionEğer zaten bir owner cüzdanın varsa wizard'ı çalıştırmadan önce bunu CLI'ya tanıt.
Wizard açıldığında mevcut hesaplarını listeler — import ettiğin cüzdanı seçerek devam edebilirsin.
Yeni cüzdan oluşturacaksan bu adımı atlayabilirsin, wizard sana yeni hesap oluşturma seçeneği sunar.
genlayer account import \
--password "KAYIT_ŞIFRESI" \
--private-key "0xOWNER_PRIVATE_KEY" \
--name "owner"genlayer staking wizardWizard sırasıyla şunları yapar:
| Adım | Açıklama |
|---|---|
| 1️⃣ Hesap seçimi | Import ettiğin cüzdanı seç veya yeni owner hesabı oluştur |
| 2️⃣ Ağ seçimi | testnet-asimov seç |
| 3️⃣ Bakiye kontrolü | En az 42.000 GEN token olduğunu doğrular |
| 4️⃣ Operator oluşturma | Node'un imzalama adresi olan operator hesabını oluşturur |
| 5️⃣ Stake miktarı | Kaç GEN stake edeceğini girersin (min: 42.000) |
| 6️⃣ Kontrat deploy | Validator akıllı kontratını zincire yazar |
| 7️⃣ Kimlik ayarı | Moniker, website gibi bilgileri girersin |
✅ Wizard tamamlandığında sende hem bir validator wallet adresi (akıllı kontrat)
hem de bir operator adresi (imzalama hesabı) olacak. İkisi de node config'inde zorunlu.
Owner Adresi : 0x... ← Stake çekme yetkisi — SOĞUK CÜZDANDA TUT
Operator Adresi : 0x... ← Node'un imzalama adresi (config'de lazım)
Operator Private Key: 0x... ← Node'a import için lazım — GÜVENLİ SAKLA
Validator Wallet : 0x... ← Akıllı kontrat adresi (config'de lazım)
genlayer staking validator-info --validator 0xVALIDATOR_WALLET_ADRESİN🖥️ Bu adımdan itibaren sunucunda çalışıyorsun.
curl -s "https://storage.googleapis.com/storage/v1/b/gh-af/o?prefix=genlayer-node/bin/amd64" | \
grep -o '"name": *"[^"]*"' | \
sed -n 's/.*\/\(v[^/]*\)\/.*/\1/p' | \
sort -ru | grep -v "rc" | head -n 5Kurulum boyunca $HOME/.genlayer sabit klasörünü kullanacağız.
Güncelleme sırasında bu isim değişmez — sadece bin ve third_party içeriği güncellenir.
export VERSION=v0.5.12 # Yukarıdaki listeden en yeni versiyonu kullan
wget https://storage.googleapis.com/gh-af/genlayer-node/bin/amd64/${VERSION}/genlayer-node-linux-amd64-${VERSION}.tar.gz
mkdir -p $HOME/.genlayer
tar -xzvf genlayer-node-linux-amd64-${VERSION}.tar.gz
mv $HOME/genlayer-node-linux-amd64/* $HOME/.genlayer/
cd $HOME/.genlayerpython3 $HOME/.genlayer/third_party/genvm/bin/setup.py⏳ Birkaç dakika sürebilir, sabırla bekle.
genlayernode komutunu her yerden çalıştırabilmek için sistem genelinde erişilebilir hale getiriyoruz.
sudo ln -sf $HOME/.genlayer/bin/genlayernode /usr/local/bin/genlayernode
# Doğrula
which genlayernode
genlayernode --versionmkdir -p $HOME/.genlayer/configs/node
mkdir -p $HOME/.genlayer/data
mkdir -p $HOME/.genlayer/logs# --- Kendi bilgilerinle doldur ---
VALIDATOR_WALLET="0xVALIDATOR_WALLET_ADRESİN" # Wizard'dan aldın
OPERATOR_ADDRESS="0xOPERATOR_ADRESİN" # Wizard'dan aldın
# --------------------------------
echo "Validator : $VALIDATOR_WALLET"
echo "Operator : $OPERATOR_ADDRESS"🌐 Asimov RPC:
HTTP:https://zksync-os-testnet-genlayer.zksync.dev/http
WS:wss://zksync-os-testnet-genlayer.zksync.dev/ws
cat > $HOME/.genlayer/configs/node/config.yaml << EOF
# rollup configuration
rollup:
genlayerchainrpcurl: "https://zksync-os-testnet-genlayer.zksync.dev/http"
genlayerchainwebsocketurl: "wss://zksync-os-testnet-genlayer.zksync.dev/ws"
provider: "caldera"
# Testnet Asimov Phase 5 — consensus configuration
consensus:
consensusaddress: "0xe66B434bc83805f380509642429eC8e43AE9874a"
genesis: 17326
# data directory
datadir: "./data/node"
# logging configuration
logging:
level: "INFO"
json: false
file:
enabled: true
level: "DEBUG"
folder: logs
maxsize: 10
maxage: 7
maxbackups: 100
localtime: false
compress: true
# node configuration
node:
mode: "validator"
validatorWalletAddress: "${VALIDATOR_WALLET}"
operatorAddress: "${OPERATOR_ADDRESS}"
admin:
port: 9155
rpc:
port: 9151
endpoints:
groups:
genlayer: true
genlayer_debug: true
ethereum: true
zksync: true
ops:
port: 9153
endpoints:
metrics: true
health: true
balance: true
# genvm configuration
genvm:
root_dir: ./third_party/genvm
start_manager: true
manager_url: http://127.0.0.1:3999
permits: 8
# advanced configuration
merkleforest:
maxdepth: 16
dbpath: "./data/node/merkle/forest/data.db"
indexdbpath: "./data/node/merkle/index.db"
merkletree:
maxdepth: 16
dbpath: "./data/node/merkle/tree/"
# metrics configuration
metrics:
interval: "15s"
collectors:
node:
enabled: true
genvm:
enabled: true
webdriver:
enabled: true
EOFKontrol et:
cat $HOME/.genlayer/configs/node/config.yaml💡 Wizard sırasında oluşturulan operator hesabının private key'ini node'a import ediyoruz.
genlayernode account import \
--password "BURAYA_NODE_ŞİFRENİ_YAZ" \
--private-key "0xOPERATOR_PRIVATE_KEY" \
--name "operator"Başarılı çıktı:
Account imported:
Name: operator
Address: 0x...
✅ Görünen adresin wizard'dan aldığın Operator Adresi ile eşleştiğini doğrula.
genlayernode account list -c $HOME/.genlayer/configs/node/config.yamlgenlayernode account export \
--account "operator" \
--password "YEDEK_KEYSTORE_ŞİFREN" \
--source-password "NODE_ŞİFREN" \
--output "$HOME/operator-backup.json"🔐 Bu dosyayı güvenli bir yerde sakla! Kaybedersen yeni operator kurman gerekir.
LLM API key'ini node binary'si GenVM modülü üzerinden kullanır.
Key, systemd servisine Environment= direktifi ile verilir — ayrı bir .env dosyasına gerek yok.
cd $HOME/.genlayer
docker compose up -d
# Container çalışıyor mu?
docker ps
# "genlayer-node-webdriver" görünmelicd $HOME/.genlayer
genlayernode doctor
⚠️ Tüm kontroller geçmeli. Hata görüyorsan servise geçmeden önce mutlaka düzelt.
💡 Heurist — ücretsiz API kredisi için dev-api-form.heurist.ai (referral kod:
genlayer)
Başka sağlayıcı kullanıyorsan ilgiliEnvironment=satırının başındaki#işaretini kaldır ve key'ini gir.
sudo tee /etc/systemd/system/genlayer-node.service > /dev/null << EOF
[Unit]
Description=GenLayer Validator Node — Testnet Asimov
After=network-online.target docker.service
Wants=network-online.target
Requires=docker.service
[Service]
Type=simple
User=$USER
WorkingDirectory=$HOME/.genlayer
# Node şifresi
Environment="GENLAYERNODE_PASSWORD=BURAYA_NODE_ŞİFRENİ_YAZ"
# LLM API Key — kullandığın sağlayıcının satırını doldur
Environment="HEURISTKEY=BURAYA_HEURIST_API_KEY_YAZ"
#Environment="COMPUT3KEY=BURAYA_COMPUT3_API_KEY_YAZ"
#Environment="IOINTELLIGENCE_API_KEY=BURAYA_IONET_API_KEY_YAZ"
#Environment="CHUTES_API_KEY=BURAYA_CHUTES_API_KEY_YAZ"
#Environment="OPENAIKEY=BURAYA_OPENAI_API_KEY_YAZ"
ExecStart=/usr/local/bin/genlayernode run \
-c $HOME/.genlayer/configs/node/config.yaml \
--password \${GENLAYERNODE_PASSWORD}
Restart=on-failure
RestartSec=10
LimitNOFILE=65535
StandardOutput=journal
StandardError=journal
SyslogIdentifier=genlayer-node
[Install]
WantedBy=multi-user.target
EOFsudo systemctl daemon-reload
sudo systemctl enable genlayer-node
sudo systemctl start genlayer-node
# Durumu kontrol et
sudo systemctl status genlayer-node# Canlı log
sudo journalctl -u genlayer-node -f
# Sync durumu
sudo journalctl -u genlayer-node | grep "Node is synced"
# "Node is synced!!! blockNumber=XXXXX" görmelisinsudo systemctl stop genlayer-node
sudo systemctl restart genlayer-node
sudo systemctl status genlayer-node
sudo journalctl -u genlayer-node -n 100 --no-pagercurl http://localhost:9153/health
curl http://localhost:9153/metrics
curl http://localhost:9153/balance# Kayıtlı hesapları listele
genlayernode account list -c $HOME/.genlayer/configs/node/config.yaml
# Key yedeği al
genlayernode account export \
--account "operator" \
--password "YEDEK_KEYSTORE_ŞİFREN" \
--source-password "NODE_ŞİFREN" \
--output "$HOME/operator-backup.json"# Validator bilgileri
genlayer staking validator-info --validator 0xVALIDATOR_WALLET_ADRESİN
# Aktif validatorlar
genlayer staking active-validators
# Ek stake
genlayer staking validator-deposit --amount 1000gen
# Çıkış (7-epoch unbonding başlar)
genlayer staking validator-exit --shares 100
# Fonları çek (unbonding bittikten sonra)
genlayer staking validator-claim
# Kimlik güncelle
genlayer staking set-identity --validator 0x... --moniker "YeniIsim"♻️
configs,datavelogsklasörleri korunur. Sadecebinvethird_partygüncellenir.
export NEW_VERSION=v0.5.13
# 1. Yeni versiyonu indir ve çıkart (kendi klasörüyle gelir: genlayer-node-linux-amd64/)
wget https://storage.googleapis.com/gh-af/genlayer-node/bin/amd64/${NEW_VERSION}/genlayer-node-linux-amd64-${NEW_VERSION}.tar.gz
tar -xzvf genlayer-node-linux-amd64-${NEW_VERSION}.tar.gz
# 2. Yeni GenVM kurulumu (çıkan klasör içinden çalıştır)
python3 $HOME/genlayer-node-linux-amd64/third_party/genvm/bin/setup.py
# 3. Servisi durdur
sudo systemctl stop genlayer-node
# 4. Binary ve GenVM'i güncelle — configs/data/logs dokunulmaz
rm -rf $HOME/.genlayer/bin $HOME/.genlayer/third_party
mv $HOME/genlayer-node-linux-amd64/bin $HOME/.genlayer/
mv $HOME/genlayer-node-linux-amd64/third_party $HOME/.genlayer/
mv $HOME/genlayer-node-linux-amd64/docker-compose.yaml $HOME/.genlayer/
# 5. Symlink güncelle ve versiyonu doğrula
sudo ln -sf $HOME/.genlayer/bin/genlayernode /usr/local/bin/genlayernode
genlayernode --version
# 6. WebDriver'ı yeniden başlat
cd $HOME/.genlayer
docker compose down
docker compose up -d
# 7. Servisi başlat ve logları izle
sudo systemctl start genlayer-node
sudo journalctl -u genlayer-node -f
# 8. Temizlik
rm -rf $HOME/genlayer-node-linux-amd64
rm genlayer-node-linux-amd64-*.tar.gzARM işlemci kullanıyorsun. AMD64 sunucuya geç.
uname -m # x86_64 olmalıServis dosyasında LLM API key boş bırakılmış.
sudo systemctl edit genlayer-node
# Environment="HEURISTKEY=..." satırını güncelle
sudo systemctl restart genlayer-nodevalidatorWalletAddress veya operatorAddress config'de boş.
nano $HOME/.genlayer/configs/node/config.yaml
sudo systemctl restart genlayer-nodesudo usermod -aG docker $USER
newgrp dockercd $HOME/.genlayer
docker compose down
docker compose up -d
docker logs genlayer-node-webdriverYeniden başlatma veya güncelleme sonrası geçici olarak normaldir. Epoch'lar tamamlandıkça otomatik temizlenir.
| 🔗 | Link |
|---|---|
| 📖 Resmi Kurulum Rehberi | docs.genlayer.com/validators/setup-guide |
| ⚙️ GenVM Konfigürasyonu | docs.genlayer.com/validators/genvm-configuration |
| 🔭 Explorer — Asimov | genlayer-explorer.vercel.app |
| 💬 Discord | discord.gg/8Jm4v89VAu |
| 📢 Telegram | t.me/genlayer |
✅ Sorun yaşarsan GenLayer Discord
#validatorskanalına sorabilirsin.