
نانس (Nonce) یک عدد جادویی برای ماینرها است. حتما شنیدهاید که ماینرهای بیت کوین دنبال حل یک مسئله پیچیده ریاضی و یافتن عددی هستند تا پاداش استخراج بلاک جدید را بهدست بیاورند. ما این عدد را با نام «نانس» میشناسیم. مسابقه استخراج بلاک بیت کوین حدودا هر ده دقیقه، یک برنده دارد و ماینری برنده است که بتواند عدد نانس را درست حدس بزند. در این مقاله قصد داریم ببینیم عدد نانس چیست، چه کاربردی در شبکه بلاک چین دارد، مزایا و معایب آن چیست و در چه موارد دیگری از عدد نانس استفاده میشود. با میهن بلاکچین همراه باشید.
نکات کلیدی |
نانس (Nonce) چیست؟
نانس (Nonce) برگرفته از عبارت “Number used Once” است و یعنی «عددی که فقط یکبار استفاده شده است». نانس بهطور تصادفی تولید میشود و عمدتا در سیستمهای مبتنی بر رمزنگاری کاربرد دارد. بلاکچینهای اثبات کار (PoW) نمونه بارزی هستند که برای افزایش امنیت دادههای بلاک از عدد نانس کمک میگیرند. برای اینکه دید روشنتری از کاربرد عدد نانس در بلاکچین بهدست بیاوریم، سراغ یک مثال بسیار ساده میرویم. فرض کنید در کلاس ریاضی هستید و معلم روی تختهسیاه معادله (۲۱۹=X+۲۱۴) را مینویسد تا به دانشآموزی که جواب را پیدا میکند، جایزه دهد. ذهن دانشآموزان درگیر آزمون و خطا میشود تا اعداد مختلفی را جایگزین X کنند. موضوع این است که معادله ساده است و تقریبا همه بهسرعت پاسخ را پیدا میکنند؛ بنابراین معلم تصمیم میگیرد مسئله را سختتر کند تا فقط دانشآموز باهوشتر بتواند جایزه را بگیرد.
عدد نانس در بلاکچین، دقیقا نقش X را در این معادله ایفا میکند و منظور از سختی استخراج شبکه بیت کوین، همین سطح دشواری برای یافتن عدد نانس است. بهعبارت دیگر، شبکه بر حسب کاهش یا افزایش میزان مشارکت و توان محاسباتی ماینرها، سطح دشواری یافتن عدد نانس را تنظیم میکند تا زمان استخراج بلاک روی ۱۰ دقیقه ثابت بماند. البته این تنها کاربرد عدد نانس نیست و باعث امنیت دادهها هم میشود که در ادامه به آن میپردازیم. اکنون برای بررسی دقیقتر عملکرد عدد نانس در بلاکچین باید اندکی با ساختار بلاکچین و مکانیزم رمزنگاری یا هش داده آشنا شویم.
بررسی عملکرد عدد نانس در بلاکچین
در شبکه بیت کوین، هر بلاک دارای دو بخش اصلی است؛ بدنه بلاک که حاوی تعداد زیادی تراکنش است و هدر بلاک (Block Header) که شامل خلاصهای از اطلاعات همان بلاک است. این اطلاعات عبارتند از:
- ورژن: این عدد نشاندهنده نسخهای از قوانین است که بلاک مورد نظر بر اساس آن قابلتایید است.
- هش هدر بلاک قبلی: بلاک قبل از این بلاک در بلاک چین هم دارای یک هدر مخصوص به خود است که هش آن در هدر بلاک بعدی ثبت میشود.
- هش ریشه مرکل تراکنشها: منظور از هش ریشه درخت مرکل «هش مجموع تراکنشهای موجود در این بلاک» است.
- برچسب زمانی: این عدد نشاندهنده زمان دقیقی است که ماینر شروع به پیدا کردن هش بلاک کرده است.
- nBits: یک فیلد ۳۲ بیتی (۴ بایتی) است که توسط شبکه به عنوان هدف سختی مشخص میشود. در واقع این نسخه کدگذاریشده، آستانهای است که هش هدر بلاک باید کمتر یا مساوی با آن باشد. شبکه بیت کوین هر دو هفته یکبار، بر اساس نرخ هش کلی شبکه، تارگت سختی را تنظیم میکند.
- نانس: یک عدد دلخواه است که توسط ماینر مدام عوض میشود و با عوض شدن آن، هش هدر بلاک هم تغییر میکند. این پروسه تا زمانی ادامه پیدا میکند که مقدار هش هدر بلاک از هش هدف تعیینشده کوچکتر شده و بلاک استخراج شود.
حالا با توجه به این اطلاعات، میخواهیم پروسه رمزگذاری و ذخیره داده در یک بلاک را دقیقتر بررسی کنیم.
شبکههای اثبات کار برای حفظ امنیت دادهها، تراکنشهای هر بلاک را با استفاده از تابع هش، رمزگذاری میکنند. هش یک تابع رمزنگاری یکطرفه است که برای هر ورودی با هر حجم و اندازهای، یک خروجی با طول ثابت تولید میکند. بهطور مثال بیت کوین از تابع SHA2 استفاده میکند که خروجی آن برابر با ۲۵۶ بیت است. کوچکترین تغییر در داده ورودی، منجر به تغییر قابلتوجهی در خروجی میشود. به همین دلیل به هش، اثر انگشت دیجیتال داده هم گفته میشود. پروسه رمزگذاری دادههای بلاک به این صورت است که هش هر تراکنش حساب میشود و مجددا در سطح بعدی، هشِ هشها بهصورت دودویی محاسبه میشود. این ساختار سلسله مراتبی برای محاسبه هشها که به آن درخت مرکل (Merkle Tree) گفته میشود، آنقدر ادامه پیدا میکند تا در نهایت حاصل همه هشها در یک هش به نام ریشه مرکل خلاصه شود.
تا اینجا همه چیز وابسته به دادههای داخل بلاک است و ماینر نمیتواند چیزی را تغییر دهد؛ اما حالا میرسیم به عدد نانس که ماینر باید با آزمون و خطا آنقدر این عدد را تغییر دهد تا هش هدر بلاک از هش تعیینشده توسط شبکه (nBits) کوچکتر باشد.
ماینرها چطور عدد نانس را پیدا میکنند؟
پیدا کردن عدد نانس یک پروسه آزمون و خطا است. ماینر توسط سختافزارهای ویژهای به نام اسیک (ASIC) نانس را حدس میزند، آن را به هش هدر فعلی اضافه میکند، مقدار بهدست آمده را دوباره هش میکند و فقط درصورتی که جواب از هش هدف کمتر باشد، نانس را درست حدس زده است. بسیار بعید است که ماینر بتواند در اولین تلاش خود نانس درست را پیدا کند؛ بنابراین باید آنقدر گزینههای مختلف را امتحان کند تا به جواب برسد. حتما شنیدهاید که میگویند فلان دستگاه ماینر، ۱۴ ترا هش بر ثانیه (Th/s) قدرت دارد. این یعنی دستگاه قادر است در هر ثانیه ۱۴ تریلیون حدس مختلف برای عدد نانس بزند. اولین ماینری که موفق به پیدا کردن نانس صحیح یا نانس طلایی (Golden Nonce) شود، پاداش استخراج را دریافت میکند و بلاک او به زنجیره بلاکها اضافه میشود. از آنجایی که سختی بلاک در کل شبکه یکسان است، شانس همه ماینرها برای یافتن نانس طلایی برابر است.
نقش عدد نانس در استخراج ارزهای دیجیتال
شاید بپرسید چرا بلاکچینهای اثبات کار باید از عدد نانس استفاده کنند. پاسخهای زیر احتمالا شما را قانع خواهند کرد:
- سختی شبکه: عدد نانس بهطور مستقیم با سختی شبکه ارتباط دارد؛ هرچه ماینرهای بیشتری وارد شبکه شوند و قدرت محاسباتی آنها افزایش پیدا کند، بهطور خودکار سختی شبکه یا همان سطح دشواری کشف عدد نانس افزایش پیدا میکند. البته عکس این قضیه هم صادق است و با کاهش تعداد ماینرها یا قدرت محاسباتی آنها، پیدا کردن عدد نانس آسانتر میشود. این تنظیمات باعث میشود که زمان لازم برای استخراج بلاک جدید ثابت بماند.
- عدالت در دریافت پاداش بلاک: در بلاکچینهای اثبات کار، پاداش استخراج بلاک یکی از مشوقهایی است که برای مشارکت ماینرها درنظر گرفته شده است. در واقع، شبکه از عدد ناننس برای ایجاد عدالت در دریافت پاداش استفاده میکند. ماینری که زودتر از سایرین عدد نانس صحیح را حدس بزند و یک هش معتبر تولید کند، پاداش بلاک را از آن خود میکند.
مزایا و معایب عدد نانس در بلاکچین
استفاده از عدد نانس در سازوکار ذخیره دادههای بلاکچین چند مزیت مهم دارد که در ادامه به آنها اشاره میکنیم:
- افزایش امنیت بلاکچین: ازآنجایی که عدد نانس باعث میشود هر بلاک نسبت به سایر بلاکها متمایز باشد، به نوعی امنیت بلاکچین را تضمین میکند. هیچ بلاکی نمیتواند از قبل استخراج (Pre Mine) شود و همه ماینرها شانس یکسانی برای کسب پاداش استخراج دارند. درنتیجه عدد نانس باعث ایجاد دموکراسی در فرآیند استخراج میشود و شبکه را در برابر فعالیتهای مخرب حفظ میکند.
- جلوگیری از دوبار خرج کردن: دوبار خرج کردن (Double Spending) زمانی اتفاق میافتد که تراکنش کپی شود و دارایی خرجشده دوباره مورد استفاده قرار بگیرد. عدد نانس، هر تراکنش را منحصربهفرد میکند و این اطمینان را میدهد که امکان تکرار یک تراکنش وجود ندارد. بنابراین عدد نانس میتواند راهحلی برای مشکل دوبارخرج کردن باشد و باعث افزایش قابلیت اعتماد سیستم ارزهای دیجیتال میشود.
در کنار مزایایی که برای عدد نانس عنوان شد، نباید از چالشهای این عدد جادویی هم غافل ماند. از آنجاییکه پیدا کردن عدد نانس، انرژی فراوانی را میطلبد، ایراداتی را به پروسه استخراج وارد میکند که عبارتند از:
- نیاز به قدرت محاسباتی بیشتر و افزایش هزینهها: پیدا کردن عدد نانس، قدرت محاسباتی بسیار بالایی را میطلبد و ماینرها به سختافزارهایی با کارایی بسیار بالا و مقدار قابلتوجهی انرژی مصرفی نیاز دارند. درنتیجه ماینرها متحمل هزینههای عملیاتی میشوند و برای فعالیت و افزایش مشارکت آنها سد قابلتوجهی ایجاد میشود.
- اثرات زیستمحیطی: استخراج ارزهای دیجیتال به دلیل نیاز به قدرت محاسباتی بالا برای حل مسائل پیچیده ریاضی و حدس عدد نانس، یک فرآیند انرژیبر است. برق مصرفی توسط شبکههای اثبات کار مقدار قابلتوجهی است و نگرانیهای زیستمحیطی را بهوجود آورده است.
کدام بلاکچینها از عدد نانس استفاده میکنند؟
بلاکچینهایی که الگوریتم اجماع آنها اثبات کار باشد، میتوانند از عدد نانس استفاده کنند. نمونههای بارز عبارتند از:
- بیتکوین اولین بلاکچینی بود که از عدد نانس در الگوریتم اثبات کار خود استفاده کرد. در سراسر جهان ماینرهای بیت کوین برای کشف این عدد تصادفی با یکدیگر رقابت میکنند. هرچه ماینرهای بیشتری به مسابقه بپیوندند، سختی شبکه بیت کوین بیشتر میشود.
- اتریوم نیز در ابتدا از عدد نانس در فرآیند استخراج بلاکها استفاده میکرد؛ اما بعد از مرج و انتقال به مکانیزم اثبات سهام، استیکینگ و ولیدیتورها جایگزین ماینینگ و ماینرها شدند.
- لایت کوین، الگوریتم رمزنگاری متفاوتی نسبت به بیت کوین دارد و مبتنی بر Scrypt است؛ اما با این حال از عدد نانس در فرایند استخراج استفاده میکند.
سایر کاربردهای عدد نانس
عدد نانس، کاربردهای متعددی دارد که ازجمله آنها میتوانیم به موارد زیر اشاره کنیم:
- پروتکلهای احراز هویت: با استفاده از عدد نانس در پروتکلهای احراز هویت میتوان اطمینان پیدا کرد که از احرازهای و اطلاعات قدیمی مجددا استفاده نمیشوند.
- بردارهای اولیه: بردارهای اولیه یک رشته تصادفی هستند از این بردارها در رمزنگاری استفاده میشود تا حتی اگر کلید تکرار شد، رمزها یکسان نباشند.
- امضای دیجیتال: الگوریتمهای امضای دیجیتال میتوانند از اعداد نانس برای ایجاد و تایید امضا استفاده کنند.
- مدیریت هویت: عدد نانس همچنین در سیستمهای مدیریت هویت مانند شناسایی یگانه (SSO)، احراز هویت دوعاملی (2FA) و بازیابی حساب کاربرد دارد.
جمعبندی
نانس (Nonce) یک عدد یکبار مصرف منحصربهفرد است که در فرآیند استخراج بلاک و هشکردن تراکنشهای شبکههای اثبات کار استفاده میشود. عدد نانس باعث میشود هش هدر بلاک نسبت به سایر بلاکها متمایز باشند. مهمترین مزیت نانس برای بلاکچینها، حفظ یکپارچگی شبکه، افزایش امنیت و جلوگیری از دوبار خرج شدن تراکنشها است. با این حال از معایبی نظیر هزینههای عملیاتی، مصرف انرژی بالا و نگرانیهای زیستمحیطی هم نباید غافل ماند. با توجه به توضیحات ارائهشده، آیا اکنون با مفهوم عدد نانس و کاربرد آن در بلاکچین کاملا آشنا شدید؟ اگر ابهامی در این خصوص وجود دارد، سوالات خود را با ما در میان بگذارید.
سوالات متداول (FAQ)
نانس (Nonce) یک عدد تصادفی است که در بلاکچینهای اثبات کار در فرایند استخراج بلاک استفاده میشود.
کشف عدد نانس صحیح یک پروسه آزمون و خطا است. ماینر باید آنقدر نانسهای مختلف را حدس بزند تا هش هدر بلاک از هش تعیینشده توسط شبکه کوچکتر باشد.
به نانس صحیح، نانس طلایی گفته میشود.
عدد نانس با حفظ یکپارچگی بلاکچین و نظم تراکنشها مانع فعالیتهای تقلبی مانند دوبار خرج کردن میشود، امنیت بلاکچین را افزایش میدهد و پروسه دریافت پاداش بلاک را عادلانه میکند.