secp256k1 — جستجوی آموزشی d در بازهٔ کوچک (BSGS Window)

اگر این بخش را پر کنی، فیلدهای تک‌نقطهٔ بالا نادیده گرفته می‌شوند و نتایج برای همهٔ خطوط محاسبه می‌شود.
اگر این مقدار را وارد کنی، ورکرها پس از رسیدن به این آفست متوقف می‌شوند و job جدیدی ساخته نمی‌شود.
در حالت تصادفی باید offset پایان مشخص باشد تا قطعات آماده‌ی پردازش شوند.
همین مقدار باید در فایل‌های ورکر استفاده شود. برای امنیت از رشته‌ای تصادفی و طولانی استفاده کن.
این ابزار فقط در بازهٔ [offset, offset + 2^bits - 1] جستجو می‌کند و برای کلیدهای واقعی کارایی ندارد.
برای اجراهای موازی، مقدار workers را روی تعداد پردازش‌ها بگذار و برای هر پردازش، worker_id یکتا (۰ تا workers-1) تنظیم کن.
پردازش سمت سرور مادر غیرفعال شده است؛ پس از ذخیرهٔ تنظیمات، فقط ورکرها بازه‌ها را اجرا می‌کنند.
مدیریت ورکرها (Mother/Worker):
آدرس درخواست کار: https://landing.exzix.com/tabdil/1/logaritm1.php?action=request_job
آدرس ارسال نتیجه: https://landing.exzix.com/tabdil/1/logaritm1.php?action=submit_result
پارامترهای الزامی هر درخواست: secret (همان API Secret) و worker (نام دلخواه).
برای ساخت ورکر جدید، فایل tabdil/logaritm_worker.php را روی هاست مقصد کپی کن، آدرس مادر ($masterUrl) و $apiSecret را تنظیم کن و اسکریپت را اجرا یا Cron کن.
هر بار که ورکر کار جدیدی می‌گیرد، مقدار offset به‌طور خودکار جلو می‌رود و تعداد ورکرها محدودیتی ندارد.
اگر فیلد offset پایان را پر کنی، API بعد از رسیدن به آن مقدار پیام «No job» به ورکر می‌دهد و جستجو متوقف می‌شود.
گزارش همهٔ بازه‌های تخصیص داده‌شده و کامل‌شده در جدول دیتابیس logaritm_range_events ذخیره می‌شود.
می‌توانی هنگام درخواست کار، پارامتر mode=random یا mode=sequential بفرستی؛ اگر مقدار خالی باشد، حالت تعیین‌شده در فرم مادر استفاده می‌شود.
برای هماهنگی قدرت سرورها، پارامتر اختیاری bits را هم می‌توانی به درخواست job اضافه کنی تا هر ورکر اندازهٔ بازهٔ خودش را تعیین کند (فقط در حالت sequential و تا سقف مقداری که در فرم مادر ذخیره شده).
این اجرا با استفاده از آخرین دادهٔ ذخیره‌شده انجام شد.
آخرین دادهٔ ذخیره‌شده:
Px: 105375472556297536735285251580242662847958688160562361671156223086759899067855
Py: 84058201501225364660944553681450495737476878048515239639790126331814760641211
bits: 40
روش تخصیص بازه: sequential
offset فعلی: 7881299347898369
حد توقف offset: 9994873083863346
offset پایه برای محاسبهٔ قطعات: 1
تعداد کارگرها: 1 (شناسهٔ فعلی: 1)
آفست آماده برای نوبت بعد: random
آخرین بازه: از 932110982447105 تا 932145342185472
آخرین اجرا: 2025-12-13T05:57:19+00:00
API Secret فعلی: 2
مسیر فایل ذخیره‌سازی: db:tabdil.logaritm_state
خلاصهٔ پردازش‌ها:
موارد یافت‌شده: 42
قطعات تکمیل‌شده (تجمیعی): 95088
آمار ورکرها:
نام ورکرتخصیصاتمامیافتهآخرین فعالیت
ir1 77 66 1 2025-11-21T17:57:29+00:00
pardazesh 597 523 30 2025-12-07T17:46:55+00:00
worker-1 203129 202760 8 2025-12-13T05:57:20+00:00
win 78 67 1 2025-12-06T07:53:22+00:00
worker-sqlite 20 17 2 2025-12-06T20:03:55+00:00
آخرین گزارش از ورکر:
شغل: job_1398de772692 (ورکر: worker-1)
بازه: 932110982447105 → 932145342185472 (bits: 35)
وضعیت: چیزی پیدا نشد
مدت تخمینی: 1.2291679382324 ثانیه
زمان ثبت: 2025-12-13T05:57:20+00:00
راهنمای تست امن:
  1. یک عدد کوچک (مثلاً d=123456) بردار و با تابعی بیرونی P = d·G بساز (یا از همین کد، بخش mulP را موقتاً برای ساخت P استفاده کن).
  2. مختصات P را اینجا وارد کن، offset=0 و bits را طوری بگذار که بازه شامل d باشد (برای d=123456، مثلاً bits=17).
  3. کد باید همان d را در بازهٔ محدود برگرداند.

پیچیدگی زمانی/حافظه ≈ \(O(2^{bits/2})\). برای bits=24 حدود 4096 baby-step ذخیره می‌شود.

تذکر مهم امنیتی: