اتصال ماینر به استخر از ایران: پورت، ورکر، ریجکت

اگر ماینر روشن است، فن‌ها کار می‌کنند، اما در پنل استخر هیچ ورکری دیده نمی‌شود، مشکل تقریباً همیشه یکی از این سه چیز است: آدرس، پورت، یا نام ورکر. و اگر وصل شده ولی ریجکت بالا می‌زند، مشکل تقریباً هیچ‌وقت «اینترنت ایران» نیست — این را پایین‌تر با عدد نشان می‌دهم.

Stratum در عمل چیست

نسخهٔ ۱ پروتکل Stratum فقط یک اتصال TCP ساده است که رویش JSON خط‌به‌خط رد و بدل می‌شود. ماینر یک اتصال باز می‌کند، mining.subscribe می‌فرستد، بعد mining.authorize با نام ورکر و رمز، استخر با mining.notify جاب می‌فرستد و ماینر با mining.submit شیر تحویل می‌دهد. نه رمزنگاری دارد، نه HTTP است، و مهم‌تر از همه: یک اتصال طولانی‌مدت است که ساعت‌ها باز می‌ماند.

دو نتیجهٔ عملی از این دو خط بیرون می‌آید. اول، هر تجهیز بازرسی بستهٔ میانی می‌تواند محتوای آن را بخواند و ماینینگ را تشخیص دهد — پس عوض کردن پورت به‌تنهایی همیشه کافی نیست. دوم، هر چیزی که اتصال‌های طولانی را می‌کُشد (تایم‌اوت NAT روی مودم، قطعی‌های چندثانیه‌ای، ری‌ست تزریقی) دقیقاً به ماینر آسیب می‌زند، حتی وقتی مرور وب روی همان خط بی‌نقص است.

آدرس و نام ورکر

برای Braiins Pool که مدل اکانت واحد دارد، سه فیلد فرم‌ور این‌ها هستند:

فیلد نمونه نکته
URL stratum+tcp://stratum.braiins.com:3333 یک URL جهانی؛ آدرس‌های منطقه‌ای قدیمی منسوخ شده‌اند
Worker username.rig01 بخش قبل از نقطه باید دقیقاً نام کاربری اکانت باشد
Password x معمولاً بی‌اهمیت است؛ بعضی استخرها با d=8192 سختی را ست می‌کنند

قاعده‌های نام‌گذاری ورکر که واقعاً به کار می‌آیند: فقط ASCII و حروف کوچک، بدون فاصله، زیر ۳۲ کاراکتر، و هیچ‌وقت یک نام روی دو دستگاه. اگر ده ماینر همه worker1 باشند، آمارشان در پنل روی هم می‌افتد و دیگر نمی‌فهمید کدام دستگاه ریجکت می‌دهد؛ عیب‌یابی از همان‌جا غیرممکن می‌شود. نام را طوری بگذارید که محل را بگوید: karaj-r2-s19-04.

این تفکیک ساده نصف کار عیب‌یابی است: اگر ورکر هرگز در پنل ظاهر نشود، احراز هویت یا اتصال شکست خورده؛ اگر ظاهر شود ولی هش‌ریت صفر باشد، احراز هویت موفق بوده و مشکل جای دیگری است.

پورت ۳۳۳۳ و جایگزین‌ها

پورت‌های بالا و غیراستاندارد ارزان‌ترین چیزی هستند که یک فیلتر میانی می‌تواند دور بریزد. برای Braiins سه پورت اعلام شده است — ۳۳۳۳، ۴۴۳ و ۲۵ — و در عمل شانس‌شان یکسان نیست:

Stratum V2 رمزنگاری‌شده است و اثر انگشت ترافیک را کامل عوض می‌کند، ولی فرم‌ورِ کارخانهٔ آنت‌ماینر عموماً پشتیبانی نمی‌کند و به Braiins OS+ نیاز دارید؛ آدرس و پورت فعلی‌اش را از مستندات خودشان بگیرید، نه از مقاله.

هر سه اسلات Pool 1/2/3 فرم‌ور را پر کنید — همان اکانت با پورت‌های مختلف. اما بدانید که failover فوری نیست: فرم‌ور ده‌ها ثانیه روی استخر اول تلاش می‌کند و بعد سراغ بعدی می‌رود. یک استخر اولِ ناپایدار از یک استخر اولِ کاملاً مرده بدتر است، چون مدام برمی‌گردد سراغش.

پروکسی یا استخر واسط چه چیزی را عوض می‌کند

پروکسی استراتوم یک اتصال داخلی به شما می‌دهد و خودش یک اتصال به بالادست نگه می‌دارد. چیزی که حل می‌شود دسترس‌پذیری است، نه فیزیک: تأخیر کل شما می‌شود «شما تا پروکسی» به‌علاوهٔ «پروکسی تا استخر». اگر پروکسی داخل ایران باشد، پای اول ۵ تا ۳۰ میلی‌ثانیه است و پای دوم ثابت.

سه چیز عوض می‌شود که باید قبل از تصمیم بدانید:

۱. نام ورکر شما بالادست بازنویسی می‌شود. در مدل اکانت تجمیعی، همهٔ هش‌ریت زیر یک حساب می‌رود؛ پس ورکر خودتان را در پنل استخر اصلی پیدا نمی‌کنید. حسابداری منتقل می‌شود به دفترِ اپراتور. این معاملهٔ واقعی است: شما به شمارندهٔ شیرِ کسی دیگر اعتماد می‌کنید. حداقل چیزی که باید بخواهید، عدد accepted و stale به‌تفکیک هر ورکر است، نه فقط یک موجودی. (هشریال هم همین مدل را دارد و کارمزد ۲٪ را روی جریان شیر برمی‌دارد؛ رکورد هر کاربر سمت خودش نگه داشته می‌شود.)

۲. کارمزدها روی هم سوار می‌شوند — کارمزد استخر بالادست به‌علاوهٔ کارمزد واسط.

۳. یک نقطهٔ شکست اضافه می‌شود. پروکسی که بخوابد، ماینر شما بیکار است حتی وقتی استخر سلامت کامل دارد. اگر استخر بین‌المللی هرچند لنگ‌زنان در دسترس است، آن را در اسلات ۳ نگه دارید.

تشخیص: مشکل شبکه است یا استخر؟

از یک لپ‌تاپ روی همان سوییچ، به همین ترتیب:

  1. DNS: nslookup stratum.braiins.com — اگر جواب یکی از آدرس‌های 10.10.34.x بود، سر DNS فیلتر شده‌اید و اصلاً به مقصد نرسیده‌اید.
  2. TCP: nc -vz stratum.braiins.com 3333 (روی ویندوز: Test-NetConnection -ComputerName stratum.braiins.com -Port 3333). بی‌پاسخ ماندن SYN یعنی بسته دور ریخته می‌شود؛ RST فوری یعنی ری‌ست تزریقی.
  3. دست‌دادن واقعی استراتوم: printf '{"id":1,"method":"mining.subscribe","params":["t"]}\n' | nc stratum.braiins.com 3333. برگشتن یک خط JSON تنها آزمونی است که ثابت می‌کند مسیر در سطح محتوا هم باز است. مرحلهٔ ۲ می‌تواند موفق باشد و این یکی شکست بخورد — دقیقاً همان‌جاست که بازرسی محتوا دارد کار می‌کند.
  4. کیفیت خط، ده دقیقه‌ای: ping -c 600. به درصد loss و mdev نگاه کنید، نه به میانگین.

و بعد این جدول، که مفیدترین بخش کل ماجراست:

نشانه معمولاً یعنی
ورکر هرگز در پنل ظاهر نمی‌شود نام اکانت/ورکر، یا پورت بسته
ظاهر می‌شود، هش‌ریت صفر احراز هویت اوکی؛ submit مسدود یا سخت‌افزار خوابیده
هر چند دقیقه reconnect تایم‌اوت NAT، افت لینک، یا ری‌ست تزریقی
همهٔ ماینرها، در همان لحظه، در دو سایت جدا استخر یا مسیر بالادست
یک ماینر از ده ماینر همان دستگاه: برد، فن، کابل، تغذیه

همبستگی بین دستگاه‌ها را همیشه اول چک کنید. یک ماینر خراب از ده ماینر، هیچ‌وقت مشکل استخر نیست.

خواندن accepted و stale

شیر پذیرفته‌شده (accepted) یعنی کار معتبری برای جابِ جاری تحویل داده‌اید. stale یعنی جواب برای جابی رسید که دیگر جاری نبود. آستانهٔ سلامت: زیر ۱٪، و روی یک دستگاه سالم معمولاً زیر ۰٫۵٪.

حالا بحث اصلی. فرض کنید تأخیر رفت‌وبرگشت تا اروپا ۱۲۰ میلی‌ثانیه است و بازهٔ آسیب‌پذیر پس از هر بلاک — انتشار بلاک تا استخر، ساخت جاب جدید، رسیدن mining.notify به شما — حدود ۰٫۴ ثانیه. بلاک‌ها به‌طور میانگین هر ۶۰۰ ثانیه پیدا می‌شوند. سهم شیرهایی که در این بازه گیر می‌افتند:

۰٫۴ ÷ ۶۰۰ ≈ ۰٫۰۷٪

حتی اگر بازه را سخاوتمندانه ۱ ثانیه بگیریم، به ۰٫۱۷٪ می‌رسیم. پس تأخیر جغرافیایی نمی‌تواند ریجکت ۳٪ بسازد. اگر عدد شما ۳٪ است، دنبال این‌ها بروید:

دو تلهٔ رایج در خواندن همین اعداد: خطای سخت‌افزاری (HW) ستون جداگانه‌ای است و همیشه محلی — دستگاهی با ۲٪ خطای سخت‌افزاری بدون توجه به استخر ۲٪ درآمد از دست می‌دهد. و اگر تعداد شیرها نصف شد ولی هش‌ریت تغییر نکرد، استخر سختی (vardiff) را بالا برده؛ این ایراد نیست.

پهنای باند: عدد سرانگشتی

حساب کنیم. یک دستگاه ۱۰۰ تراهش با سختی ۶۵۵۳۶ در ثانیه 10^14 ÷ (65536 × 2^32) ≈ ۰٫۳۶ شیر می‌فرستد، یعنی حدود ۲۱ شیر در دقیقه. هر submit با پاسخش حدود ۲۶۰ بایت است؛ به‌علاوهٔ جاب‌ها (هر ۳۰ ثانیه چند کیلوبایت) و سرِ بستهٔ TCP/IP، جمعاً چیزی حدود ۲۵۰ بایت بر ثانیه ≈ ۲۲ مگابایت در روز ≈ زیر ۱ گیگابایت در ماه. این تخمین است و به سختی‌ای که استخر می‌دهد حساس؛ اما مرتبهٔ بزرگی‌اش درست است — و عددِ «۳۲ کیلوبایت بر ثانیه» که در مقاله‌های فارسی دست‌به‌دست می‌شود، بیش از صد برابر این است.

نتیجهٔ عملی: پهنای باند هیچ‌وقت مشکل نیست. پایداری مشکل است. یک خط ۱ مگابیت با ۰٫۲٪ اتلاف، برای ماینینگ از یک خط ۵۰ مگابیت با ۳٪ اتلاف بهتر است.

چیزهایی که باید خودتان بررسی کنید

هیچ عددی دربارهٔ مجوز، تعرفهٔ برق ماینینگ یا ساعات ممنوعه را — از این متن یا هر متن دیگری — به‌عنوان وضعیت روز نپذیرید. تعرفهٔ ماینینگ فرمولی است که به‌صورت فصلی بازتنظیم می‌شود و ضریب‌های ساعتی دارد؛ هر مقاله‌ای که آن را یک عدد ثابت بنویسد، فصل بعد غلط است. مرجع، اعلامیهٔ رسمی توانیر و شرکت توزیع منطقهٔ خودتان و صورت‌حساب واقعی خودتان است. وضعیت حقوقی اتصال از مسیرهای جایگزین هم روشن نیست؛ خودتان تصمیم بگیرید و به کسی که برایتان قطعی حرف می‌زند اعتماد نکنید.

یک کار آخر که ارزشش را دارد: از روز اول برای هر ماینر لاگ بگیرید — تاریخ، پورت، درصد stale، درصد HW. سه هفته بعد که سؤال «مشکل از استخر است یا از من؟» پیش بیاید، جواب در همان فایل است.

Hashrial — Bitcoin Mining Pool

Hashrial is a Bitcoin mining pool proxy with 2% fees. Connect your ASIC miners and earn BTC with high reliability, real-time monitoring and instant payouts.