آشنایی با هشینگ در دنیای ارزهای دیجیتال
هشینگ یکی از مهمترین فرآیندها در زمزنگاری بلاک چین است. امنیت و بقای ارزهای دیجیتال تا حد زیادی به هشینگ بستگی دارد. دلیلش هم این است که بیشتر عملیاتی که در بلاک چین بر مبنای هش کردن اطلاعات انجام میشود برای حفظ امنیت است.
هشینگ را میتوان فرآیند ایجاد یک خروجی با اندازه ثابت از یک ورودی با اندازه متغیر تعریف کرد. در واقع دادهی ورودی میتواند به هر اندازهای باشد ولی داده به دست آمده همیشه اندازهی ثابتی خواهد داشت. هشینگ از طریق یک سری فرمولهای ریاضی که به آنها تابع هش گفته میشود صورت میگیرد.
در این مطلب به بررسی مفهوم هشینگ در بازار ارزهای دیجیتال میپردازیم.
امضای دیجیتال چیست؟
پیش از صحبت در مورد هش کردن بهتر است نگاهی به موضوع هویت سنجی و امضای دیجیتال داشته باشیم. امضای دیجیتال مکانیزمی برای رمزنگاری است که به منظور تأیید و اعتبارسنجی دادههای دیجیتال به کار برده میشود. به عبارتی، امضای دیجیتال را میتوان کدی تعریف کرد که به پیام یا سندی وصل میگردد. این کد نشان میدهد که پیام ارسالی در مسیر خود از فرستنده تا گیرنده هیچ تغییری نکرده و دستکاری نشده است. توسعه رمزنگاری کلید عمومی در دهه 70 منجر شد که امروزه تکنولوژی به نام امضای دیجیتال داشته باشیم.
الگوریتمهای رمزنگاری کلید عمومی مناسب امضا کردن سندهای طولانی نیست. به همین جهت پروتکلهای امضای دیجیتال برای صرفهجویی در زمان، دیگر به رمزنگاری کل پیام نمیپردازند و به جای آن از تابع هش استفاده میکنند.
پس هشینگ را میتوان یکی از مهمترین عناصر در سیستم امضای دیجیتال دانست. سیستم امضای دیجیتال دارای سه مرحله است:
- هشینگ
- امضا
- صحت سنجی
هش کردن یا هشینگ
فرآیند هشینگ در بازار ارزهای دیجیتال با وارد کردن اطلاعات به یک الگوریتم هش و دریافت اطلاعات خروجی شروع میشود. همانطور که در ایتدای مقاله به آن اشاره کردیم، مقدار دادههای ورودی میتواند متغیر باشد ولی مقدار دادهی خروجی همیشه ثابت است به این معنی که دادههای خروجی، هش شده از طریق یک الگوریتم، طول یکسانی دارند.
از آنجا که میتوان برای امضای اطلاعات از کلید خصوصی استفاده کرد، پس اجباری در استفاده از هشینگ برای امضای دیجیتال نیست. با این وجود در دنیای ارزهای دیجیتال دادهها همیشه هش میشوند چرا که از طریق هشینگ دادهها همواره طولی مشخص و ثابتی دارند و این موضوع در سادهسازی عملکرد بلاک چین بسیار مهم و اثرگذار است.
امضا کردن پیام یا سند
پس از اینکه دادهها هش شد، فرستنده باید پیام یا سند ارسالی خود را امضا نماید. در این مقطع با رمزنگاری کلید عمومی روبرو هستیم. الگوریتمهای امضای دیجیتال انواع مختلفی دارند که هر کدام مکانیزمی مختص به خود دارند. به عبارتی هشینگ با کلید عمومی سر و کار دارد اما به هر حال پیام هش شده با کلید خصوصی امضا میشود. گیرنده میتواند با کلید عمومی اعتبار پیام را بررسی کند.
به عبارتی، بدون استفاده از کلید خصوصی امکان اعتبارسنجی پیام با کلید عمومی وجود ندارد. هر دو کلید عمومی و خصوصی را فرستنده ایجاد میکند ولی فقط کلید عمومی است که با گیرنده پیام و دیگران به اشتراک گذاشته میشود.
لازم به ذکر است که امضاهای دیجیتال مرتبط با محتوا هستند و به همین دلیل هیچ امضای دیجیتالی با دیگری یکسان نیست.
صحت سنجی پیام
تصور کنید شهرام پیامی را برای مینا مینویسد، آن را هش میکند و مقدار هش را با کلید خصوصی ترکیب کرده و در نهایت امضای دیجیتال ایجاد میشود. همانطور که گفته شد، این امضا منحصر به فرد است. وقتی مینا پیام را دریافت کرد، اعتبار امضا را میتواند با استفاده از کلید عمومی شهرام بررسی کند. کلید عمومی منطبق بر کلید خصوصی تنها در دسترس مینا است و از این طریق مینا مطمئن خواهد شد که این امضا توسط خود شهرام ایجاد شده است.
پس بسیار مهم است که کلید خصوصی مخفی و امن نگه داشته شود چرا که اگر فرد دیگری کلید خصوصی مینا را داشته باشد، به راحتی امکان کلاهبرداری و دسترسی به اطلاعات خصوصی او را خواهد داشت. در واقع اگر کلید خصوصی مینا در دست فرد دیگری قرار گیرد، دیگر اختیار داراییهای دیجیتال مینا با خودش نیست و کوینهای او میتواند بدون اجازهاش برداشت شود.
در مطلب “امضای دیجیتال چیست و چه کاربردی دارد؟” میتوانید بیشتر با امضای دیجیتال آشنا شوید.
به کمک هشینگ بلاک چین تغییرناپذیر است
هش در بلاک چین وضعیت فعلی شبکه را به ما نشان میدهد. در واقع هر تراکنشی که در شبکه انجام میشود با دادههای ورودی جدید ترکیب میگردد. به عبارتی هش خروجی بر اساس تمام تراکنشهای گذشته است که بر روی بلاک چین صورت گرفته است.
محاسبه اولین هش (بلاک جنسیس) با در نظر گرفتن تراکنشهای پیشین بلاک چین انجام میشود. در تعیین مقدار هش برای هر بلاک جدیدی که ایجاد شود، هم تراکنشهای آن بلاک لحاظ میگردد و هم هش بلاک قبلی به عنوان ورودی در اختیار تابع هش گذاشته میشود. به این شکل زنجیرهای از بلاکها خواهیم داشت.
از آنجا که هش بلاک جدید با در نظر گرفتن هش بلاک قبلی تولید میشود، هشینگ در بازار ارزهای دیجیتال راهکاری برای اثبات و تضمین عدم دستکاری در تراکنشها است. تصور کنید تغییر هر چند کوچکی در اطلاعات تراکنش ایجاد شود، پس هش بلاکی که تراکنش در آن ثبت گردیده نیز تغییر میکند و به همین منوال ترتیب هش بلاکهای بعدی هم تغییر خواهد کرد. بنابراین، به راحتی با مقایسه هشها هر تغییر و دستکاری قابل تشخیص است.
این اتفاق یکی از ویژگیهای مهم و جذاب در بلاک چینها است زیرا همه کاربران شبکه باید روی یک هش اتفاق نظر داشته باشند و تراکنش بلاک جدید را تأیید کنند و در نهایت اجازه ایجاد بلاک را صادر کنند. در صورتی که هشها با هم منطیق نباشند به این معنی است که تقلبی در کار است.
هشینگ در ماینینگ
استخراج یا ماینینگ ارزهای دیجیتال به معنی بلاکی جدید و افزودن آن بلاک چین است. بسیاری از ارزهای دیجیتال تعداد مشخص و محدودی دارند برای مثال از بیت کوین تنها 21 میلیون واحد وجود دارد. برای ایجاد هر بلاک محدودیت زمانی وجود دارد و استخراج زودتر از آن زمان ممکن نیست چرا که مشکلاتی در پی خواهد داشت و این مشکلات عبارتند از:
- تصادم بیشتر: تابعهای هش بیشتری ایجاد شده و تصادم بیشتر میشود.
- بلاکهای یتیم بیشتر: در صورتی که ماینرهای زیادی بتوانند بلاکی جدید استخراج کنند، این احتمال وجود دارد که به صورت هم زمان با هم بلاک را ثبت کنند. اما فقط و فقط یکی از این بلاکها به زنجیره خواهد پیوست و دیگر بلاکها رها میگردند که به اصطلاح به آنها بلاک یتیم گفته میشود.
در نتیجه برای اینکه ایجاد بلاک محدود گردد، سحی از سختی برای استخراج لحاظ میشود.
وقتی نرمافزارهای استخراج قصد دارند بلاک جدیدی را به شبکه اضافه کنند، همهی محتویات بلاک هش میشود. اگر میزان هش تولید شده از سختی هدف کمتر باشد، بلاک مورد نظر به شبکه اضافه میگردد و همه کاربرهای شبکه باید آن را تأیید نمایند.
ایجاد بلاک جدید ساده نخواهد بود. از همین رو، پای نانس به میان میآید. نانس (Nounce) رشتهای تصادفی و دلخواه بوده که با هش ترکیب شده و این رشته جدید به هم پیوسته هش میگردد و با سطح سختی مقایسه میشود. اگر مقدار هش از سطح سختی کمتر نباشد، nounce باید تغییر کند. برای رسیدن به مقدار هش کمتر از سطح سختی، شاید لازم باشد که فرآیند گفته شده میلیونها بار صورت گیرد و وقتی اتفاق مورد نظر افتاد و مقدار هش از سطح سختی کمتر بود، بلاک جدید به شبکه اضافه میشود.
نرخ هش به چه معنا است؟
به تعداد عملیاتهای هش در یک زمان مشخص هش ریت یا نرخ هش گفته میشود. این نرخ عاملی مهم و مؤثر در هشینگ در بازار ارزهای دیجیتال به حساب میآید. ماینرها هم برای انتخاب دستگاه ماینینگ خود نرخ هش دستگاه را در نظر میگیرند. به عبارتی، هش ریت معیاری برای سنجش عملکرد یک ماینر است.
هش ریت، سختی شبکه و پاداش ماینرها کاملاً به هم وابسته هستند. هر قدر سختی شبکه بیشتر شود، برای پیدا کردن بلاک و استخراج آن هش ریت بیشتری هم نیاز است.
دیدگاهتان را بنویسید