پاسخ به سوالاتی مانند نانس چیست و ارتباط نانس با بلاک چین چگونه است، به ما در درک نحوه کارکرد شبکههای بلاکچینی کمک زیادی میکند. شبکه بیت کوین اولین شبکه پرداخت جهانی است که بدون نظارت نهادی متمرکز فعالیت میکند. با توجه به عدم کنترل بلاک چین توسط نهادی ناظر، اولین سوالی که به ذهن میرسد این است که مساله امنیت تراکنشها در شبکههای بلاکچینی نظیر بیت کوین چگونه تأمین میشود.
شبکه بیت کوین باید بهگونهای فعالیت کند که افراد بتوانند تراکنشهای مالی خود را از سراسر دنیا بهراحتی با این شبکه انجام دهند. در تراکنشهای مالی، امنیت تراکنشها از اهمیت ویژهای برخوردار هستند و شبکه بیت کوین توانسته امنیت شبکه را بدون کنترل نهادی مرکزی تأمین کند. بنابراین پرداختهای رمزارزی با استقبال زیادی همراه شده است. در این مطلب با مفهومی مهم در ایجاد امنیت بلاک چین بهنام «نانس» (Nonce) آشنا میشویم.
نانس چیست ؟
نانس عددی تصادفی است که ماینرها در فرآیند ماینینگ آن را تولید میکنند. «نانس» (Nonce) فرم کوتاه شده عبارت «عددی که تنها یک بار استفاده میشود» (Number Only Used Once) است. در واقع ماینرها نانس را به اطلاعات موجود در بلاک اضافه و آن را دوباره هش میکنند. اگر هش حاصل از مقدار هش هدف در شبکه کمتر شود، بلاک جدید تولید میشود. نانس در واقع عددی است که ماینرهای شبکه برای پیدا کردن آن با هم رقابت میکنند. ماینری که بتواند زودتر از بقیه ماینرها نانس را پیدا کند، پاداش تولید بلاک جدید را دریافت میکند.
کاربرد نانس چیست ؟
ممکن است در ابتدا فرض کنید که نانس مفهومی ساده است اما توجه داشته باشید که نانس در موقعیتهای گوناگونی استفاده میشود و کاربردهای مختلفی دارد. در امور مالی و رمزنگاری نانس عددی است که برای تأیید تراکنشها و بررسیهای امنیتی بهصورت تصادفی تولید میشود.
برای مثال «کپچا» (Captcha) را در نظر بگیرید. برخی از وبسایتها از کپچا برای تشخیص انسان از ربات استفاده میکنند. کپچاها تنها یک بار استفاده میشوند و نمونهای از کاربرد نانس هستند. در نمونههایی سادهتر برای کاربرد نانس میتوان به «رمزهای یک بار مصرف» اشاره کرد که در تأیید تراکنشها استفاده میشوند.
نانس در بلاک چین چیست ؟
ماینرهای زیادی در سراسر جهان وجود دارند که با تدارک تجهیزات و انرژی لازم اقدام به استخراج بیت کوین میکنند. ممکن است شما هم شنیده باشید که این ماینرها برای حل پازل پیچیده ریاضی انرژی محاسباتی زیادی نیاز دارند. تمامی ماینرها در حال رقابت با یکدیگر برای حل این معما و گرفتن پاداش بیت کوین هستند. این معما در واقع پیدا کردن عدد نانس است. برای درک بهتر نحوه کارکرد نانس در بلاک چین در ابتدا باید مفاهیم بلاک چین و تابع هش را توضیح دهیم.
بلاک چین چیست ؟
بلاک چین نوعی دفتر کل توزیع شده است که اطلاعات را در بلاکهایی بهصورت رمزنگاری شده قرار میدهد. هر بلاک در این شبکه توسط رمزنگاری با بلاکهای دیگر شبکه ارتباط دارد. اطلاعات جدید در ابتدا رمزنگاری میشوند و در بلاکهایی که همانند زنجیر به هم متصل هستند قرار میگیرند. با توجه به اینکه اطلاعات موجود در هر بلاک مثل زنجیر به اطلاعات بلاکهای دیگر متصل است بنابراین کوچکترین تغییر یا دستکاری در اطلاعات هر بلاک، باعث میشود تا کل اطلاعات زنجیره بلاک تغییر کند و عملا این کار را غیرممکن میکند.
بلاک چین نوعی سیستم برای ذخیره اطلاعات است که کسی نمیتواند آن را هک کند یا اطلاعات آن را تغییر دهد. یک کپی از تمامی تراکنشهایی که در بستر بلاک چین انجام میشود در اختیار هر یک از نودهای شبکه قرار میگیرد. با هر تغییری که در وضعیت شبکه انجام میشود، اطلاعات نودهای شبکه نیز با توجه به این تغییرات بهروزرسانی میشود.
الگوریتم اجماع در بلاک چین
هدف بلاک چین ایجاد بستری برای ذخیره و توزیع اطلاعات است. با استفاده از رمزنگاری و ساختاری به هم پیوسته، امکان ایجاد تغییر در بلاک چین وجود ندارد. بسترهای بلاک چینی از کامپیوترها یا نودهایی برای پردازش اطلاعات ورودی به بلاک چین تشکیل شده است. این نودها بر اساس پروتکلی مشترک با هم در ارتباط هستند. این پروتکل الگوریتم اجماع است که در هر بلاک چین وجود دارد و باعث حفظ امنیت و یکپارچگی در شبکه میشود. نودهای شبکه از طریق الگوریتم اجماع بر سر تأیید یا عدم تأیید اطلاعات داخل شبکه با هم به توافق میرسند.
تابع هش چیست ؟
تابع هش برای هر ورودی با اندازههای مختلف، یک خروجی متفاوت با اندازهای ثابت میدهد. تابع هش شبکه بیت کوین تابعی یکطرفه است. بنابراین شما برای پیدا کردن ورودی نمیتوانید از خروجی استفاده کنید. با کمترین تغییر در ورودی این تابع، خروجی تابع هش به کلی تغییر میکند. از تابع هش برای رمزنگاری اطلاعات درون بلاک چین استفاده میکنند، بنابراین تمامی اطلاعاتی که در بلاکهای زنجیره بلاک ذخیره میشوند در ابتدا به کمک تابع هش رمزنگاری میشوند. تابع هش مورد استفاده در شبکه بیت کوین SHA–۲۵۶ است.
کاربرد نانس در بلاک چین
بلاکچینهایی که از الگوریتم اثبات کار استفاده میکنند از نانس در تولید هش در بلاک چین استفاده میکنند. بیت کوین نیز با توجه به این که از الگوریتم اثبات کار استفاده میکند بنابراین از نانس در تولید هش بلاک استفاده میکند. ماینر بیت کوین هنگام پردازش تراکنشهای بلاکها، با دیگر ماینرها برای پیدا کردن نانس رقابت میکند.
هش بلاک همانند شماره مرجع یا شناسه برای بلاک مربوطه در بلاک چین است. هش بلاک برای اینکه از طرف شبکه تأیید شود باید با شرایط معینی مطابقت کند. این مطابقت به این معنی است که هش بلاک باید با تعداد مشخصی صفر شروع شود. ماینرهای بیت کوین با صرف انرژی زیاد، از توان محاسباتی خود برای پیدا کردن هش بلاک موردنظر استفاده میکنند.
برای این منظور با کمک تجهیزاتی که توان پردازشی بالایی دارند نانسهای متفاوتی را با اطلاعات بلاک هش میکنند. ماینرها عملیات هش کردن اطلاعات بلاک را با نانسهای مختلف تا زمان پیدا کردن هش بلاک مورد تأیید شبکه ادامه میدهند. ماینری که بتواند قبل از ماینرهای دیگر نانس موردنظر را پیدا کند از طرف شبکه پاداش دریافت میکند و میتواند بلاک بعدی را به شبکه اضافه کند.
نانس طلایی چیست ؟
نانسی که ماینر در نهایت با کمک آن قادر به تولید هش بلاک مورد تأیید بلاک چین میشود، «نانس طلایی» (Golden Nonce) نام دارد. ماینرها با آزمون و خطای بسیار هر نانس را برای تولید هش بلاک استفاده میکنند تا زمانی که هش بلاک مورد تأیید شبکه تولید شود این آزمون و خطا برای پیدا کردن هش بلاک ادامه دارد. با توجه به اینکه احتمال پیدا کردن نانس موردنظر نزدیک به صفر است بنابراین ماینرهای بیت کوین برای پیروزی در این رقابت باید از توان پردازشی بالایی برای بررسی میلیونها نانس در تولید هش بلاک استفاده کنند.
ارتباط الگوریتم اجماع کار و عدد نانس چیست ؟
یکی از معروفترین الگوریتمهای اجماع در بسترهای بلاکچینی، «الگوریتم اجماع اثبات کار» (Proof of Work) است. شبکه بیت کوین نیز از همین الگوریتم اجماع استفاده میکند. در شبکههایی که از الگوریتم اجماع اثبات کار استفاده میشود برای اینکه ماینرهای شبکه بتوانند بلاک جدیدی را به شبکه اضافه کنند باید عددی تصادفی به نام نانس را پیدا کنند. بنابراین عدد نانس در بلاکچینهایی با الگوریتم اثبات کار برای تولید و اضافه کردن بلاک جدید به بلاک چین استفاده میشود.
ارتباط بلاک هدر و نانس چیست ؟
هر بلاک از دوقسمت بدنه و «بلاک هدر» (Block Header) تشکیل شده است. همانطور که توضیح دادیم تمامی تراکنشها و اطلاعات موجود در بلاک توسط تابع هش رمزنگاری میشوند. تمامی تراکنشهایی که در بدنه بلاک وجود دارند با استفاده از ساختار درخت مرکل بهصورت هش نهایی یا ریشه مرکل در بلاک هدر ذخیره میشود. درخت مرکل نوعی ساختار داده است که برای تسهیل در پردازش و مدیریت اطلاعات در بلاک چین از آن استفاده میشود. نانس و ریشه مرکل هر دو در بلاک هدر قرار دارند.
سختی شبکه بیت کوین چیست ؟
در سالهای اولیه بهوجود آمدن بیت کوین، سادهترین کامپیوترها نیز میتوانستند نسبت به میزان انرژی مصرفی بیت کوین قابل قبولی را استخراج کنند. در واقع در سالهای اولیه پیدایش بیت کوین تولید بلاک جدید در بلاک چین بیت کوین بسیار راحت بود. اما امروزه میبینیم که برای ماین بیت کوین به دستگاههایی با قابلیت پردازشی بسیار بالا نیاز داریم.
ممکن است این سوال برای شما پیش بیاید که چرا استخراج بیت کوین سختتر شده است. برای جواب این سوال باید در ابتدا با مفهوم سختی شبکه آشنا شویم. سختی شبکه بیت کوین مقیاسی برای اندازهگیری میزان سختی تولید یک بلاک جدید در شبکه بیت کوین است. بنابراین هرچه سختی شبکه بیشتر شود، تولید بلاک جدید در شبکه سختتر میشود.
سختی شبکه بیت کوین همواره تغییر میکند. بنابراین در زمانهای مختلف بر حسب شرایط، میزان توان پردازشی متغییری برای تولید بلاک جدید بیت کوین مورد نیاز است. سختی شبکه بیت کوین همواره بهگونهای تغییر میکند تا زمان لازم برای تولید بلاک جدید در شبکه بیت کوین حدودا ۱۰ دقیقه شود.
با افزایش تعداد ماینرهای شبکه بیت کوین احتمال پیدا کردن نانس موردنظر افزایش پیدا میکند. این موضوع باعث میشود تا هش بلاک مورد تأیید شبکه زودتر پیدا شود و بلاک جدید زودتر به شبکه متصل شود. بنابراین برای اینکه زمان تولید بلاک جدید در شبکه بیت کوین ثابت بماند سختی شبکه تغییر میکند تا زمان تولید هر بلاک تقریبا برابر با ۱۰ دقیقه باشد.
nBits چیست ؟
nBits همان تارگتی است که شبکه برای هش بلاک در نظر گرفته است. برای اینکه هش بلاکی که ماینر تولید میکند مورد قبول شبکه باشد باید از nBits کوچکتر شود. بنابراین ماینرها با آزمون و خطا و بررسی نانسهای گوناگون در نهایت موفق به تولید هش بلاکی میشوند که از هش هدف کوچکتر است.
ارتباط سختی شبکه و نانس چیست ؟
سختی شبکه توسط «هش هدف» (Target Hash) تعیین میشود. ماینرها با تولید و استفاده از نانسهای مختلف هش بلاک را با نانس تولیدی دوباره هش میکنند. اگر این هش تولیدی از هش تارگت که از طرف شبکه تعیین میشود کمتر باشد، ماینر موفق به تولید بلاک جدید میشود و از طرف شبکه پاداش استخراج را دریافت میکند. بنابراین ماینرها با صرف انرژی زیاد نانسهای مختلف را برای یافتن هش مورد قبول شبکه برای تولید بلاک جدید امتحان میکنند.
بنابراین سختی شبکه بیت کوین در واقع میزان سختی برای یافتن هش مورد قبول توسط شبکه است. ماینرهای شبکه با استفاده از نانسهای مختلف تعداد حدسهای زیادی را برای تولید هشهای متفاوت امتحان میکنند. زمانیکه یکی از این هشها کمتر از هش تارگت شود، ماینر پاداش تولید و افزودن بلاک جدید به شبکه را دریافت میکند.
سختی شبکه بیت کوین در هر ۲۰۱۶ بلاک، نسبت به قدرت پردازشی یا هشریت کل شبکه تنظیم میشود. بنابراین هنگامی که تعداد ماینرهای شبکه یا هش ریت کل شبکه تغییر پیدا میکند، سختی شبکه بهطور خودکار بهگونهای تنظیم میشود که زمان مورد نیاز برای تولید بلاک جدید در شبکه بیت کوین حدودا ۱۰ دقیقه باشد.
ماینینگ و عدد نانس
ماینینگ فرایندی است که در آن ماینر بیشمار نانس را با کمک آزمون و خطا هش میکند تا به مقدار هشی کمتر از هش هدف برسد. هر ماینری که زودتر از ماینرهای دیگر بتواند این نانس را پیدا کند میتواند بلاک جدید را به بلاک چین اضافه کند. این فرایند به همین شکل برای تولید هر بلاک ادامه پیدا میکند و با پیدا شدن نانس موردنظر اعتبار بلاک از طرف شبکه تأیید میشود و این بلاک میتواند به شبکه اضافه شود.
جمع بندی
موضوع امنیت در شبکههای غیرمتمرکز اهمیت ویژهای دارد. در شبکههای غیرمتمرکز با توجه به عدم وجود نهادی ناظر برای کنترل تراکنشها، لزوم ایجاد ساز و کاری که بتواند امنیت شبکه را تضمین کند از اهمیت بالایی برخوردار است. بنابراین الگوریتم اجماع کار در شبکه بیت کوین در خصوص ایجاد فضایی ایمن نقش مهمی دارد. در این میان پیدا کردن عددی تصادفی بهنام نانس که ماینرها برای تولید هش بلاک از آن استفاده میکنند، باعث رقابت بین ماینرها برای تولید بلاک جدید در شبکه بیت کوین میشود.
در این مطلب در ابتدا مفهوم و کاربرد نانس را شرح دادیم و بلاک چین و الگوریتم اجماع در بلاکچین را تعریف کردیم. با توجه به اینکه تمامی تراکنشها بهصورت هش در بلاک چین ذخیره میشوند بنابراین به توضیح تابع هش در بلاک چین پرداختیم. سپس کاربرد نانس در بلاک چین و نانس طلایی را توضیح دادیم و در ادامه ارتباط الگوریتم اجماع کار و عدد نانس و ارتباط بلاک هدر و نانس را توضیح دادیم. در پایان نیز سختی شبکه بیت کوین و ارتباط سختی شبکه و ماینینگ را با نانس شرح دادیم.