حوض تعدين بيتكوين مبسط مبني بلغة Python مع دعم بروتوكول Stratum.
bitcoin_mining_pool/
├── 📂 core/ # النواة الأساسية
│ ├── __init__.py
│ ├── stratum_server.py # خادم Stratum
│ └── bitcoin_rpc.py # عميل RPC للعقدة
│
├── 📂 pool/ # منطق الحوض
│ ├── __init__.py
│ ├── job_manager.py # إدارة المهام
│ └── share_processor.py # معالجة الشيرات
│
├── 📂 utils/ # أدوات مساعدة
│ ├── __init__.py
│ └── database.py # إدارة قاعدة البيانات
│
├── 📂 config/ # ملفات الإعدادات
│ └── config.yaml # ملف الإعدادات الرئيسي
│
├── 📂 logs/ # ملفات السجلات
│ └── pool.log
│
├── 📂 data/ # قاعدة البيانات
│ └── mining_pool.db
│
├── main.py # نقطة الدخول الرئيسية
├── requirements.txt # الحزم المطلوبة
├── .env.example # مثال للإعدادات البيئية
└── README.md # هذا الملف
# إنشاء مجلد المشروع
cd bitcoin_mining_pool
# إنشاء بيئة افتراضية
python3 -m venv venv
# تفعيل البيئة الافتراضية
# على Linux/macOS:
source venv/bin/activate
# على Windows:
venv\Scripts\activate# تثبيت جميع الحزم المطلوبة
pip install -r requirements.txt# نسخ ملف الإعدادات البيئية
cp .env.example .env
# تعديل الإعدادات حسب احتياجاتك
nano config/config.yaml# ملف bitcoin.conf في عقدة البيتكوين
server=1
rpcuser=bitcoin
rpcpassword=your_secure_password_here
rpcallowip=127.0.0.1
rpcport=8332pool:
host: "0.0.0.0" # عنوان الاستماع
port: 3333 # منفذ Stratum
bitcoin:
rpc_host: "127.0.0.1"
rpc_port: 8332
rpc_user: "bitcoin"
rpc_password: "your_password"# تأكد من تفعيل البيئة الافتراضية
source venv/bin/activate # Linux/macOS
# تشغيل الخادم
python main.py# تحديد ملف إعدادات مختلف
python main.py --config /path/to/config.yaml
# تشغيل في الخلفية
nohup python main.py > logs/output.log 2>&1 &# استخدام netcat للاختبار
nc localhost 3333
# إرسال طلب subscribe
{"id":1,"method":"mining.subscribe","params":[]}# مثال لإعدادات cgminer
./cgminer --btc-only -o stratum+tcp://127.0.0.1:3333 -u worker1 -p x| الأمر | الوصف |
|---|---|
mining.subscribe |
الاشتراك في الحوض |
mining.authorize |
تفويض العامل |
mining.submit |
إرسال الشير |
mining.configure |
تكوين المعدن |
mining.suggest_difficulty |
اقتراح الصعوبة |
mining.ping |
اختبار الاتصال |
# عرض السجلات في الوقت الحقيقي
tail -f logs/pool.log
# فلترة الأخطاء
grep "ERROR" logs/pool.log# الوصول للمقاييس
curl http://localhost:9090/metrics# التحقق من المنفذ
netstat -tlnp | grep 3333
# قتل العملية
pkill -f main.py
# إعادة تشغيل الخدمة
systemctl restart mining-pool # إذا كانت خدمة systemd# اختبار عميل RPC
python -m core.bitcoin_rpc
# اختبار قاعدة البيانات
python -m utils.database- هذا مشروع تعليمي - لا يستخدم في بيئة إنتاج فعلية
- الأمان - قم بتغيير كلمات المرور الافتراضية
- الاختبار - استخدم testnet أولاً قبل mainnet
- الموارد - تأكد من موارد كافية للخادم
للمشاكل والاقتراحات، يرجى فتح issue في المشروع.