هش (Hash) چیست؟
هش تابعی است که ورودی از حروف و اعداد را به یک خروجی رمزگذاری شده با طولی ثابت تبدیل می کند. توابع hash در سرتاسر اینترنت به منظور ذخیره ایمن کلمه عبور، یافتن سوابق تکراری، ذخیره سریع و بازیابی اطلاعات و موارد این چنین به کاربرده می شوند. هش با استفاده از یک الگوریتم ایجاد می شود که برای مدیریت بلاک چین در فضای کریپتوکارنسی ها بسیار ضروری است و درواقع پایه و اساس شبکه بلاک چین نیز محسوب می شود. هشینگ در ایجاد فناوری بلاک چین، نقش بسیار اساسی ایفا کرده است. اگر قصد دارید تا متوجه شوید فناوری بلاک چین چگونه کار می کند، قطعاً باید مفهوم هشینگ را به درستی درک کنید.
اما هشینگ به چه معناست؟
به زبان ساده، هشینگ با استفاده از یک تابع ریاضی مقداری را به مقدار دیگر تبدیل می کند. هشینگ یکی از راه های ایجاد امنیت در هنگام انتقال پیام است (زمانی که می خواهیم پیام فقط برای یک گیرنده خاص قابل شناسایی باشد). برای درک بهتر این موضوع مثال ساده زیر را تصور کنید:
فرض کنید شما می خواهید پیام مهم را به شخصی ارسال کنید و این پیام باید در همان قالب به دست آن شخص برسد. خب شما چگونه این کار را انجام می دهید؟ یک روش این است که چندین بار آن پیام را ارسال کنید تا مطمئن شوید که محتوایات آن دست کاری نشده اند. اما اگر محتوای پیام خیلی طولانی باشد، چه؟ تأیید صحت هر حرف با انجام این کار، غیرعملی و کاملاً خسته کننده است. در این زمان است که “هشینگ” نقش بسیار مهمی را ایفا می کند. با استفاده از یک الگوریتم هشینگ، داده ها در اندازه ای ثابت فشرده می شوند. مثلاً اگر جمله “کلاغ ها طول عمر بلندی دارند” را توسط الگوریتم به هش تبدیل کنیم، به ۶e04f289 خواهیم رسید. این مقدار به عنوان hash شناخته می شود. زمانی که می خواهید فایل ها و یا داده ها را شناسایی و باهم مقایسه کنید، هش ها نقش کلیدی را ایفا می کنند. برای رایانه ها نیز مقایسه داده ها به صورت مقادیر هش، بسیار ساده تر از شکل اصلیشان است.
چه کسانی از هشینگ استفاده می کنند؟
به طور روزانه، اکثر کاربران در خصوص گذرواژه های خود از فرآیند هشینگ استفاده می کنند. به عنوان مثال، زمانی که می خواهید یک آدرس ایمیل و رمز عبور برای خود ایجاد کنید، سایت ارائه دهنده ایمیل احتمالاً گذرواژه شمارا به همان صورت ذخیره نمی کند. در عوض رمز عبور شمارا از طریق یک الگوریتم هشینگ اجرا می کند و سپس هش رمز عبور شمارا ذخیره می کند. هر بار که می خواهید به ایمیلتان وارد شوید، آن سایت رمز عبوری که وارد می کنید را به هش تبدیل می کند و آن را با هشی که ذخیره کرده است مقایسه می کند و تنها در صورتی که این دو هش باهم تطابق داشته باشند، شما مجاز به دسترسی به ایمیلتان هستید.
هشینگ در ارزهای دیجیتال
در بلاک چین بیت کوین، فرآیند “ماینینگ” اساساً با اجرای یکسری توابع هشینگ SHA-256 انجام می شود. امروزه در بلاک چین ارزهای دیجیتال، از فرآیند هشینگ برای نوشتن تراکنش های جدید، زمان گذاری آن ها و درنهایت افزودن آن ها به بلاک قبلی استفاده می شود. هنگامی که یک بلاک از تراکنش ها به بلاک چین اضافه و میان اپراتور نودهای مختلف اجماع حاصل می شود، از آن پس معکوس کردن فرآیند معامله به دلیل ماهیت یک طرفه بودن هشینگ تقریباً غیرممکن خواهد شد. بنابراین هشینگ برای حفظ یکپارچگی بلاک چین بسیار حیاتی است.
تفاوت هشینگ و رمزنگاری چیست؟
هشینگ برای تائید صحت محتوا و رمزنگاری برای حفظ امنیت و محرمانگی داده ها مورداستفاده قرار می گیرد. در فرآیند رمزنگاری، برای دستیابی به متن اصلی و عادی به کلید خصوصی نیاز است.به طور کلی، رمزگذاری یک عملکرد دوطرفه است که شامل رمزگذاری و رمزگشایی است، در حالی که هشینگ یک تابع یک طرفه است که یک متن ساده را به هش هایی منحصر به فرد تبدیل می کند و این فرآیند غیرقابل برگشت خواهد بود. فرآیندهای هشینگ و رمزگذاری باهم متفاوت هستند اما شباهت هایی نیز دارند؛ هردوی آن ها در کنترل داده ها، پیام ها و اطلاعات در سیستم های محاسباتی نقش بسیار مهمی ایفا می کنند و هر دو داده ها را به فرم دیگری تبدیل می کنند و یا تغییر می دهند.
فرآیند هشینگ چگونه کار می کند؟
در ارز دیجیتال بیت کوین، تراکنش ها به عنوان ورودی دریافت می شوند و از طریق الگوریتم هشینگ (که بیت کوین از الگوریتم SHA-256 استفاده می کند) به یک خروجی با طولی ثابت تبدیل می شوند. برای درک بهتر این موضوع، ما در مثال مان از همان الگوریتم SHA-256 استفاده می کنیم:
همان طور که مشاهده می کنید، در خصوص الگوریتم SHA-256، مهم نیست ورودی شما به چه اندازه بزرگ و یا کوچک باشد، خروجی درنهایت همیشه دارای طول ثابت ۲۵۶ بیت خواهد بود. این مسئله زمانی مهم است که شما با تعداد زیادی از داده ها و تراکنش ها سروکار دارید. بنابراین اساساً، به جای به یادآوردن داده های ورودی که می توانند بسیار هم زیاد باشند، می توانید فقط مقدار هش را به خاطر بسپارید و آن را پیگیری کنید. پیش از اینکه بیشتر در این خصوص توضیح دهیم، بهتر است ابتدا به ویژگی های توابع هشینگ و نحوه پیاده سازی آن ها در بلاک چین بپردازیم.
توابع رمزنگاری شده
تابع رمزنگاری شده، یک طبقه ویژه از توابع هش است که دارای ویژگی های مختلف و مناسبی برای فضای رمزنگاری است. برای تأمین امنیت این گونه فضاها، یک تابع رمزنگاری شده باید دارای ویژگی های خاصی باشد. در ادامه ما به چند مورد از مهم ترین آن ها می پردازیم:
- ویژگی شماره ۱: قطعیت
این یعنی اینکه مهم نیست چند بار از طریق یک تابع هش، یک ورودی خاص را به هش تبدیل کنید، چراکه همیشه نتیجه یکسانی را خواهید گرفت. این مسئله بسیار مهم است، چراکه اگر هر بار هش مختلفی را دریافت کنید، پی گیری مسیر ورودی آن غیرممکن خواهد بود.
- ویژگی شماره ۲: محاسبات سریع
تابع هش باید قادر باشد تا هش ورودی را به سرعت بازگرداند. اگر این روند به اندازه کافی سریع انجام نشود، سیستم کارآمد نخواهد بود.
- ویژگی شماره ۳: غیرعملی بودن تبدیل هش بدست آمده به ورودی
این ویژگی بیان می کند که، با در اختیار داشتن هش خروجی تعیین میزان ورودی غیرعملی است. به استفاده از کلمه “غیرعملی” به جای کلمه “غیرممکن” توجه کنید؛ چراکه تعیین ورودی اصلی از مقدار هش آن، غیرممکن هم نیست. اجازه دهید این را مثالی توضیح دهیم:
فرض کنید شما تاسی را می چرخانید و خروجی آن هش عددی است که تاس نشان می دهد. اکنون چگونه می توانید تعیین کنید که عدد اصلی چه بوده است؟ تنها کاری که شما باید انجام دهید این است که هش تمام اعداد ۱ تا ۶ را پیدا کنید و آن ها را باهم مقایسه کنید. از آنجایی که توابع هش دارای قطعیت هستند، هش یک ورودی خاص همیشه ثابت خواهد بود. بنابراین شما می توانید به سادگی مقادیر هش ها را باهم مقایسه و ورودی اصلی را پیدا کنید. اما این کار تنها زمانی مناسب است که تعداد داده ها بسیار کم باشند و زمانی که شما با حجم زیادی از داده سروکار دارید، پیدا کردن جواب بسیار زمانبر و طاقت فرسا خواهد بود.
- ویژگی شماره ۴: تغییرات کوچک در ورودی، هش خروجی را تغییر می دهد
حتی اگر تغییر کوچکی در ورودی خود ایجاد کنید، تغییراتی که در هش بوجود می آیند بسیار چشمگیر خواهند بود. اجازه دهید این مثال را با استفاده از الگوریتم SHA-256 آزمایش کنیم:
همان طور که در تصویر مشاهده می کنید، حتی اگر شما فقط حرف اول ورودی را تغییر دهید، می بینید که این تغییر چقدر بر هش خروجی تأثیر گذاشته است. این یک ویژگی بسیار مهم است چراکه منجر به یکی از بزرگ ترین خصوصیات بلاک چین یعنی همان “تغییرناپذیری اش” می شود.
- ویژگی شماره ۵: مقادیر هش هرگز باهم برابر نخواهند بود
با توجه به دو ورودی مختلف A و B، غیرعملی است که مقادیر هش A با هش B برابر باشد. این یعنی اینکه برای بیشتر قسمت ها، هر ورودی هش منحصر به فرد خود را دارد. (مجدداً یادآوری می کنیم که “غیرعملی” به معنای “غیرممکن” نیست، چراکه در واقعیت افرادی هستند که این کار را انجام می دهند).
- ویژگی شماره ۶: بدون توجه به ورودی، خروجی همیشه به یک اندازه خواهد بود
اگر شما یک کلمه واحد را تبدیل به هش کنید، خروجی به یک اندازه معین خواهد بود (در خصوص تابع SHA-256، اندازه آن ۲۵۶ بیت خواهد بود). اگر هم یک کتاب را تبدیل به هش کنید، بازهم خروجی به همان اندازه ۲۵۶ بیت خواهد بود. این یکی دیگر از ویژگی های مهمی است که می تواند باعث صرفه جویی در زمان محاسبات شود. یکی از بهترین مثال ها در این خصوص، استفاده از هش به عنوان یک کلید در نقشه داده هاست. نقشه داده، یک ساختار ساده است که در علم کامپیوتر برای ذخیره سازی داده ها استفاده می شود.
هنگامی که برنامه ای داده ها را در یک نقشه ذخیره می کند، یک کلید و یک مقدار خاص به آن نقشه اختصاص می دهد. هنگامی که برنامه می خواهد به آن مقدار دسترسی پیدا کند، می تواند کلید مناسب را به نقشه ارائه بدهد و مقدار مربوطه را دریافت کند. نقشه های داده بسیار مفیدند چراکه می توانند داده ها را فوراً پیدا کنند. در نقشه، از این کلید به عنوان آدرسی استفاده می شود که کامپیوترها می توانند بلافاصله داده هدف را جستجو کنند (به جای اینکه ساعت ها زمان صرف جستجو در میلیون ها بایگانی کنند). از آنجایی که کلیدها مانند آدرس هستند، نمی توانند خیلی بزرگ باشند. اگر ما بخواهیم کتابی را در یک نقشه داده ذخیره کنیم، می توانیم محتوای کتاب را به هش تبدیل کنیم و از آن به عنوان کلید استفاده کنیم.
هش ریت (Hash Rate) یا نرخ آ چیست؟
به زبان ساده، Hash Rate به معنای این است که چه تعداد عملیات هشینگ در فرآیند ماینینگ بیت کوین در حال انجام است. درواقع، هش ریت سرعت عملکرد دستگاه ماینینگ را نشان می دهد. در هنگام استخراج، هرچه میزان هش ریت بالاتر باشد بهتر است چراکه این، فرصت یافتن بلاک بعدی و دریافت پاداش را افزایش می دهد.
واحد هش ریت چیست و چگونه اندازه گیری می شود؟
هش ریت بر مبنای ثانیه اندازه گیری می شود (h/s).
درجه بندی هش ریت:
- ۱ KH/s برابر با ۱،۰۰۰ (هزار) هش در ثانیه است.
- ۱ MH/s برابر با ۱،۰۰۰،۰۰۰ (یک میلیون) هش در ثانیه است.
- ۱ GH/s برابر با ۱،۰۰۰،۰۰۰،۰۰۰ (۱ میلیارد) هش در ثانیه است.
- ۱ TH/s برابر با ۱،۰۰۰،۰۰۰،۰۰۰،۰۰۰ (۱ تریلیون) هش در ثانیه است.
تبدیل های رایج هش ریت:
- ۱ MH/s = 1,000 kH/s
- ۱ GH/s = 1,000 MH/s = 1,000,000 kH/s
- ۱ TH/s = 1,000 GH/s = 1,000,000 MH/s = 1,000,000,000 kH/s