نانس (Nonce) در بلاک چین چیست ؟

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

نانس (Nonce) در بلاک چین : نانس (Nonce) مخفف عبارت "عددی که تنها یک بار به کار می‌‌رود" (Number only used once) است و به عددی گفته می‌‌شود که به یک بلاک هش شده (Hashed) – یا رمزنگاری شده – در بلاک چین‌‌ اضافه شده و هنگامی که این عدد به همراه هش بلاک مجدداً هش شوند (Rehash)، قادر خواهند بود هشی ایجاد کنند که شرایط و محدودیت‌های تعریف شده توسط پارامتر سختی شبکه (Network Difficulty) را برآورده نماید. میدانیم که تابع هشینگ، تابعی یک طرفه است که در ازای ورودی یکتا، همیشه خروجی یکتایی تولید می‌کند. با توجه به اینکه اطلاعات موجود در هدر بلاک (شامل هش بلاک قبل، برچسب زمانی، ریشه درخت مرکل و ...) داده های ورودی ثابت تابع هش هستند، هش خروجی همیشه یک مقدار خواد داشت. اما افزودن عدد متغیر نانس به این هش، ورودی متغیری را برای تابع هش ایجاد می‌کند که به ماینرها اجازه می‌دهد هش بلاک را متناسب با تارگت تعیین شده توسط سختی شبکه، پیدا کنند. نانس همان عددی است که استخراج کنندگان بلاک چین‌‌ به دنبال یافتن آن هستند. زمانی که راه‌‌حل هش پیدا می‌‌شود، استخراج کنندگان در ازای آن رمز ارز دریافت خواهند کرد.

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

نکات کلیدی:

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

آشنایی با نانس (Nonce)

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

پیدا کردن نانس (Nonce)

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

فرآیند پیدا کردن هش از بلاک هِدِر (Block Header) آغاز می‌‌شود که دارای مواردی چون شماره نسخه بلاک، برچسب زمان، هش مورد استفاده در بلاک قبلی، هش ریشه مرکل (Merkle Root)، نانس و هش هدف است.

تصویر یک بلاک هدر
تصویر یک بلاک هدر

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

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

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

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

سختی بلاک در تمامی شبکه یکسان است و این یعنی شانس تمامی استخراج کنندگان برای پیدا کردن هش صحیح برابر است. شبکه‌‌های رمز ارز معمولا تعداد معینی از بلاک‌‌ها را برای پردازش در مدت زمانی مشخص، تعیین می‌کنند (به عنوان مثال در شبکه بیت کوین، هر 2016 بلاک باید در مدت زمان دو هفته یا 20160 دقیقه استخراج شود؛ یعنی به طور متوسط، هر بلاک در ده دقیقه) و با تنظیم خودکار سختی شبکه، انجام این روش را تضمین می‌کنند. اگر تعداد بلاک‌‌های پردازش‌‌شده با هدف برابر نباشد، سختی شبکه تغییر یافته و با مدت زمان مشخص‌‌شده هماهنگ خواهد شد.

منبع

تلگرام-فینمگ