نانس (Nonce) در ارزهای دیجیتال چیست؟ استخراج بیت کوین، اتریوم، رمزنگاری

نانس (Nonce) در ارزهای دیجیتال چیست؟ استخراج بیت کوین، اتریوم، رمزنگاری

در دسامبر ۲۰۱۰، در کنگره ارتباطات آشوب (Chaos Communication Congress) در برلین، گروه کوچکی به نام fail0verflow اعلام کرد که کلید امضای اصلی سونی برای پلی‌استیشن ۳ را استخراج کرده‌اند. این اکسپلویت نتوانست یک منحنی بیضوی ۲۵۶ بیتی را بشکند. نتوانست AES را کرک کند. این اکسپلویت از این واقعیت سوءاستفاده می‌کرد که سیستم امضای کد سونی برای هر امضایی که تولید می‌کرد، از همان شماره استفاده مجدد می‌کرد. آن شماره یک نانس (nonce) بود.

کلمه یکسان «نانس» (nonce) در سه گوشه دنیای کریپتو که تقریباً هیچ وجه اشتراک دیگری ندارند، ظاهر می‌شود. این متغیری است که یک ماینر بیت‌کوین تریلیون‌ها بار در ثانیه برای یافتن یک هش بلاک معتبر، آن را طی می‌کند. این شمارنده‌ای است که کیف پول اتریوم شما برای توالی تراکنش‌های خروجی استفاده می‌کند و دلیل اینکه یک تراکنش گیر کرده، هر تراکنش بعدی که شما امضا می‌کنید را مسدود می‌کند. این مقدار منحصر به فردی است که یک رمزنگاری AES-GCM برای جلوگیری از نشت محتوای دو پیام رمزگذاری شده به یکدیگر نیاز دارد. یک کلمه، سه کار، هیچ‌کدام از آنها قابل تعویض نیستند. اشتباه گرفتن یکی با دیگری به این دلیل است که چگونه تازه‌کارها خطاهای «نانس خیلی کم» را اشتباه تعبیر می‌کنند، چگونه ماینرها تنظیمات غیرممکن را طراحی می‌کنند و چگونه سیستم‌هایی مانند PS3 ریشه اعتماد خود را از دست می‌دهند.

یک نانس ۳۲ بیتی به نام "عدد یک بار استفاده شده": origin

این اصطلاح همه جا دیده می‌شود. «نانس» به معنای عددی است که یک بار استفاده شده است. تقریباً درست، اما از نظر تاریخی اشتباه است. این کلمه انگلیسی حدود ۷۵۰ سال قبل از رمزنگاری به وجود آمده است. عبارت «برای نانس» در نسخه‌های خطی انگلیسی میانه حدود دهه ۱۲۰۰ میلادی دیده می‌شود. به معنای «برای این مناسبت خاص» بوده است.

رمزنگاری این کلمه را در سال ۱۹۷۸، با پروتکل احراز هویت نیدهام-شرودر، به عاریت گرفت. در آنجا ویژگی تعریف‌شده تصادفی بودن نیست. بلکه منحصربه‌فرد بودن، در یک محدوده تعریف‌شده است. ویکی‌پدیا، با توجه به رویه‌های عملی، نانس را «یک عدد دلخواه که می‌تواند فقط یک بار در یک ارتباط رمزنگاری استفاده شود» می‌نامد. یک شمارنده نیز واجد شرایط است. یک مهر زمانی نیز همینطور. یک مقدار تصادفی یا هر ترکیبی از این سه نیز همینطور. آنچه مهم است این است که در داخل سیستم، همان نانس هرگز با همان کلید یا در همان زمینه دوباره ظاهر نمی‌شود.

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

کلمه مبهم است. بافتار اینطور نیست.

نانس در کریپتو

نحوه عملکرد نانس در استخراج بیت کوین

در بیت کوین، نانس یک فیلد ۳۲ بیتی را در داخل هدر بلوک ۸۰ بایتی اشغال می‌کند. چهار بایت. مقادیر از صفر تا ۴,۲۹۴,۹۶۷,۲۹۵ متغیر هستند. کمی کمتر از ۴.۳ میلیارد عدد ممکن، که وقتی ساتوشی پروتکل را نوشت، بسیار زیاد به نظر می‌رسید و اکنون توسط یک ASIC به اندازه میز کار در میکروثانیه‌ها به پایان می‌رسد.

استخراج، مسابقه‌ای برای یافتن مقداری در آن فیلد است که یک هش بلوک معتبر تولید کند. هدر ۸۰ بایتی را در نظر بگیرید. آن را دو بار از طریق SHA-256، تابع هش رمزنگاری که بلاکچین بیت‌کوین روی آن اجرا می‌شود، تغذیه کنید. حاصل، یک عدد ۲۵۶ بیتی است. آن عدد را با هش هدف تعیین شده توسط هدف سختی شبکه، یعنی مکانیسم اجماعی که گواه اثبات کار را هدایت می‌کند، مقایسه کنید. پایین‌تر از هدف؟ بلوک معتبر باشد، ماینر برنده می‌شود. بالاتر از هدف؟ نانس را یکی یکی افزایش دهید و دوباره هش کنید. ماینر‌های بیت‌کوین این کار را حلقه‌ای انجام می‌دهند تا کسی یک نانس معتبر پیدا کند و بلوک جدید به بلاکچین اضافه شود.

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

این طراحی تقریباً یک سال دوام آورد. سپس ASICها آن را شکستند. ماینرهای مدرن کل فضای ۴.۳ میلیارد نانس را در میکروثانیه، نه ثانیه، مصرف می‌کنند. یک Bitmain Antminer S21 Pro با سرعت ۲۳۴ تراهش در ثانیه کار می‌کند. کل فیلد نانس در این سخت‌افزار در حدود ۱۸ میکروثانیه مصرف می‌شود. تا ماه مه ۲۰۲۶، کل هش‌ریت شبکه بیت‌کوین نزدیک به ۹۹۶ اگزاهش در ثانیه و سختی آن ۱۳۲.۴۷ تریلیون است. یک S21 Pro به تنهایی هر مقدار نانس ممکن را ده‌ها هزار بار در ثانیه بررسی می‌کند.

بنابراین پروتکل ساتوشی پس از اتمام فضای ۳۲ بیتی، دو خروجی تمیز برای ماینر باقی می‌گذارد. اولین خروجی "نانس اضافی" است، فیلدی که در داخل scriptSig تراکنش کوین‌بیس قرار دارد. BIP34 آن را کدگذاری می‌کند. دو تا صد بایت، تحت کنترل ماینر. با تغییر نانس اضافی، TXID کوین‌بیس تغییر می‌کند، ریشه مرکل باید دوباره محاسبه شود، هدر بلوک تغییر می‌کند و یک جستجوی نانس ۳۲ بیتی جدید باز می‌شود. خروجی دوم، افزایش مهر زمانی یا چرخش بیت‌های نسخه در محدوده مجاز پروتکل است. استخرهای استخراج امروزه همه آنها را به عنوان بخشی از عملیات عادی چرخه‌بندی می‌کنند. تنظیم نانس ارزان‌ترین جهش است. تنظیم نانس اضافی دومین جهش ارزان است. چرخش‌های مرکل و مهر زمانی، به ترتیب میزان کاری که برای محاسبه مجدد هر کدام هزینه دارد، در فاصله دورتری قرار می‌گیرند.

وقتی کسی هشی پایین‌تر از هدف پیدا می‌کند - ماینرها به آن «نانس طلایی» می‌گویند - بلوک جدید در سراسر شبکه همتا به همتا منتشر می‌شود و هر رقیبی جستجوی فعلی خود را کنار می‌گذارد تا در دور بعدی از نو شروع کند.

مدل ASIC هش ریت زمان اتمام نانس ۳۲ بیتی فرا رسیده است کارایی
انت ماینر S21 ۲۰۰ تراهش بر ثانیه حدود ۲۱ میکروثانیه ۱۷.۵ ژول بر تراهش
انت ماینر S21 پرو ۲۳۴ تراهش بر ثانیه حدود ۱۸ میکروثانیه ۱۵ ژول بر تراهش
انت ماینر S21 XP ۲۷۰ تراهش بر ثانیه حدود ۱۶ میکروثانیه ۱۳.۵ ژول بر تراهش

یک مثال واقعی و جدید، این انتزاع را تثبیت می‌کند. بلاک ۹۴۸۰۰۰ که در اوایل سال ۲۰۲۶ استخراج شد، دارای هش بلاک `۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۱b01841afc366a4f999b291c8563ee0d0db956fc2db44` و مقدار نانس برنده ۲,۵۸۲,۴۶۳,۵۹۸ است. این عدد صحیح واحد، همراه با بقیه هدر بلاک، هشی تولید کرد که به اندازه کافی پایین بود تا به بلاکچین اضافه شود. هر نانس دیگری که ماینر آن دور امتحان می‌کرد، چیزی بیش از حد بزرگ تولید می‌کرد.

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

نانس هش در مقابل نانس حساب: کلمه یکسان، کار متفاوت

کلمه «نانس» در دنیای ارزهای دیجیتال برای یک چیز دیگر هم استفاده می‌شود و این همپوشانی، بزرگترین منبع سردرگمی در بین تازه واردان است. نانس استخراج بیت کوین یک متغیر جستجو است. نانس حساب اتریوم یک شمارنده است. آنها فقط یک نام دارند و تقریباً هیچ چیز دیگری را به اشتراک نمی‌گذارند.

نانس هش (بیت کوین) نانس حساب (اتریوم)
شغل جستجوی یک هش معتبر در زیر هدف توالی تراکنش‌های خروجی به ازای هر حساب
جایی که زندگی می‌کند سرآیند بلوک (۳۲ بیت) وضعیت حساب (یک عدد صحیح کامل، از ۰ شروع می‌شود)
چه کسی آن را جهش می‌دهد؟ ماینر، در سخت‌افزار، میلیاردها در ثانیه کیف پول، به طور خودکار، یکی در هر ارسال
معنی «اشتباه» چیست بلیط بخت‌آزمایی ناموفق بود، نوبت بعدی را امتحان کنید تراکنش رد شده یا گیر کرده است
به اجماع گره خورده؟ بله، این اثبات کار است نه، این محافظت در برابر تکرار است

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

نانس حساب اتریوم و مشکل تراکنش‌های گیر کرده

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

این ترتیب دقیق، همان چیزی است که به اتریوم محافظت در برابر تکرار می‌دهد. یک تراکنش امضا شده به یک نانس خاص و از زمان EIP-155 به یک شناسه زنجیره خاص نیز متصل می‌شود. یک مهاجم نمی‌تواند یک تراکنش اجرا شده قدیمی را طوری دوباره پخش کند که انگار جدید بوده است. تا زمانی که پخش مجدد فرا برسد، نانس حساب از آن عبور کرده است. شناسه زنجیره، تکرارهای بین زنجیره‌ای را در همان نوسان از بین می‌برد. در داخل یک زنجیره، یک تراکنش تأیید شده در یک نقطه روی شمارنده‌ای که قبلاً حرکت کرده است، قرار دارد.

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

این راه حل در مکانیزمی به نام جایگزینی با کارمزد (replace-by-fee) نهفته است. کیف پول شما یک تراکنش جدید را در همان نانس (nonce) تراکنش گیر افتاده، اما با گس (gas) بیشتر، دوباره منتشر می‌کند. EIP-1559، مدل قیمت‌گذاری گس که از زمان ارتقای لندن در آگوست 2021 در اتریوم اجرا می‌شود، این قانون را تعیین می‌کند: تراکنش جدید باید هم «maxFeePerGas» و هم «maxPriorityFeePerGas» را حداقل ده درصد نسبت به تراکنش اصلی افزایش دهد. آیا می‌خواهید تراکنش گیر افتاده را به جای جایگزینی، به طور کامل از بین ببرید؟ یک انتقال خودکار صفر اتریوم (zero ETH) را در نانس گیر کرده، با انعام بالاتر ارسال کنید. اسلات خودش را مصرف می‌کند و هر تراکنش بعدی در صف، از حالت مسدود خارج می‌شود.

برای درک بهتر، اعداد مربوط به ماه مه ۲۰۲۶ را در نظر بگیرید. میانگین انعام با اولویت نزدیک به ۱.۸۷۵ Gwei. یک لغو استاندارد با ۲۱۰۰۰ گس در یک روز آرام حدود ۰.۰۵ دلار است و در زمان ازدحام به دلارهای پایین صعود می‌کند. یک درس وجود دارد که همه در نهایت به سختی یاد می‌گیرند: همیشه ابتدا کمترین نانس در حال انتظار را جایگزین کنید. افزایش کارمزد برای تراکنش بعدی در حالی که تراکنش قبلی هنوز گیر کرده است، هیچ کاری انجام نمی‌دهد.

انتزاع حساب این داستان را کمی تغییر می‌دهد. حساب‌های هوشمند ERC-4337 از یک نانس دوبعدی استفاده می‌کنند که عدد صحیح را به یک «کلید» ۱۹۲ بیتی و یک دنباله ۶۴ بیتی تقسیم می‌کند. کلیدهای مختلف جریان‌های تراکنش موازی را تشکیل می‌دهند. یک دسته متوقف شده روی یک کلید، کار روی کلید دیگر را مسدود نمی‌کند. نانس حساب بالاخره از یک شمارنده خطی واحد فراتر رفته است.

یک افسانه دیگر که ارزش از بین بردن دارد. انتقال اتریوم به اثبات سهام در ادغام، در سپتامبر 2022، نانس حساب را حذف نکرد. چیزی که ناپدید شد نانس استخراج در داخل هدر بلوک بود، زیرا اعتبارسنج‌ها اکنون به جای یک معمای هش، بر اساس اسلات انتخاب می‌شوند. نانس حساب دقیقاً در جایی که همیشه بود، در trie وضعیت حساب، باقی ماند.

نانس رمزنگاری‌شده در رمزگذاری: نسخه‌ی فاجعه‌بار

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

هر رمزنگاری احراز هویت‌شده‌ی مدرن، یک کلید مخفی را با یک نانس به ازای هر پیام جفت می‌کند. AES-GCM، که در TLS 1.3 نقش مهمی دارد، از ۹۶ بیت استفاده می‌کند. NIST SP 800-38D مشخصات آن را نوشته است. ChaCha20-Poly1305، جایگزین مدون‌شده در RFC 8439 (ژوئن ۲۰۱۸)، همان طول نانس ۹۶ بیتی را کپی کرده و آن را با یک کلید ۲۵۶ بیتی جفت می‌کند. قانون هر دو، به زبان ساده: هر جفت (کلید، نانس) دقیقاً یک بار اجرا می‌شود. استفاده‌ی مجدد یک تخریب نرم نیست. این یک پرتگاه است.

پرتگاه چه شکلی است؟ استفاده مجدد از یک nonce در AES-GCM تحت یک کلید. وانمود کنید که یک مهاجم هر دو متن رمز را ضبط کرده است. آنها هر دو را با هم XOR می‌کنند. XOR دو متن اصلی زیرین را حذف می‌کند. محرمانگی، در یک مرحله از بین می‌رود. بدتر از آن این است که حالت احراز هویت GCM، زیرکلید احراز هویت داخلی خود را فاش می‌کند - مقداری که هر متن رمز را تحت آن کلید امضا می‌کند. با در دست داشتن زیرکلید، مهاجم متن‌های رمز احراز هویت شده جدیدی می‌نویسد و گیرنده مشروع آنها را به عنوان واقعی می‌پذیرد. یک رمزنگاری پیشرفته، با یک nonce بد، به زیر شیفت سزار می‌رود.

هیچ‌کدام از این‌ها فرضی نیستند. یک مقاله‌ی WOOT از USENIX در سال ۲۰۱۶ با عنوان «Nonce-Disrespecting Adversaries»، نقاط پایانی HTTPS در حال تولید را اسکن کرد و ۱۸۴ سرور را که از Nonceهای GCM استفاده می‌کردند، شناسایی کرد. این نسخه‌های دارای باگ شامل ایمیج‌های خاص Cisco IOS XE و میان‌افزار Radware ADC بودند. CVE-2016-0270 و چندین CVE مجاور، آن‌ها را ردیابی می‌کنند.

هک PS3 سونی در دسامبر ۲۰۱۰ نیز همان بیماری در یک رمزنگاری متفاوت بود: ECDSA. هر امضای ECDSA به یک مقدار برای هر امضا نیاز دارد که با k نوشته می‌شود و منحصر به فرد و مخفی است. کد امضای سونی از بخش منحصر به فرد صرف نظر کرد. یک ثابت k را به صورت ثابت کدگذاری کرد و آن را در هر امضا دوباره استفاده کرد. اگر به یک مهاجم دو امضای ECDSA روی پیام‌های مختلف با k یکسان بدهید، دو معادله خطی با دو مجهول خواهید داشت. حل کنید. کلید امضای خصوصی به صورت بسته به دست می‌آید. fail0verflow این را روی صحنه در بیست و هفتمین کنگره ارتباطات آشوب در برلین توضیح داد. کلید امضای اصلی سونی ظرف چند ساعت به اینترنت آزاد راه یافت. هر PS3 که تاکنون ساخته شده است، زنجیره اعتماد خود را به یکباره از دست داد.

اصلاح قطعی، که در سال ۲۰۱۳ به عنوان RFC 6979 تدوین شد، مولد اعداد تصادفی را از فرآیند حذف می‌کند. k را از HMAC پیام و کلید خصوصی استخراج کنید. همان پیام، همان کلید، همان k - هیچ RNG برای خراب شدن وجود ندارد. کتابخانه‌های مدرن بیت‌کوین ECDSA قطعی را به عنوان پیش‌فرض ارائه می‌دهند.

دو نتیجه‌ی فرعی از این داستان‌ها حاصل می‌شود و اغلب توسعه‌دهندگان را گیج می‌کنند. با رمزهای AEAD (AES-GCM، ChaCha20-Poly1305)، یک نانس قابل پیش‌بینی خوب است. یک شمارنده کار می‌کند. منحصر به فرد بودن کل الزام است. با امضاهای ECDSA و Schnorr، قانون برعکس می‌شود. یک k قابل پیش‌بینی فاجعه‌بار است. نانس امضا باید منحصر به فرد، غیرقابل پیش‌بینی و در عین حال مخفی باشد. ترکیب این دو حالت دقیقاً همان دلیلی است که اشکالات استفاده مجدد از نانس در کد کیف پول سفارشی ظاهر می‌شوند. ممیزی پروژه پشتیبان Kopia در سال 2024، خطر برخورد تصادفی نانس GCM را روی کلیدهای طولانی مدت ثبت کرد و گزارش‌های تست نفوذ در SDK های جدیدتر، ماه به ماه یافته‌های مشابهی را ثبت می‌کنند.

نانس در مقابل سالت در مقابل IV: اجتناب از سردرگمی سه‌جانبه

مردم در نوشته‌های امنیتی سه کلمه را طوری به کار می‌برند که انگار منظورشان یکی است. نمک (Salt)، نانس (Nonce)، چهارم (IV). آنها مترادف نیستند.

Salt به هش کردن رمز عبور مربوط می‌شود. شما یک مقدار تصادفی برای هر کاربر انتخاب می‌کنید، آن را با هش ترکیب می‌کنید و حالا جداول رنگین‌کمانی از پیش محاسبه‌شده برای "password123" دیگر در پایگاه داده شما کار نمی‌کنند. یک salt به صورت متن ساده در کنار hash قرار می‌گیرد. هیچ‌کس آن را پنهان نمی‌کند. اشتراک‌گذاری salt توسط دو کاربر، کار عجیبی است؛ این کار به مهاجمی که یکی از آن‌ها را کرک کرده، اجازه می‌دهد تا رمز دوم او را نیز کرک کند. این پایان دنیا نیست.

نانس به پیام‌رسانی و امضاها تعلق دارد. در رمزگذاری متقارن، به ازای هر پیام. در ECDSA، به ازای هر امضا. رمزگذارهای AEAD مانند AES-GCM، نانس را به طور واضح، مانند یک نمک که در کنار یک هش قرار می‌گیرد، افشا می‌کنند. ECDSA آن را پنهان می‌کند، با آن به عنوان یک راز رفتار می‌کند و هر بار تصادفی بودن تازه‌ای را مطالبه می‌کند. در هر صورت، تصادم‌ها ناخوشایند نیستند. آنها کشنده هستند. کل ضمانت از بین رفته است.

IV - مخفف عبارت initialization vector - نام قدیمی چیزی است که در مشخصات جدیدتر به آن nonce می‌گویند. حالت‌های CBC و CTR سال‌ها از این کلمه استفاده می‌کردند. مستندات مدرن AEAD تغییر کرده‌اند، عمدتاً به این دلیل که «vector» شبیه تکالیف ریاضی به نظر می‌رسید و مردم مدام از آن استفاده می‌کردند. «Nonce» بیشتر به این قانون تکیه دارد.

به یک قانون نیاز دارید که روی کاغذ چسبناک جا شود؟ یک Salt از رازی که ذخیره می‌کنید محافظت می‌کند. یک Nonce از رازی که ارسال می‌کنید محافظت می‌کند.

نانس در کریپتو

چرا نانس فراتر از مسائل جزئی استخراج بیت کوین اهمیت دارد؟

یک نانس یک شیء کوچک است. سی و دو بیت در بیت کوین. یک شمارنده در اتریوم. دوازده بایت در AES-GCM. این شیء وزن نامتناسبی برای اندازه خود دارد. برای کاربران عادی، هر تراکنش اتریوم گیر کرده، هر دست دادن TLS به یک سایت بانکی، هر امضایی که یک کیف پول سخت افزاری تولید می‌کند، به مدیریت صحیح یک نانس بستگی دارد. برای توسعه دهندگان، مدیریت نادرست نانس رایج‌ترین نقطه ورود برای باگ‌های فاجعه‌بار در کد رمزنگاری سفارشی است. حادثه PS3 یک مورد حاد بود، اما همین حالت خرابی همچنان در SDK های کیف پول جدیدتر و ابزارهای پشتیبان گیری ظاهر می‌شود. برای اقتصاد بیت کوین، نانس ۳۲ بیتی همراه با مکانیک نانس اضافی همان چیزی است که استخراج ASIC را در وهله اول به یک قرعه کشی عادلانه تبدیل کرد. یکی از مهمترین انتخاب‌های طراحی ساتوشی، که در دید ساده در یک فیلد هدر معمولی پنهان شده است.

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

هر سوالی دارید؟

بله برای هر دو، به روش‌های مختلف. سولانا نانس‌های سطح حساب را نگه می‌دارد و حساب‌های نانس بادوام را برای امضای آفلاین اضافه می‌کند. اتریوم مبتنی بر اثبات سهام، نانس حساب را پس از ادغام سپتامبر ۲۰۲۲ نگه داشت، اما نانس استخراج را از هدرهای بلوک حذف کرد، زیرا اعتبارسنج‌ها اکنون به جای پازل هش، بر اساس اسلات انتخاب می‌شوند.

در اتریوم، تنها راه، جایگزینی با کارمزد است که عمداً یک تراکنش تأیید نشده را با پرداخت گس بالاتر، در همان نانس با تراکنش دیگری عوض می‌کند. پس از تأیید، دو تراکنش هرگز نمی‌توانند یک نانس را در یک حساب به اشتراک بگذارند. در AES-GCM تحت یک کلید، به اشتراک گذاشتن یک نانس کاملاً ممنوع است. استفاده مجدد، محرمانگی و احراز هویت را در همان مرحله نقض می‌کند.

اجرای جایگزینی با کارمزد. یک تراکنش جدید در همان نانسِ تراکنشِ گیر کرده، با افزایش ده درصدی یا بیشترِ «maxFeePerGas» و «maxPriorityFeePerGas». برای لغو به جای جایگزینی، یک انتقال با مقدار صفر به آدرس خودتان در آن نانسِ گیر کرده، با انعام بالاتر ارسال کنید. همیشه ابتدا کمترین نانسِ در حال انتظار را جایگزین کنید.

سه کار، یک ایده اساسی. یک نانس (nonce) منحصر به فرد بودن را اعمال می‌کند، بنابراین یک عملیات مشابه نمی‌تواند دوباره اجرا شود. تراکنش‌ها را در دفاتر کل مبتنی بر حساب، توالی‌بندی می‌کند. و این متغیر جستجو است که ماینرها هنگام جستجوی یک هش معتبر در اثبات کار تنظیم می‌کنند. مکانیک‌های متفاوت، نکته یکسان: متمایز کردن هر رویداد از یکدیگر.

این عبارت معمولاً به یک سطح حساب یا نانس احراز هویت اشاره دارد. یک مقدار یکبار مصرف را تصور کنید که به یک جلسه، یک تراکنش یا یک درخواست API گره خورده است، بنابراین درخواست قابل تکرار نیست. منظور از «توکن» در اینجا مفهوم ERC-20 نیست. OAuth و OpenID Connect هر دو در جریان‌های احراز هویت خود به توکن‌های نانس متکی هستند.

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

Ready to Get Started?

Create an account and start accepting payments – no contracts or KYC required. Or, contact us to design a custom package for your business.

Make first step

Always know what you pay

Integrated per-transaction pricing with no hidden fees

Start your integration

Set up Plisio swiftly in just 10 minutes.