هش یک تابع یک جهته است که در سیستم های بلاکچین و غیرمتمرکز کاربردهای زیادی دارد. تمام رسانه های دیجیتالی مانند اسناد، فیلم ها یا موسیقی فقط رشته هایی از ارقام باینری صفر و یک هستند.
یک تابع هر رسانه دیجیتالی را گرفته و الگوریتمی را بر روی آن اجرا می کند تا یک خروجی منحصر به فرد با طول ثابت تولید کند که معروف به “هش” است. این خروجی با طول ثابت، معمولاً بسیار کوچکتر از ورودی اصلی است.
هر بار که رسانه دیجیتال یکسانی به تابع هش داده میشود، خروجی یا هش دقیقا مشابهی تولید میکند. زمانی که تنها یک بیت از اطلاعات تغییر کند و سپس به تابع هش داده شود، خروجی یا هش نسبت به نمونه اصلی کاملا متفاوت خواهد بود.
ریاضیات پشت تابع هش اثبات می کند که هیچ راهی برای استخراج محتوای رسانه دیجیتال اصلی از هش تولید شده وجود ندارد. این موضوع باعث شده که تابع هش یک طرفه باشد.
در بلاکچین مفهوم ماینینگ نیازمند ماینرهایی برای حل یک مسئله با دانستن پارمت های حاصل از ورودی آخرین حالت بلاکچین، برای ایجاد هش است. ماینرها باید سعی کنند ورودی دیجیتالی را حدس بزنند که بتواند هدف هش را ایجاد کند؛ اینگونه مشکل حل می شود.
به دلیل آنکه هش یک طرفه است، ماینرها باید روی ترکیب های زیادی از ورودی کار کنند تا هدف هش را ایجاد کرده و مسئله را حل کنند. این کار منابع رایانه ای زیادی از جمله CPU و حافظه رم مصرف میکند. اولین ماینری که مسئله را حل کند برنده میشود.
درخت مرکل و الگوریتم هش
درخت مرکل (Markle) بخش اصلی بلاکچین برای یکپارچه سازی داده است. هر بلاک در بلاکچین می تواند تراکنشهای متعددی را با دادههای مختلف شامل شود. در این مثال 4 تراکنش داریم.
TX1 TX2 Tx3 TX4
دادههای هر یک از چهار تراکنش به یک تابع هش منتقل می شود تا یک هش کاملا منحصر به فرد برای هر تراکنش ایجاد کند. هر جفت هش سپس ترکیب شده و دوباره به تابع هش داده میشود. این فرآیند دو هش جداگانه و منحصر به فرد تولید می کند که هر یک براساس ترکیب دو هش مربوط به دو تراکنش است. دو هش سپس ترکیب شده و دوباره به تابع هش داده میشوند. این امر منجر به یک هش ریشه می شود که یک درخت Markle کامل را تشکیل می دهد.
درخت Markle امکان بررسی هرگونه تغییر در داده های مربوط با تراکنش های یک بلاک، از طریق اجرای مجدد فرآیند برای هر تراکنش و مقایسه نتایج با هش ریشه اصلی را دارد.