
نانس (nonce) : ماینرها در جستجوی یک قطعه گمشده!!
بروزرسانی :دسامبر 14, 2020 @ 8:07 ق.ظ
در این مقاله، بر روی مفهوم نانس (Nonce) که در بلاک چین برای اعتبارسنجی تراکنشها و همچنین اطمینان از امنیت شبکه استفاده میشود، تمرکز خواهیم کرد.
مقدمهای بر نانس
nonce ترکیبی از دو کلمه است، “number” و “once”. بنابراین، nonce به معنای عددی است که فقط یکبار استفاده میشود. ازنظر فنی نانس یک عدد تصادفی دلخواه 32 بیتی است که میتواند یکبار استفاده شود.
نانس (nonce) اغلب در پروتکلهای تأیید اعتبار و توابع هش رمزنگاری استفاده میشود. در زمینه بلاکچین، یک نانس به یک عدد شبه تصادفی اشاره دارد که در طی فرآیند استخراج بهعنوان شمارنده استفاده میشود.
nonce جز اصلی الگوریتم استخراج اثبات کار (PoW) بلاکچینها و ارزهای دیجیتالی مانند بیت کوین است.
در ادامه به بررسی کاربرد نانس در فرآیند استخراج بیت کوین میپردازیم.
نانس در مکانیزم اثبات کار و ماینینگ
در فرآیند ماینینگ، هدف، حل یک معمای ریاضی برای کشف بلاک بعدی و دریافت پاداش بیت کوین است.
هر بلاک شامل دو قسمت است:
- قسمت هدر (block header)
- قسمت بدنه (block body)
بلاکهای بلاک چین توسط هدر آنها مشخص میشوند که شامل:
- شماره نسخه (version number): شماره نسخه برای پیگیری تغییرات و بهروزرسانیها در کل پروتکل مفید است.
- هش بلاک قبلی (previous block hash): اتصال به هش بلاک قبلی بهطور موثر بلاک چین را ایمن میکند.
- ریشه درخت مرکل (Merkle root): ریشه مرکل از همه هشهای تراکنشهای هششده تشکیل شده است.
- برچسب زمانی (timestamp): برچسب زمانی گنجاندهشده است تا هر کسی که در این شبکه کار میکند قادر به مشاهده یک تاریخچه از زمان وقوع رویدادهای خاص در شبکه باشد.
- نانس (nonce) : مقداری است که ماینرها میتوانند تغییر دهند تا جایگشتهای مختلف ایجاد کنند و یک هش درست در دنباله ایجاد کنند. تنها فیلدی در هدر است که از پیش تعیین نشده است.
nonce تنها چیزی است که یک ماینر تغییر میدهد تا مقدار هش کافی پیدا کند. بقیه پارامترها ثابت میمانند.
ماینرها باید یک مقدار نانس (nonce) پیدا کنند که وقتی به الگوریتم هش وصل میشوند، یک مقدار هش تولید میکند که کمتر از سختی هدف است. میتوان گفت که nonce قطعه گمشده معمای مورد نیاز برای کشف بلاک بعدی است و ماینرها پاداش بلاک را دریافت میکنند. از این رو به آن نانس طلایی (Golden Nonce) هم گفته میشود.
جبران خسارت برای ماینرها فقط در صورتی است که اولین کسانی باشند که هش هدف را ایجاد میکنند.
آزمون و خطا برای حل معما
تعیین اینکه کدام رشته بهعنوان nonce استفاده شود، به مقدار قابل توجهی آزمون و خطا نیاز دارد. زیرا این یک مقدار تصادفی است. یک ماینر باید یک نانس (nonce) را حدس بزند، آن را به هش هدر فعلی اضافه کند. مقدار را دوباره هش کند و با هش هدف (Target Hash) مقایسه کند. اگر مقدار هش حاصله مطابق با شرایط باشد. ماینر یک راهحل ایجاد کرده و به آن بلاک اعطا میشود.
بسیار بعید است که یک ماینر در اولین تلاش با موفقیت nonce را حدس بزند. به این معنی که ماینر قبل از درست حدس زدن آن ممکن است تعداد زیادی گزینه nonce را آزمایش کند. هرچه سختی شبکه بیشتر باشد، تولید یک راهحل بیشتر طول میکشد.
سختی شبکه (Difficulty) پارامتری است که بیت کوین و سایر رمزارزها برای ثابت نگه داشتن متوسط زمان بلاک با تغییر قدرت هش شبکه، از آن استفاده میکنند.
نتیجه گیری
در این مقاله به تعریف نانس (nonce) و کاربرد آن در فرایند استخراج پرداخته شد. nonce جز اصلی الگوریتم استخراج اثبات کار (PoW) در بلاکچینهایی مانند بیت کوین است. ماینرها با یکدیگر رقابت میکنند تا نانسی را پیدا کنند که هش کمتر یا مساوی با سختی شبکه باشد. اگر یک ماینر چنین نانسی را پیدا کند، به آن نانس طلایی میگویند. در آن صورت این حق را دارند که آن بلاک را به بلاکچین اضافه کنند و پاداش خود را دریافت کنند.
نانس به عددی گفته میشود که به یک بلاک هش شده (یا رمزنگاری شده) در بلاکچین اضافه شده و هنگامی که این عدد به همراه هش بلاک مجدداً هش شوند (Rehash)، قادر خواهند بود هشی ایجاد کنند که شرایط تعریف شده توسط پارامتر سختی شبکه را برآورد نماید.
بدون وجود عدد نانس در اطلاعات یک تراکنش، ماینر نمیتواند تراکنشها را مرتب کند. برای مثال اگر چهاردهمین بیت کوین در حال استخراج باشد و نانس بیت کوین شمارهی ۱۰، صفر باشد، یعنی توالی بلاکها و تراکنشها برهم خورده است. به همین دلیل تراکنشهایی با نانس ۰ در لیست تایید ماینرها قرار نمیگیرند.
بلاک چین اثبات کار یا گواهی کار (PoW) از نانس برای تغییر ورودی به یک تابع هش رمزنگاری استفاده میکند. در اینجا نانس کمک میکند تا به میزان مطلوب سختی شبکه دست یابیم.