پروتکل های استخراج
0

پروتکل های استخراج

بازدید : 276

همانطور که می دانید فرآیند استخراج ، بلاک های جدیدی به زنجیره بلاک اضافه می کند و تغییر در تاریخچه تراکنش ها را دشوار می کند.در این مقاله به بررسی پروتکل های استخراج می پردازیم.

روش های ماینینگ

استخراج انفرادی (Solo mining): در این روش ماینر تلاش می کند بلاک های جدیدی را به تنهایی تولید کند . درآمد حاصل از پاداش بلوک و هزینه های معامله کاملا به خود او اختصاص می یابد .

استخراج استخری(Pooled mining): در این روش ماینرها منابع خود را با منابع سایر ماینرها به کار می گیرند. و تشکیل استخر استخراج (pool) داده تا بلاک ها را پیدا کند . و درآمد حاصل از آن بین استخراج کنندگان استخر تقسیم می شود .

استخراج انفرادی

همانطور که در زیر نشان داده شده است ، ماینرهای انفرادی معمولاً از bitcoind برای گرفتن تراکنش های جدید از شبکه استفاده می کنند. Bitcoind یک سرور full node است که یک شبکه P2P ایجاد کرده ، بلاکچین را همگام سازی می کند و تراکنش ها و بلوک ها را تأیید می کند.

نرم افزار استخراج به طور دوره ای با استفاده از پروتکل getblocktemplate برای تراکنش های جدید از bitcoind پرس و جو می کند ، لیستی از تراکنش های جدید به علاوه کلید عمومی که تراکنش coinbase باید به آن ارسال شود ، را ارائه می دهد.

پروتکل استخراج - استخراج انفرادی
پروتکل استخراج – استخراج انفرادی

نرم افزار استخراج (mining software)با استفاده از templateبلاک و هدر بلاک را ایجاد می کند. سپس هدر بلوک 80 بایت را به همراه سختی هدف (سختی شبکه) به سخت افزار استخراج خود (ASIC) می فرستد. سخت افزار استخراج از طریق ایجاد مقدار مناسب برای nonce هش مربوط را تولید می کند.

اگر هیچ یک از هش ها کمتر از سختی هدف نباشد ، سخت افزار استخراج یک هدر بلوک به روز شده با یک ریشه مرکل جدید از نرم افزار استخراج دریافت می کند. این سرآیند بلوک جدید با افزودن داده های غیر nonce اضافی به قسمت coinbase در تراکنش coinbase ایجاد می شود.

مطلب مفید: بلاک چین چیست؟

از طرف دیگر ، اگر یک هش کمتر از سختی هدف پیدا شود ، سخت افزار استخراج هدر بلوک را با nonce موفق به نرم افزار استخراج برمی گرداند. نرم افزار استخراج هدر را با بلاک ترکیب می کند و بلاک کامل شده را به bitcoind می فرستد تا علاوه بر زنجیره بلوک به شبکه پخش شود.

استخراج استخر

استخراج کنندگان استخر از یک روند کاری که در زیر نشان داده شده است پیروی می کنند .در این روش به ماینرها براساس سهم خود از کار انجام شده پاداش پرداخت می شود. استخر استخراج تراکنش های جدیدی را با استفاده از bitcoind از شبکه دریافت می کند. نرم افزار استخراج ماینرها به استخر متصل می شود و اطلاعات مورد نیاز برای ساخت هدرهای بلوک را درخواست می کند.

پروتکل استخراج رمزارز

در این روش، استخر استخراج، سختی را چند مرتبه بالاتر یا سخت تر از سختی شبکه تنظیم می کند. این کار ثابت می کند که هر ماینر درصدی از مقادیر احتمالی هش را بررسی کرده است .

سپس ماینر نسخه ای از اطلاعات مورد نیاز را به استخر می فرستد. به اطلاعاتی که ماینر به استخر می فرستد ، سهم(share) گفته می شود .زیرا ثابت می کند ماینر سهمی از کار را انجام داده است. استخر استخراج این موارد را به شبکه ارسال می کند تا به زنجیره بلوک اضافه شود.

پاداش بلاک و کارمزد تراکنش های حاصل از استخراج آن بلاک به استخر استخراج ارسال می شود. استخر استخراج بخشی از این درآمد را به ماینرها بر اساس تعداد سهام تولید شده آنها پرداخت می کند.

هم در استخراج انفرادی و هم در استخر استخر ، نرم افزار ماینینگ باید اطلاعات لازم برای ساخت هدر بلوک را بدست آورد.

برای به دست آوردن این اطلاعات و ارتباط بین ماینر و پروتکل بیت کوین چندین روش و پروتکل ارتباطی وجود دارد:

getwork RPC

ساده ترین و اولین روش getwork RPC که اکنون منسوخ شده است. به طور مستقیم یک هدر برای استخراج کننده ایجاد می کند. از آنجایی که یک هدر فقط شامل یک نانس 4 بایت برای حدود 4 گیگا هش است ، بسیاری از ماینرهای مدرن نیاز به ده ها یا صدها درخواست getwork در ثانیه دارند. ماینرهای انفرادی ممکن است هنوز از getwork در نسخه v0.9.5 یا پایینتر استفاده کنند ، اما امروزه بیشتر استخرها استفاده از آن را ممنوع می کنند.

getblocktemplate RPC

یک روش بهبودیافته برای getwork است. که اطلاعات بسیار بیشتری را در اختیار نرم افزار استخراج قرار می دهد:

اطلاعات لازم برای ساخت یک تراکنش coinbase با پرداخت استخر یا کیف پول ماینر bitcoind.

  • به نرم افزار استخراج اجازه می دهد تراکنش ها را بررسی کند، به صورت اختیاری تراکنش اضافه کند و به صورت اختیاری تراکنش غیرضروری را حذف کند.
  • سایر اطلاعات لازم برای ساخت هدر بلاک برای بلوک بعدی: نسخه بلوک ، هش بلوک قبلی و bits

با استفاده از تراکنش های دریافت شده، نرم افزار استخراج یک nonce را به فیلد نانس coinbase اضافه می کند و سپس کلیه تراکنش ها را به یک درخت مرکل تبدیل می کند تا ریشه مرکلی را که می تواند در یک هدر بلوک استفاده کند ، بدست آورد. هر زمان که فیلد nonce اضافی نیاز به تغییر داشته باشد ، نرم افزار استخراج قسمت های لازم درخت مرکل را بازسازی کرده و فیلدها و زمان ریشه مرکل را در هدر بلوک به روز می کند.

مطلب مفید: رمزارز یا کریپتوکارنسی : پول آینده ، طلای دیجیتال

محدودیت های پروتکل استخراج Getwork

در روزهای اولیه ، استخراج بیت کوین به ماینرها نیاز داشت تا با اجرای گره های کامل ، پروتکل بیت کوین را متصل کرده و با آن تعامل کنند.

برای استاندارد سازی ارتباط بین استخراج کنندگان و پروتکل بیت کوین ، از یک پروتکل منبع باز “getwork” به عنوان یک راه حل سریع و آسان برای استخراج کنندگان مستقل برای شروع استخراج استفاده شد. پروتکل getwork از HTTP به عنوان روشی برای ارتباط با پروتکل بیت کوین استفاده کرده است. با این حال ، HTTP معمولاً برای صفحات وب استفاده می شود و برای هماهنگی سایر افراد برای استخراج بیت کوین ایده آل نیست. بنابراین ، با محبوبیت بیشتر استخراج ، بسیاری از ناکارآمدی ها آشکار شد.

تا سال 2012 ، ناکارآمدی های getwork بسیار مشکل ساز شده بود زیرا استخراج تحت تغییرات اساسی قرار گرفت و هش ریت شبکه به طور تصاعدی رشد کرد. این امر برای تسهیل افزایش مشارکت ماینر به مقدار قابل توجهی پهنای باند شبکه در سمت miner و مقدار عملی پهنای باند در سمت سرور (به عنوان مثال pool) نیاز داشت.

در این مرحله ، کاملاً واضح بود که پروتکل getwork یک راه حل مقیاس پذیر نیست.

پروتکل استخراج  Stratum

یک گزینه جایگزین گسترده برای “getblocktemplate” پروتکل استخراج Stratum است. Stratum تمرکز خود را بر این قرار داده است تا حداقل اطلاعات لازم را برای ماینرها را بدست آورد.

بر خلاف “getblocktemplate” ، ماینرهایی که از Stratum استفاده می کنند نمی توانند تراکنش هایی را که در حال استخراج هستند بررسی یا اضافه کنند. همچنین بر خلاف “getblocktemplate” ، پروتکل Stratum به طور مستقیم از یک سوکت TCP دو طرفه استفاده می کند ، بنابراین ماینرها نیازی به استفاده از HTTP longpoll ندارند تا اطمینان حاصل کنند که هنگام پخش بلوک جدید به شبکه همتا به همتا ، بلافاصله از استخرهای استخراج به روز می شوند.

مطلب مفید: سکه های رنگی چه معنا و کاربردی دارند؟

مانند تمام RPC های بیت کوین ، “getblocktemplate” از طریق HTTP ارسال می شود. برای اطمینان از اینکه جدیدترین کار را دریافت می کنند . اکثر استخراج کنندگان از HTTP longpoll استفاده می کنند تا درخواست “getblocktemplate” را همیشه باز بگذارند. این به استخر استخراج اجازه می دهد تا “getblocktemplate” جدیدی را به ماینر منتقل کند. به محض اینکه ماینر موجود در شبکه peer-to-peer بلوک جدیدی را منتشر کند یا استخر بخواهد تراکنش های بیشتری را به نرم افزار استخراج ارسال کند.

پروتکل استخراج
پروتکل استخراج

Stratum یک پروتکل بیسیم است که مشکلات ایجاد شده توسط HTTP را هنگام استفاده برای استخراج حل می کند. برای فهمیدن اینکه چرا Stratum ضروری است ،باید این واقعیت را درک کرده باشید که HTTP برای سرویس دهی به برنامه های وب و صفحات وب طراحی شده است . وظیفه اصلی اش این است که بین طرفین ارتباط برقرار کند اما هیچ هماهنگی بین طرفین انجام نمیشود. اما ماینرها کاری بیش از دریافت اطلاعات لازم دارند .

مشکلات HTTP

اطلاعات درخواستی ماینر

اگر یک ماینر کار استخراج جدیدی می خواهد ، باید درخواست خود را از طریق HTTP ارسال کند. وقتی استخر استخراج با کارایی بیشتری می داند که هر ماینر چه کاری باید انجام دهد ، چرا ماینرها باید با فرایند درخواست درگیر شوند؟ چه اتفاقی می افتد اگر یک بلوک جدید در شبکه ظاهر شود و ماینر از این موضوع اطلاع نداشته باشد؟ بنابراین Stratum این موضوع را ورق می زند و استخر استخراج با در دسترس قرار دادن اطلاعات ، به ماینرهایی که به صورت دوره ای اطلاعات موجود را درخواست می کنند ، ارسال می کند.

Long-polling

پرس و جو یک راه حل بسیار هک کننده برای رفع ماهیت یک طرفه HTTP است. این کار با تعیین محدودیت مهلت زمانی بسیار بالا (مثلاً 10 ثانیه) انجام می شود که در آن سرور عمداً ارسال اطلاعات را به تأخیر می اندازد تا زمانی که چیزی برای ارسال داشته باشد. تصور کنید بارگیری آدرس URL چند دقیقه طول می کشد زیرا سرور به راحتی منتظر اتفاقاتی در شبکه خود است. این امر ناکارآمدی زیادی ایجاد می کند زیرا ماینرها در حال درخواست داده هایی هستند .که به راحتی وجود ندارند و سرورها مجبورند این اتصالات را نیز تا زمانی که استخراج اتفاق می افتد حفظ کنند.

Ntime Rolling

NTime یک عدد صحیح بر حسب ثانیه است. این عدد یک عنصر در هدر بلوک است. هر ثانیه NTime یکی افزایش می یابد. “NTime rolling” یک پارامتر getwork است که نشان می دهد یک ماینر هنوز چند ثانیه می تواند این getwork را معتبر بداند .

برای مجموعه تراکنش های داده شده، فقط دو عنصر در هدر بلوک بین تلاش های هش تغییر می کند.

  • NTime – برچسب زمان فعلی (هر ثانیه تغییر می کند)
  • Nonce – شماره 2 ^ 32 (هر هش را تغییر می دهد)

بنابراین برای ساخت یک هدر معتبر، یک ماینر باید مقدار فعلی این دو عنصر را داشته باشد که به سرعت تغییر می کنند. عناصر دیگر هدر بلوک نیز مورد نیاز هستند .اما تغییرات بسیار کمتری اتفاق می افتد و برای اداره استخر بی اهمیت است.

روش اصلی (ناکارآمد) برای رسیدگی به این دو متغیر در یک درخواست getwork این است ،که استخر به صراحت هر دو مقدار را در هر سرآیند ارائه دهد.

این یک مشکل فنی تر است . و رفع آن بزرگترین نوآوری stratum محسوب می شود. به ماینرها امکان تغییر 2 فیلد ، nonce و زمان داده می شود. ماینرهای قدیمی با این ویژگی های جدید مشکلات زیادی دارند که می تواند بر پاداش تأثیر منفی بگذارد. برای همین باید ماینرهای خود را به آخرین نسخه به روز کنید! ماینرهای جدیدتر و سریعتر این کار را آسانتر می کنند و استفاده از پهنای باند برای استخر به طرز چشمگیری افزایش می یابد. Stratum با دادن چند فیلد دیگر به استخراج کنندگان این مسئله را حل می کند ،که به طور جدی کل راه حل های ممکن برای یک بلوک را افزایش می دهد.

نکته:

پروتکل Stratum ارتباطات کلاینت-سرور را به سطوحی کاهش می دهد. که با پهنای باند بسیار کم قابل استفاده هستند و فشار بر روی سرورها را به شدت کاهش می دهد.پروتکل Stratum بر اساس JSON-RPC 2.0 است. پیاده سازی این پروتکل بسیار آسان و اشکال زدایی آن راحت است. زیرا هر دو طرف در قالب قابل فهم برای انسان صحبت می کنند. این پروتکل برخلاف بسیاری از راه حل های دیگر به راحتی قابل توسعه هستند. بدون اینکه سازگاری رو به عقب ایجاد شود. به عنوان یک پاداش ، JSON به طور گسترده در همه سیستم عامل ها پشتیبانی می شود .و استخراج کنندگان فعلی از قبل دارای کتابخانه های JSON هستند. بنابراین بسته بندی پیام بسیار ساده و راحت است.

پروتکل استخراج Stratum V1

در سال 2012 برای حل برخی از مشکلات رشد صنعت استخراج بیت کوین معرفی شده است. و باعث تکامل پروتکل استخراج getwork شد. این پروتکل به استخرهای استخراج بیت کوین کمک کرد تا به کاربران بیشتری با نرخ هش بالاتر خدمت کنند. ابتدا در استخر استخراج Bitcoin.cz پیاده سازی شد که اکنون Slush Pool نامیده می شود.

تقریباً در اواخر سال 2010 ، با ورود هرچه بیشتر افراد به شبکه ، تغییر جدی در استخراج رخ داد. با 10 دقیقه زمان بلوک اما هزاران ماینر برای یافتن هر بلوک رقابت می کردند . بسیاری از شرکت کنندگان دیگر به اندازه کافی درآمد کسب نمی کردند.

ظهور استراتوم

راه حل این بود که ماینرها منابع محاسباتی خود را با هم جمع کنند تا بتوانند بلاک ها را با ثبات بیشتری پیدا کنند. و بنابراین بخشی از پاداش بلوک را به طور منظم دریافت کنند تا جریان نقدی پایدار مناسبی داشته باشد.با این حال ، با افزایش محبوبیت استخراج ، محدودیت های پروتکل getwork حتی بیشتر آشکار شد. این امر باعث شد که مارک (Marek “Slush” Palatinus) ، که Slush Pool را در سال 2010 ایجاد کرد . پروتکل استراتوم(Stratum V1) را برای ارتباط بین استخراج کنندگان و استخرهای استخراج توسعه دهد.

پیشرفت های اصلی با Stratum V1

Stratum V1 پروتکل استانداردی است که در طی 7-8 سال گذشته برای استخراج همزمان استفاده شده است. و در این مدت کل هش ریت شبکه بیت کوین از 20 TH / s به 130 EH / s افزایش یافته است.و مشکلات مقیاس پذیری برطرف شد.

علاوه بر این پیشرفت های چشمگیر در فن آوری ، دلیل دیگری که Stratum V1 در نهایت چنین موفقیتی داشت این بود. که پروتکل Stratum بر اساس JSON-RPC 2.0 است. JSON به طور گسترده در همه سیستم عامل ها پشتیبانی می شود .و استخراج کنندگان فعلی از قبل دارای کتابخانه های JSON هستند. بنابراین بسته بندی پیام بسیار ساده و راحت است.

محدودیت های پروتکل استخراج استراتوم یک

Stratum V1 مورد انتقاد قرار گرفت . گفته شد که Stratum V1 مربوط به پروتکل یا پیاده سازی بیت کوین نیست – بلکه یک توسعه استخراج سفارشی است.

در حالی که Stratum V1 در حال توسعه بود ، پروتکل منبع باز به نام getblocktemplate ایجاد شد .که جایگزین پروتکل “getwork” می شد. با انتشار Stratum V1 در همان زمان ، تصویب مستقیم پروتکل getblocktemplate متضرر شد. با این حال ، لازم به ذکر است که سرورهای Stratum از مکانیزم getblocktemplate در زیر ساخت استفاده می کنند .

پروتکل استخراج - استراتوم 2
پروتکل استخراج – استراتوم 2

متأسفانه ، یک نقطه ضعف مهم در استفاده نکردن از راه حل getblocktemplate این بود که، استخراج کنندگان توانایی ساخت قالب های بلوک خود را از دست دادند. (یعنی انتخاب کنند که کدام معاملات در بلوک هایی که استخراج می کنند انجام شود.). اگرچه این به انگیزه های اقتصادی استخراج آسیب نمی زند. از آنجا که ماینرها انگیزه بالایی دارند که تراکنش هایی با بالاترین کارمزد را در بلوک های خود قرار دهند. در صورت به خطر افتادن اپراتور (های) استخر ، آسیب پذیری ایجاد می شود.

سرانجام ، مسئله امنیت وجود دارد. Stratum V1 در برابر حملات احتمالی انسان آسیب پذیر است.

Stratum V2 راه حلی برای ادامه روند تکامل صنعت استخراج بیت کوین است.

0
0
برای اینکه به فکت این مقاله کمک کنید روی دکمه زیر کلیک کنید و تا افراد بیشتری آن را دنبال کنند
اشتراک در
اطلاع از
0 نظرات
بازخورد (Feedback) های اینلاین
مشاهده همه نظرات
محل تبلیغ
کوینکس
محاسبه‌گر ارزهای دیجیتال
ارز معادل
تومان

محاسبه با مبلغ تتر : تومان

0
نظر خود را بنویسید !x