سختی شبکه بیت کوین چیست؟

آشنایی با ماینینگ یا استخراج بیت کوین

1398/04/04

برای توضیح سختی شبکه ابتدا باید با فرایند ماینینگ یا استخراج بیت کوین آشنا شویم، سپس نقش سختی شبکه برای حفظ امنیت شبکه بیت کوین و تاثیر آن بر میزان استخراج را با هم بررسی خواهیم کرد.

استخراج بیت کوین

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

فرض کنید شخص A قصد ایجاد یک تراکنش، با ارسال مقداری بیت کوین برای شخص B دارد.

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

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

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

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

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

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

سختی شبکه بیت کوین

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

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

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

حالا باید کمی بیشتر راجب این معادله توضیح داد و تابع Hash یا Hash Function را به عنوان بخشی از این معادله بررسی کنیم.

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

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

این را در نظر بگیرید که به هیچ وجه نمیتوان از روی خروجی تابع هش، به ورودی آن رسید و برای اعتبار سنجی جواب مساله، به ورودی و خروجی نیاز است.برای مثال معادله x+y=100 را در نظر بگیرید.مشاهده میکنید که مقادیر زیادی برای x و y وجود دارد که مجموع آنها 100 میشود.

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

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

در اینجا به یک تناقض میرسیم.مگر هر ورودی تنها یک خروجی ندارد؟

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

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

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

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

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

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

مرحله پنجم : ماینری که معادله را حل کرد و به جواب رسید، بلاک را به همراه امضا یا جواب معادله هش برای تمام ماینرها میفرستد.

مرحله ششم : تعدادی از ماینرها که بلاک حل شده را گرفته اند، جواب معادله هش بلاک را بررسی میکنند .در صورت درستی جواب، به ماینرهای دیگر اطلاع میدهند که بلاک تولید شده به همراه هش آن معتبر بوده و ماینرهای دیگر موافقت میکنند که این بلاک، به بلاک‌چین اضافه شود.به این فرآیند، اثبات انجام کار(Proof Of Work) میگویند.امضا یا هش بلاک یا جواب معادله در واقع اثبات(Proof) کار(Work) انجام شده است.

مرحله هفتم : بعد از اینکه بلاک به زنجیره اضافه شد، تمام بلاک‌هایی که بعد از آن قرار دارند، صحت تراکنشهای داخل آن را بررسی میکنند.به عنوان مثال اگر تراکنش‌های داخل بلاک 507 باشد و بلاک‌چین ما در کل 600 بلاک داشته باشد، در صورت اضافه شدن بلاک به زنجیره بلاک‌چین، 507-600=3 تاییدیه یا Confirm گرفته است.این موضوع به اینجا برمیگردد که هر بلاکی که به انتهای زنجیره وصل میشود، تمام تاریخچه تراکنش های قبلی بلاک را بازبینی میکند.

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