#!/bin/bash
# =============================================
# Pearl (PRL) Stratum Havuz Kurulum Scripti
# Siteniz: ragwell.com.tr
# =============================================
set -e
# Renkli çıktılar
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
log() { echo -e "${GREEN}[+]${NC} $1"; }
warn() { echo -e "${YELLOW}[!]${NC} $1"; }
err() { echo -e "${RED}[HATA]${NC} $1"; exit 1; }
# ---------------------------
# 1. Sunucu Hazırlığı
# ---------------------------
log "Sistem paketleri güncelleniyor..."
sudo apt update && sudo apt upgrade -y
sudo apt install -y python3 python3-pip python3-dev memcached build-essential git curl wget ufw screen
log "Memcached başlatılıyor..."
sudo systemctl enable memcached
sudo systemctl restart memcached
# ---------------------------
# 2. Kullanıcıdan Gerekli Bilgiler
# ---------------------------
echo ""
echo "Lütfen aşağıdaki bilgileri girin (varsayılanı kullanmak için boş bırakıp Enter'a basın):"
read -p "Pearl RPC kullanıcı adı [ragwell]: " RPC_USER
RPC_USER=${RPC_USER:-ragwell}
read -p "Pearl RPC şifresi [STRONGPASS123]: " RPC_PASS
RPC_PASS=${RPC_PASS:-STRONGPASS123}
read -p "Pearl RPC port [9332]: " RPC_PORT
RPC_PORT=${RPC_PORT:-9332}
read -p "Havuz komisyon cüzdanı (fee address) [prl1pwx4ec08hegjjchdyqtcd8j6ete0gw0v5nz3ksyk9ak83pc3uc4ns3wus5u]: " FEE_ADDR
FEE_ADDR=${FEE_ADDR:-prl1pwx4ec08hegjjchdyqtcd8j6ete0gw0v5nz3ksyk9ak83pc3uc4ns3wus5u}
read -p "Stratum portu [7777]: " STRATUM_PORT
STRATUM_PORT=${STRATUM_PORT:-7777}
# ---------------------------
# 3. Pearl Full Node Kontrolü
# ---------------------------
log "Pearl full node (pearld) kontrol ediliyor..."
if ! pgrep -x "pearld" > /dev/null; then
warn "pearld çalışmıyor! Lütfen önce Pearl node'u kurup başlatın."
warn "Node kurulumu için: pearlresearch.ai adresinden 'pearld' indirip, aşağıdaki komutla çalıştırın:"
warn "./pearld -daemon -rpcuser=$RPC_USER -rpcpassword=$RPC_PASS -rpcport=$RPC_PORT -rpcallowip=127.0.0.1"
warn "Node senkronize olduktan sonra bu scripti tekrar çalıştırın."
exit 1
fi
# ---------------------------
# 4. stratum-mining Deposu
# ---------------------------
log "stratum-mining deposu klonlanıyor..."
cd ~
if [ -d "stratum-mining" ]; then
warn "Klasör zaten var, güncelleniyor..."
cd stratum-mining && git pull
else
git clone https://github.com/Crypto-Expert/stratum-mining.git
cd stratum-mining
fi
cd mining
# ---------------------------
# 5. Python Bağımlılıkları
# ---------------------------
log "Python bağımlılıkları yükleniyor..."
if [ -f "requirements.txt" ]; then
pip3 install -r requirements.txt
else
pip3 install pylibmc scrypt
fi
# ---------------------------
# 6. Pearl Coin Modülü
# ---------------------------
log "Pearl coin modülü oluşturuluyor..."
cat > coins/pearl.py << EOF
from . import base
class Pearl(base.BaseCoin):
coin_name = "Pearl"
symbol = "PRL"
algorithm = "pearlhash"
address_prefix = "prl1"
rpc_port = ${RPC_PORT}
rpc_user = "${RPC_USER}"
rpc_password = "${RPC_PASS}"
block_reward = 50 # gerçek değere göre düzenleyin
block_time = 140 # saniye
maturity = 100
def __init__(self):
super().__init__()
self.daemon = self.get_daemon()
def getblocktemplate(self):
return self.daemon.getblocktemplate()
def submitblock(self, block_hex):
return self.daemon.submitblock(block_hex)
def validate_address(self, address):
return address.startswith("prl1") and len(address) > 40
EOF
# ---------------------------
# 7. Havuz Ayarları
# ---------------------------
log "Yapılandırma dosyası düzenleniyor..."
# Önce mevcut config.py'ı yedekle
if [ -f "config.py" ]; then
cp config.py config.py.bak
fi
cat > config.py << EOF
# Ragwell Pearl Pool Configuration
# Memcached
MEMCACHE_HOST = '127.0.0.1'
MEMCACHE_PORT = 11211
MEMCACHE_PREFIX = 'ragwell_'
# Stratum
STRATUM_HOST = '0.0.0.0'
STRATUM_PORT = ${STRATUM_PORT}
# Coin
ENABLED_COINS = ['pearl']
# Havuz ücreti
POOL_FEE = 1.5
FEE_ADDRESS = '${FEE_ADDR}'
EOF
# ---------------------------
# 8. Güvenlik Duvarı
# ---------------------------
log "Güvenlik duvarı ayarlanıyor..."
sudo ufw allow ${STRATUM_PORT}/tcp comment 'Pearl stratum'
sudo ufw --force enable
# ---------------------------
# 9. Stratum'u Başlatma
# ---------------------------
log "Stratum sunucusu başlatılıyor..."
# Mevcut çalışan varsa durdur
pkill -f "python3 stratum.py" 2>/dev/null || true
sleep 2
# Arka planda başlat
screen -dmS pearl_pool python3 stratum.py
sleep 3
# Kontrol
if pgrep -f "python3 stratum.py" > /dev/null; then
log "Pearl Stratum havuzu başarıyla başlatıldı!"
else
err "Stratum sunucusu başlatılamadı. Hata logu: $(tail -20 pearl.log)"
fi
# ---------------------------
# 10. Sonuç Bilgileri
# ---------------------------
echo ""
echo "=============================================="
echo " Ragwell Pearl Mining Pool - KURULUM TAMAM"
echo "=============================================="
echo "Stratum adresi : stratum+tcp://sunucu-ip:${STRATUM_PORT}"
echo "Domain (aktifse) : stratum+tcp://prl.ragwell.com.tr:${STRATUM_PORT}"
echo "Komisyon cüzdanı : ${FEE_ADDR}"
echo "Komisyon oranı : %1.5"
echo ""
echo "Madenci batch örneği:"
echo "SRBMiner-MULTI.exe --disable-cpu --algorithm pearlhash --pool stratum+tcp://sunucu-ip:${STRATUM_PORT} --wallet CÜZDAN.İŞÇİ"
echo ""
echo "Stratum loglarını görmek için: screen -r pearl_pool"
echo "=============================================="