ماینینگ بلوک های جدیدی را به زنجیره بلوک اضافه می کند و تغییر تاریخچه تراکنش ها را سخت می کند.
معرفی¶
ماینینگ امروزه به دو صورت است:
ماینینگ انفرادی، جایی که ماینر سعی میکند به تنهایی بلاکهای جدیدی تولید کند، و درآمد حاصل از پاداش بلوک و کارمزد تراکنشها به طور کامل به خود او میرسد و به او اجازه میدهد تا پرداختهای بزرگ با واریانس بالاتر (مدت طولانیتر بین پرداختها) را دریافت کند.
استخراج تلفیقی، که در آن ماینر منابع را با سایر ماینرها برای یافتن بلاکها بیشتر جمع میکند، و درآمد حاصل از آن بین ماینرهای استخر در همبستگی تقریبی با میزان قدرت هش آنها تقسیم میشود و به ماینر اجازه میدهد تا پرداختهای کوچکی با واریانس کمتر دریافت کند.(زمان کوتاهتر بین پرداختها).
استخراج انفرادی¶
همانطور که در زیر نشان داده شده است، استخراج کنندگان انفرادی معمولا از بیت کوین برای دریافت تراکنش های جدید از شبکه استفاده می کنند. نرم افزار ماینینگ آنها به صورت دوره ای بیت کوین را برای تراکنش های جدید با استفاده از "getblocktemplate" RPC نظرسنجی می کند، که لیستی از تراکنش های جدید به همراه کلید عمومی که تراکنش کوین بیس باید به آن ارسال شود را ارائه می دهد.
استخراج انفرادی بیت کوین ¶
نرم افزار ماینینگ با استفاده از قالب (که در زیر توضیح داده شده است) یک بلوک می سازد و یک هدر بلوک ایجاد می کند. سپس هدر بلوک 80 بایتی را به همراه یک آستانه هدف (تنظیم سختی) به سخت افزار ماینینگ خود (ASIC) ارسال می کند. سختافزار ماینینگ از طریق هر مقدار ممکن برای سرآیند بلوک یک دفعه تکرار میشود و هش مربوطه را تولید میکند.
اگر هیچ یک از هش ها زیر آستانه نباشد، سخت افزار ماینینگ یک هدر بلوک به روز شده با یک ریشه merkle جدید از نرم افزار استخراج دریافت می کند. این هدر بلوک جدید با افزودن داده های اضافی به فیلد coinbase تراکنش کوین بیس ایجاد می شود.
از سوی دیگر، اگر هش زیر آستانه هدف یافت شود، سخت افزار ماینینگ هدر بلوک را با nonce موفق به نرم افزار استخراج برمی گرداند. نرم افزار ماینینگ هدر را با بلوک ترکیب می کند و بلوک تکمیل شده را به بیت کوین می فرستد تا برای اضافه شدن به زنجیره بلوک به شبکه پخش شود.
استخر معدن¶
ماینرهای استخر از جریان کاری مشابهی پیروی می کنند که در زیر نشان داده شده است، که به اپراتورهای استخر ماینینگ اجازه می دهد بر اساس سهم آنها از کار انجام شده به ماینرها پرداخت کنند. استخر ماینینگ تراکنش های جدیدی را از شبکه با استفاده از بیت کوین دریافت می کند. با استفاده از یکی از روشهایی که بعداً مورد بحث قرار گرفت، نرمافزار استخراج هر ماینر به استخر متصل میشود و اطلاعات مورد نیاز برای ساخت هدر بلوک را درخواست میکند.
استخراج بیت کوین تلفیقی ¶
در استخراج معدن ، استخر معدن آستانه هدف را چند مرتبه از بزرگی (کمتر دشوار) از دشواری شبکه تعیین می کند. این امر باعث می شود سخت افزار معدن بسیاری از هدرهای بلوک را که به ارزش واجد شرایط ورود به زنجیره بلوک واجد شرایط نیستند ، برگرداند اما زیر هدف استخر را نشان می دهد ، اثبات می کند (به طور متوسط) که معدنچی درصد از مقادیر هش هش را بررسی کرده استبشر
سپس معدنچی کپی از اطلاعاتی را که استخر برای تأیید اعتبار در زیر هدف قرار می دهد ، به استخر می فرستد و بلوک معاملات ذکر شده توسط زمینه ریشه Merkle Header برای اهداف استخر معتبر است.(این معمولاً بدان معنی است که معامله Coinbase باید استخر را بپردازد.)
اطلاعاتی که معدنچی برای استخر ارسال می کند ، به عنوان سهم نامیده می شود زیرا ثابت می کند که معدنچی سهمی از کار را انجام داده است. به طور اتفاقی ، برخی از سهام که استخر دریافت می کند نیز زیر هدف شبکه قرار خواهد گرفت - استخر معدن این موارد را به شبکه می فرستد تا به زنجیره بلوک اضافه شود.
پاداش بلوک و هزینه های معامله ای که از معدن آن بلوک حاصل می شود به استخر معدن پرداخت می شود. استخر معدن بخشی از این عواید را به معدنچیان اختصاص داده شده بر اساس تعداد سهام آنها تولید می کند. به عنوان مثال ، اگر آستانه هدف استخر معدن 100 برابر پایین تر از آستانه هدف شبکه باشد ، برای ایجاد یک بلوک موفق ، 100 سهم به طور متوسط تولید می شود ، بنابراین استخر معدن می تواند 1/100 از پرداخت خود را برای هر سهم دریافت شده بپردازد. بشراستخرهای مختلف معدن از سیستم های مختلف توزیع پاداش بر اساس این سیستم سهم اساسی استفاده می کنند.
نمونه های اولیه را مسدود کنید
در هر دو معدن انفرادی و استخر ، نرم افزار معدن باید اطلاعات لازم برای ساخت هدرهای بلوک را بدست آورد. این زیر بخش ، به روش خطی ، نحوه انتقال و استفاده از آن اطلاعات را توصیف می کند. با این حال ، در پیاده سازی های واقعی ، از موضوعات موازی و صف برای نگه داشتن هاشورهای ASIC با حداکثر ظرفیت استفاده می شود.
GetWork RPC¶
ساده ترین و اولین روش ، هسته اصلی Bitcoin Core GetWork RPC بود که به طور مستقیم یک عنوان را برای معدنکار ایجاد می کند. از آنجا که یک هدر فقط شامل یک چیز غیر بایت 4 بایت برای حدود 4 گیگاهاش است ، بسیاری از معدنچیان مدرن باید ده ها یا صدها درخواست GetWork را تهیه کنند. معدنچیان انفرادی هنوز هم ممکن است از GetWork در V0. 9. 5 یا پایین تر استفاده کنند ، اما بیشتر استخرها امروزه استفاده از آن را دلسرد یا مجاز نمی کنند.
getBlockTemplate rpc¶
یک روش بهبود یافته RPC هسته بیت کوین "getBlockTemplate" است. این اطلاعات بسیار بیشتری را به نرم افزار معدن ارائه می دهد:
اطلاعات لازم برای ساخت یک تراکنش کوین بیس با پرداخت پول استخر یا کیف پول بیت کوین استخراج کننده انفرادی.
تخلیه کامل تراکنشهای بیت کوین یا استخر استخراج نشان میدهد که در بلوک قرار میگیرد، به نرمافزار ماینینگ اجازه میدهد تراکنشها را بررسی کند، تراکنشهای اضافی را به صورت اختیاری اضافه کند و تراکنشهای غیرضروری را حذف کند.
سایر اطلاعات لازم برای ساخت هدر بلوک برای بلوک بعدی: نسخه بلوک، هش بلوک قبلی و بیت ها (هدف).
آستانه هدف فعلی استخر ماینینگ برای پذیرش سهام.(برای استخراج کنندگان انفرادی، این هدف شبکه است.)
با استفاده از تراکنشهای دریافتشده، نرمافزار ماینینگ یک nonce را به فیلد nonce اضافی coinbase اضافه میکند و سپس تمام تراکنشها را به یک درخت مرکل تبدیل میکند تا ریشه merkle را که میتواند در هدر بلوک استفاده کند، استخراج کند. هر زمان که فیلد nonce اضافی نیاز به تغییر داشته باشد، نرم افزار ماینینگ قسمت های ضروری درخت merkle را بازسازی می کند و فیلدهای ریشه زمان و merkle را در هدر بلوک به روز می کند.
مانند همه RPC های بیت کوین، "getblocktemplate" از طریق HTTP ارسال می شود. برای اطمینان از دریافت جدیدترین کار، اکثر ماینرها از HTTP longpoll استفاده میکنند تا درخواست «getblocktemplate» را همیشه باز بگذارند. این به استخر ماینینگ اجازه میدهد به محض اینکه هر ماینری در شبکه همتا به همتا بلوک جدیدی را منتشر کرد یا استخر بخواهد تراکنشهای بیشتری را به نرمافزار استخراج بفرستد، «getblocktemplate» جدیدی را به ماینر فشار دهد.
لایه ¶
یک جایگزین پرکاربرد برای "getblocktemplate" پروتکل استخراج Stratum است. Stratum بر روی دادن حداقل اطلاعات مورد نیاز استخراج کنندگان برای ساخت هدرهای بلوک به تنهایی تمرکز دارد:
اطلاعات لازم برای ایجاد یک تراکنش کوین بیس با پرداخت پول استخر.
بخشهایی از درخت مرکل که باید برای ایجاد یک ریشه مرکل جدید مجدداً هش شوند، زمانی که تراکنش coinbase با یک nonce اضافی جدید بهروزرسانی میشود. سایر بخشهای درخت مرکل، در صورت وجود، ارسال نمیشوند، و به طور موثر مقدار دادههایی را که باید به (حداکثر) حدود یک کیلوبایت در حجم تراکنش فعلی ارسال شوند، محدود میکند.
همه سایر اطلاعات ریشه غیر مرکل لازم برای ساخت هدر بلوک برای بلوک بعدی.
آستانه هدف فعلی استخر ماینینگ برای پذیرش سهام.
با استفاده از معامله Coinbase دریافت شده ، نرم افزار معدن یک قسمت غیرقانونی Coinbase را اضافه می کند ، معامله Coinbase را هشدار می دهد و هش را به قسمت های دریافت شده از درخت مرکل اضافه می کند. این درخت در صورت لزوم برای ایجاد ریشه مرکل ، که به اطلاعات هدر بلوک دریافت شده اضافه می شود ، هشدار داده می شود. هر زمان که نیاز به تغییر قسمت اضافی NONCE باشد ، نرم افزار معدنکاری معامله Coinbase را دوباره به روز می کند ، ریشه Merkle را بازسازی می کند و قسمت Root Header Merkle را به روز می کند.
بر خلاف "GetBlockTemplate" ، معدنچیان با استفاده از Stratum نمی توانند معاملات را به بلوکی که در حال حاضر استخراج می کنند ، بازرسی یا اضافه کنند. همچنین بر خلاف "GetBlockTemplate" ، پروتکل Stratum به طور مستقیم از یک سوکت TCP دو طرفه استفاده می کند ، بنابراین معدنچیان نیازی به استفاده از HTTP Longpoll برای اطمینان از دریافت به روزرسانی های فوری از استخرهای معدن ندارند که یک بلوک جدید به همتا به همتا پخش می شود. شبکه.
منابع: نرم افزار معدن GPLV3 BFGMINER و نرم افزار استخر معدن AGPLV3 Eloipool در بین معدنچیان و استخرها بسیار مورد استفاده قرار می گیرند. کتابخانه Libblkmaker C و کتابخانه Python-Blkmaker ، هر دو دارای مجوز MIT ، می توانند GetBlockTemplate را برای برنامه های شما تفسیر کنند.
فارکس را از کجا شروع کنیم...
ما را در سایت فارکس را از کجا شروع کنیم دنبال می کنید
برچسب : نویسنده : علیرضا خمسه بازدید : 48 تاريخ : پنجشنبه 3 فروردين 1402 ساعت: 0:36