بلاک خالی بیت کوین چیست و چگونه استخراج می‌شود؟


بلاک خالی بیت کوین بلاکی است که اطلاعاتی مانند هدر را دارد؛ اما حاوی هیچ تراکنشی نیست و تنها تراکنشی که در آن وجود دارد تراکنش کوین‌بیس است که پاداش ماینرها را پرداخت می‌کند.

بیت کوین اولین و بزرگ‌ترین ارز دیجیتال دنیاست. ویژگی‌های بیت کوین ازجمله ماندگاری و مطمئن‌بودن و امنیت شبکه باعث شده است تا این ارز دیجیتال همچنان محبوب باقی بماند. بااین‌حال، گاهی در شبکه بیت کوین اتفاقاتی می‌افتد که برخی مخالفان را به انتقاد از آن وامی‌دارد. استخراج بلاک خالی بیت کوین (Empty Block) یکی از همین اتفاقات است.

شاید بپرسید آیا واقعاً بلاک خالی استخراج‌شدنی است؟ پاسخ کوتاه به این پرسش مثبت است. برای نمونه، بلاک ۷۷۶٬۳۳۹ که در اواسط فوریه‌۲۰۲۳ (بهمن‌۱۴۰۱) استخراج شد، بلاکی خالی بود. دو هفته قبل از آن نیز، بلاک شماره ۷۷۴٬۴۸۶ خالی استخراج شده بود.

چرا ماینرها باید بلاک‌های خالی استخراج کنند؟ مگر نه این‌ است که بیشترین درآمد ماینرها علاوه‌بر پاداش استخراج بلاک، از کارمزد تراکنش‌ها حاصل می‌شود؟ آیا استخراج بلاک خالی بیت کوین شبکه را با مشکل مواجه می‌کند؟ در این مطلب، به همه این پرسش‌ها پاسخ خواهیم داد؛ پس تا انتهای مقاله با ما همراه باشید.

بلاک خالی بیت کوین چیست؟

در یک جمله می‌توان گفت که بلاک خالی بیت کوین بلاکی است که حاوی هیچ تراکنشی نیست؛ بااین‌حال قبل از واکاوی جزئیات فنی آن، بد نیست ابتدا کمی درباره بلاک صحبت کنیم.

بلاک فضایی است که داده‌های مربوط به تراکنش‌ها را در خود نگه می‌دارد. بلاک چین بیت کوین از اتصال زنجیره‌ای از این بلاک‌ها تشکیل شده است. در شبکه بیت کوین، سختی اثبات کار به‌گونه‌ای تنظیم می‌شود که به‌طور‌متوسط در هر ۱۰ دقیقه یک بلاک جدید ایجاد شود. هر ماینری که موفق شود بلاک را حل کند، پاداش استخراج بلاک (در‌حال‌حاضر ۶.۲۵ بیت کوین) و کارمزد تراکنش‌ها را به‌دست می‌آورد.

برای ایجاد بلاک جدید، ماینرها باید آن را با تراکنش پر کنند. این تراکنش‌ها در فضایی به‌ نام ممپول (Mempool) قرار دارند. هر ماینر تراکنش‌های انتخابی خود را از ممپول به بلاک منتقل می‌کند. حال اگر ماینری بلاک را بدون قراردادن تراکنش در آن استخراج کند، می‌گوییم بلاک خالی استخراج کرده است.

گفتنی است که این بلاک کاملاً خالی نیست و درست مانند بلاک‌های معمولی، هِدِرها و سایر فیلدهای اطلاعات را دارد. بلاک خالی حتی حاوی فهرست تراکنش است، با این تفاوت که در این فهرست فقط یک تراکنش مشاهده می‌شود و آن تراکنش «کوین‌بیس» است که پاداش استخراج بلاک را به ماینر پرداخت می‌کند.

استخراج بلاک‌های خالی آسان‌تر یا ارزان‌تر یا سریع‌تر از بلاک‌های پر نیست؛ زیرا آن‌ها هم هزینه‌های محاسباتی ازجمله هزینه اثبات کار را دارند. حال بیایید ببینیم بلاک خالی چطور استخراج می‌شود.

مقدمه‌ای بر استخراج بلاک در بیت کوین

فرض کنیم شما ماینر هستید و باید کار استخراج بلاک را انجام دهید. برای این کار، ابتدا ممپول را بررسی و سپس تراکنش‌های جذاب با کارمزدهای زیاد را انتخاب و درادامه به بلاک منتقل می‌کنید. ماینرهای دیگر هم با شما رقابت می‌کنند.

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

این‌جاست که اثبات کار وارد می‌شود. همه شما ماینرها باید عددی تصادفی موسوم به نانس (Nonce) را پیدا کنید. هر ماینری که زودتر نانس را کشف کند، برنده خواهد بود. بعد از چند دقیقه، ناگهان یکی از ماینرها اعلام می‌کند که نانس را پیدا کرده است. او باید این بلاک جدید را بین همه نودهای شبکه منتشر کند تا آن را بررسی و اعتبارسنجی کنند.

پس از تأیید، آن بلاک به بلاک چین اضافه می‌شود و بلاکی که شما مشغول کار روی آن هستید، حتی اگر یک تراکنش مشترک با آن بلاک داشته باشد، نامعتبر خواهد شد. در این مرحله، همه تراکنش‌های بلاک جدید را برای تکرارنشدن در بلاک بعدی از ممپول حذف می‌کنند.

استخراج بلاک خالی چگونه انجام می‌شود؟

دوباره خودتان را به‌عنوان ماینر در نظر بگیرید. برای یافتن بلاک معتبر و اضافه‌شدن آن به انتهای بلاک چین، باید چندین فیلد را برای هِدِر بلاک جدید تنظیم کنید؛ ولی دو فیلد هستند که به داده‌های بلاک قبلی وابسته‌اند: هش بلاک قبلی و ریشه مرکل تمام تراکنش‌های موجود در بلاک جدید.

از زمانی‌که شما هِدِر آخرین بلاک را دریافت می‌کنید تا دانلود و اعتبارسنجی همه تراکنش‌های موجود در آن بلاک، بازه زمانی کوتاهی وقت دارید. ازآن‌جاکه ماینینگ اساساً مسابقه‌ای جهانی برای یافتن بلاک است، حتی میلی‌ثانیه‌ها در آن اهمیت دارند.

شما برای بلاک قبلی قدرت هش و زمان زیادی صرف کرده‌اید و شاید فکر کنید باید به‌نحوی آن را جبران کنید؛ بنابراین، در این مدت‌زمان کوتاه که بیشتر ماینرها مشغول اعتبارسنجی هستند، تأیید بلاک فعلی را کنار می‌گذارید و بلاکی جدید تشکیل می‌دهید و زودتر از دیگران سعی می‌کنید تا نانس آن را پیدا کنید؛ اما کدام تراکنش‌ها را باید در آن قرار دهید؟

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

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

چرا برخی استخرهای استخراج بلاک خالی بیت کوین استخراج می‌کنند؟

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

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

در این فاصله زمانی، خودِ استخر بلاک جدید را با تراکنش‌ها پر می‌کند و اعتبارسنجی بلاک قبلی را انجام می‌دهد. فراموش نکنید که هر ثانیه از زمان جست‌وجو مهم است. در ۱ یا ۲ ثانیه، بلاک تمپلیت به‌روزشده که این بار حاوی تراکنش است، برای ماینرها ارسال می‌شود. بلاک به‌روزشده بلاک تمپلیت قبلی را باطل نمی‌کند؛ زیرا آن بلاک تراکنشی نداشته است.

حال چه اتفاقی می‌افتد؟ گاهی ماینرهای خوش‌‌اقبال در چند میلی‌ثانیه و قبل از آنکه استخر بلاک به‌روزشده حاوی تراکنش را به‌دستشان برساند، نانس را پیدا می‌کنند. بدین‌ترتیب، بلاک خالی استخراج می‌شود. این بلاک صرفاً حاوی تراکنش کوین‌بیس است.

واقعیت این است که در این صنعت، زمان به‌معنای واقعی کلمه ارزشمند است. استخرها نمی‌توانند مطمئن باشند که نانس به این سرعت پیدا می‌شود؛ بلکه فقط می‌خواهند کار استخراج بلاک بعدی را زودتر آغاز کنند.

با استخراج بلاک خالی چه اتفاقی در شبکه رخ می‌دهد؟

استخراج بلاک خالی اغلب عمدی نیست و به‌دلیل فاصله زمانی اجتناب‌ناپذیر بعد از ایجاد موفقیت‌آمیز بلاک تا اعتبارسنجی کامل آن رخ می‌دهد. باید تأکید کنیم که بلاک‌های خالی مشکلی برای شبکه ایجاد نمی‌کنند.

همچنین، استخراج بلاک خالی بیت کوین حاوی تراکنش‌های ایجادکننده واحدهای جدید بیت کوین نیست؛ اما تراکنش کوین‌بیس را دارد و تضمین می‌کند که بیت کوین در مسیر رسیدن به هدف اصلی‌اش، یعنی داشتن ۲۱میلیون واحد بیت کوین در‌گردش، حرکت می‌کند.

دراین‌میان، مشکل احتمالی حمله بلاک خالی (Empty Block Attack) است. هرچند همان‌طور‌که جیمی سانگ در مقاله‌اش در وب‌سایت مدیوم نوشته است، این حمله آن‌قدرها که باید نگران‌کننده نیست.

حمله بلاک خالی (Empty Block Attack) چیست؟

استخراج بلاک‌های خالی معمولاً مشکلی برای شبکه ایجاد نمی‌کند؛ اما اگر ماینری بخواهد شبکه بیت کوین را با تأخیر مواجه کند، می‌تواند حمله‌ بلاک خالی انجام دهد تا در آن فقط بلاک‌های بدون تراکنش استخراج شود. این باعث می‌شود همه تراکنش‌ها در وضعیت معلق باقی بمانند و تا زمانی‌که حمله ادامه دارد، استفاده از شبکه متوقف می‌شود.

در حمله بلاک خالی، اکثر قدرت ماینینگ صرف استخراج بلاک‌های خالی می‌شود. درواقع، مهاجم با این حمله سافت‌فورکی را اجرا می‌کند و زنجیره دوم کاملاً خالی خواهد بود. تصور بر این است که چون مهاجمان بیشتر قدرت هش را در‌اختیار دارند، زنجیره طولانی‌تر از‌آنِ آنان خواهد بود. بنابراین، زنجیره خالی موفق می‌شود زنجیره دیگر را حذف کند و چون هیچ تراکنشی ندارد، فعالیت‌های شبکه متوقف می‌شوند و بیت کوین از بین خواهد رفت.

حمله بلاک خالی ممکن است به دو صورت مستقیم و غیرمستقیم انجام شود. در حمله مستقیم، مهاجم با دستیابی به ۵۱درصد از تجهیزات ماینینگ حمله را انجام می‌دهد؛ اما در حمله غیرمستقیم، استخرهای ماینینگ را متقاعد می‌کند که فقط بلاک‌های خالی استخراج کنند.

در هر دو سناریو، ماینرها حاضر به همکاری با استخر نخواهند بود؛ زیرا بلاک‌های خالی کارمزد تراکنش‌ها را ندارند و با فرض ۶.۲۵ بیت کوین و کارمزد اندکی که استخرهای استخراج پرداخت می‌کنند، این کار به‌صرفه نیست.

اگر شرایط حمله فراهم شود، چه اتفاقی می‌افتد؟

مهاجمان حمله بلاک خالی را شروع می‌کنند تا کل شبکه را متوقف کنند. بقیه اعضای شبکه متوجه می‌شوند که بلاک‌ها خالی هستند و وقتی تعدادشان زیاد باشد، پی می‌برند که حمله‌ای در کار است. بدین‌ترتیب، می‌توانند از دستور invalidateblock برای رد‌کردن بلاک مدنظر و همه بلاک‌های بعد از آن استفاده کنند. با این فرمان کل شاخه‌ای که مهاجم ایجاد می‌کند، باطل می‌شود.

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

استخراج بلاک خالی بیت کوین خوب است یا بد؟

تمام هدف شبکه بیت کوین پردازش تراکنش‌هاست؛ بنابراین، استخراج بلاک خالی می‌تواند به‌عنوان رفتار نامناسب تلقی شود. دلیل این مسئله آن است که ماینر به‌جای اینکه طبق روند طبیعی ایجاد بلاک، ابتدا بلاک جدید را اعتبارسنجی کند و سپس سراغ بلاک بعدی برود، اعتبارسنجی را معوق نگه می‌دارد و اثبات کار بلاک بعدی را آغاز می‌کند. این کار فرصت را از ماینرهای درست‌کار می‌گیرد.

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

بنابراین، تراکنش‌های جدید را بلافاصله در بلاک بعدی می‌گنجاند و اثبات کار را آغاز می‌کند، بدون اینکه نگران تکراری‌شدن تراکنش‌ها و بی‌اعتبارشدن بلاک بعدی‌اش شود. این در حالی است که سایر ماینرها ابتدا باید تراکنش‌های بلاک را دانلود و سپس بلاکی جدید ایجاد کنند که شامل هیچ‌کدام از آن تراکنش‌ها نباشد.

آیا می‌توان از استخراج بلاک خالی جلوگیری کرد؟

واقعیت این است که امروزه تعداد بلاک‌های خالی بسیار کاهش یافته و آخرینِ آن‌ها در فوریه امسال اتفاق افتاده است. باید به این نکته توجه کنید که این اتفاق به‌دلایل مختلفی رخ می‌دهد.

اولین و مهم‌ترین دلیل این است که جذابیت استخراج بلاک خالی با کاهش تدریجی پاداش بلاک و افزایش اتکا به کارمزد تراکنش‌ها، انگیزه ماینرها را برای استخراج بلاک خالی از بین می‌برد.

در روزهای اولیه استخراج بیت کوین، پاداش بلاک ۵۰ بیت کوین بود و بعد از هاوینگ اول به ۲۵ واحد رسید. در آن زمان، حجم تراکنش‌ها بسیار کمتر بود و کارمزد تراکنش‌ها دربرابر پاداش بلاک ناچیز به‌حساب می‌آمد.

از سال ۲۰۱۶ که پاداش بلاک به ۱۲.۵ بیت کوین رسید، حجم تراکنش‌ها و بالطبع کارمزد آن‌ها افزایش یافت. این به ماینرها انگیزه می‌داد که تراکنش‌های بیشتری در بلاک بگنجانند. در‌حال‌حاضر، پاداش بلاک ۶.۲۵ واحد است؛ بنابراین، ماینرها دیگر استخراج بلاک خالی را سودآور نمی‌بینند.

دومین دلیل مهم این است که پیشرفت‌ها و بهبودهایی در نرم‌افزارهای استخراج به‌ویژه Bitcoin Core ۰.۱۲ انجام شده که زمان بین اعتبارسنجی بلاک جدید و آغاز به کار روی بلاک بعدی را تا حد زیادی کاهش می‌دهد. همچنین، اگر بتوان به‌نحوی کار اولویت‌بندی تراکنش‌ها را ازنظر فنی ساده‌تر و سریع‌تر کرد، شاید کار انتخاب آن‌ها برای ماینرها راحت‌تر شود.

سؤالات متداول

استخراج بلاک خالی بیت کوین چگونه انجام می‌شود؟

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

بلاک خالی بیت کوین چیست؟

بلاک خالی بیت کوین بلاکی است که هیچ تراکنشی ندارد و تنها تراکنش موجود در آن، تراکنش کوین‌بیس است که پاداش ماینرها را پرداخت می‌کند.

جمع‌بندی

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

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