فهرست مطالب
- تابع هش در هشینگ چیست ؟
- روش انجام هشینگ چیست ؟
- ویژگیهای هشینگ چیست ؟
- کاربرد هشینگ در بلاک چین چیست ؟
- ارتباط الگوریتم اجماع و هشینگ چیست ؟
- جمعبندی
«هشینگ» (Hashing) یکی از مفاهیم بسیار مهم در فضای کریپتوکارنسی و ارز دیجیتال است. به صورت کلی میتوان گفت هشینگ فرآیند ایجاد خروجی با اندازه ثابت از ورودی با هر اندازه دلخواه است. انجام این کار با استفاده از توابع ریاضی به نام «تابع هش» (Hash Function) انجام میشود. همه توابع هش ایجاد شده برای رمزنگاری در فضای ارزهای دیجیتال قابل استفاده نیستند اما توابع استفاده شده، پایه اصلی ایجاد تکنولوژی دفتر کل توزیع شده یکپارچه و امن هستند. هدف از نگارش این مقاله پاسخ به سوال هشینگ چیست و آشنایی با کاربرد آن در ارزهای دیجیتال است.
تابع هش در هشینگ چیست ؟
فرآیند هشینگ با استفاده از توابع هش انجام میشود بنابراین، شناخت بهتر این توابع میتواند در درک بهتر فرآیند هشینگ کمک کند. تابع هش به تابعی گفته میشود که به ازای ورودی با اندازه دلخواه، خروجی با اندازه ثابت تولید میکند. خروجی تمامی توابع هش شناخته شده قطعی است به این معنی که خروجی تابع هش برای یک ورودی، همواره ثابت و یکسان است و به هیچ عنوان تغییر نمیکند. به خروجی توابع هش، «هش» گفته میشود.
یکی دیگر از ویژگیهای مهم توابع هش عدم توانایی در رسیدن به ورودی با داشتن خروجی تابع است. این ویژگی باعث میشود که شما بتوانید بدون این که دادهای را برای کسی افشا کنید، اثباتی از آن را در اختیار او قرار دهید و بعدا با استفاده از آن اثبات کنید که داده مورد نظر شما چه بوده است.
در توابع هش به دلیل گسترده بودن فضای ورودیها نسبت به فضای خروجی، امکان رسیدن به یک خروجی یکسان برای دو ورودی وجود دارد اما برای به دست آوردن دو ورودی با خروجی یکسان، به محاسبات پیچیده و زمانبری نیاز است. در عمل انجام این کار به قدری سخت است که فرض میشود امکان انجام آن وجود ندارد.
یکی دیگر از ویژگیهای توابع هش این است که کوچکترین تغییر در داده ورودی، باعث تغییر گسترده در خروجی تابع هش میشود. هرچه این ویژگی در یک تابع هش برجسته باشد، برای رمزنگاری مناسبتر است زیرا در این صورت حدس زدن خروجیها بسیار سختتر از قبل میشود. مجموعه این ویژگیها سبب استفاده گسترده از توابع هش در رمزنگاری به خصوص برای ایجاد ارزهای دیجیتال میکند.
روش انجام هشینگ چیست ؟
در بخش قبل فهمیدیم که تابع هش در هشینگ چیست و چه ویژگیهایی دارد. هر تابع هش، خروجی مخصوص به خود را دارد و اندازه خروجی توابع مختلف هش با یکدیگر متفاوت است اما خروجی حاصل از یک تابع هش همواره دارای اندازه مشخص و ثابت است. به عنوان مثال، تابع هش «SHA-256» که در شبکه بیت کوین مورد استفاده قرار میگیرد، خروجی با 256 بیت تولید میکند در حالی که خروجی تابع هش «SHA-1» همواره 160 بیت است. اگر کلمهای مثل «rabex» را در داخل تابع هش «SHA-256» قرار دهیم خروجی آن به صورت زیر خواهد بود.
«4F7DB6D7717D148ED309351B0862E4CE057E8F665CF7288DA1BC964D051DF5D7»
شما در هر سیستم کامپیوتری اگر دقیقا این کلمه را در تابع «SHA-256» قرار دهید، خروجی به شکل بالا خواهد بود. حال با تغییر حرف اول کلمه به حرف بزرگ و قراردادن کلمه «Rabex» در همان تابع هش، خروجی زیر حاصل میشود.
«329613C37223E9938051B83B33D3C0FFA2C21D0D9B291F31D9D77AF02E20342D»
همانطور که مشاهده میکنید، کمترین تغییر در ورودی باعث تغییرات اساسی در خروجی تابع شد اما اندازه خروجی در هر دو حالت ثابت و برابر با 64 کاراکتر یا 256 بیت است. در بخش بعدی به سوال ویژگیهای هشینگ چیست پاسخ میدهیم و پس از آن موارد استفاده از هشینگ در تکنولوژی بلاک چین را بررسی میکنیم.
ویژگیهای هشینگ چیست ؟
برای اینکه یک تابع هش رمزنگاری امن باشد، باید دارای یک سری ویژگیها باشد. این ویژگیها به توابع هش کمک میکنند تا در فرآیند اجماع و سایر فرآیندهای مربوط به ارزهای دیجیتال مثل بیت کوین و اتریوم مورد استفاده قرار گیرند. در بخشهای قبلی به برخی از این ویژگیها به طور مختصر اشاره شد. در این بخش میخواهیم این ویژگیهارا به طور کامل بررسی کنیم.
قطعی بودن خروجی
اصلیترین ویژگی تابع هش مورد استفاده در تکنولوژی بلاک چین، قطعی بودن خروجی آن است. قطعی بودن خروجی به این معنی است که مهم نیست شما چند بار یک داده را در تابع هش جایگذاری کنید، خروجی آن همواره یک عبارت مشخص با اندازه ثابت است. بدون وجود این ویژگی نمیتوان از توابع برای نگهداری و صحت سنجی دادهها استفاده کرد. در فرآیند اجماع از این ویژگی برای صحت سنجی اعتبار بلاک تولید شده توسط کاربر برنده استفاده میشود.
محاسبات سریع
محاسبه سریع خروجی یک ورودی با استفاده از توابع هش بسیار مهم است. در تکنولوژی بلاک چین تعداد دادههایی که روزانه توسط کاربران در شبکه اضافه میشود بسیار بالا است و برای مدیریت آنها نیاز است که کار هشینگ آنها به سرعت انجام شود.
برگشت ناپذیر
برخلاف تولید هش که به محاسبه سریع نیاز دارد، فرآیند برعکس آن، یعنی رسیدن از هش به ورودی، یا باید به کل امکانپذیر نباشد یا رسیدن به آن به انرژی و زمانی نیاز داشته باشد که در عمل کسی به دنبال انجام این کار نباشد. این ویژگی سطح بالایی از ایمنی را برای بلاک چین فراهم میکند.
اگر هش یک ورودی به شما داده شده باشد، تنها راه محتمل برای به دست آوردن ورودی آن این است که شما هش مربوط به تمام ورودیهای ممکن را به دست آورید تا در نهایت بتوانید با مقایسه هشها به ورودی مورد نظر برسید. از آنجایی که فضای انتخاب ورودیها تصادفی است در عمل امکان انجام این کار وجود ندارد.
عدم تولید هش یکسان برای ورودیهای متفاوت
یک تابع هش مناسب باید برای هر ورودی خود، یک هش منحصر به فرد ایجاد کند. این ویژگی به ما کمک میکند که بتوانیم صحت اطلاعات ارائه شده توسط کاربران را بسنجیم. با توجه به این که فضای ورودیها گستردهتر از فضای خروجی توابع هش است، به صورت تئوریک، امکان پدید آمدن این شرایط وجود دارد اما دستیابی به دو داده با هش یکسان تنها از طریق امتحان کردن ورودیهای مختلف امکانپذیر است که این کار به صرف زمان و انرژی بسیاری زیادی نیاز دارد و در عمل قابل انجام نیست.
کاربرد هشینگ در بلاک چین چیست ؟
در بخش قبل فهمدیم که ویژگیهای هشینگ چیست. توابع هش به دو نوع معمولی و رمزنگاری تقسیم میشوند. توابع هش معمولی برای تجزیه و تحلیل فایلهای بزرگ و مدیریت دادهها استفاده میشوند. توابع هش رمزنگاری به طور گسترده در برنامههای کاربردی امنیت محور مانند احراز هویت پیام و امضای دیجیتال استفاده میشوند. کاربردهای اصلی هشینگ در مباحث مربوط به رمز ارزها مربوط به فرآیند الگوریتم اجماع اثبات کار و تولید آدرسها و کلیدهای جدید برای کاربران است.
قدرت واقعی هشینگ زمانی معلوم میشود که شما میتوانید با استفاده از آن، صحت حجم زیادی از اطلاعات موجود را تنها با بررسی هش اطلاعات فرستاده شده از طرف کاربر و هشی که قبل از ارسال فایل از آن ایجاد شده بود، تایید یا رد کنید. این کار با توجه به ویژگی قطعی بودن خروجی توابع هش ایجاد میشود و نیاز به نگهداری و یادآوری حجم زیادی از اطلاعات را از بین میبرد.
هشینگ علاوه بر کاربردهای عمومی ذکر شده، به طور خاص در فناوری بلاک چین و ایجاد یک سیستم غیرمتمرکز بسیار مفید است. بلاک چین بیت کوین به عنوان اولین بلاک چین طراحی شده، در موارد متعددی از هشینگ استفاده میکند که اصلیترین استفاده آن در الگوریتم اجماع بیت کوین و فرآیند ماینینگ است. بلاک چینها برای متراکم کردن تراکنشها و پیوند دادن آنها به بلاکها و همچنین پیوند دادن بلاکها به یکدیگر از هشینگ استفاده میکنند. پیوستگی بلاکها امکان دستکاری اطلاعات قدیمی و دابل اسپندینگ را از بین میبرد. برای پاسخ دادن به سوال مهمترین کاربردهای هشینگ در بلاک چین چیست میتوان به موارد زیر اشاره کرد.
- آدرس هر کاربر در بلاک چین از طریق فرآیند هشینگ ایجاد میشود. به عنوان مثال، در شبکه بیت کوین از توابع «SHA-256» و «RIPEMD 160» برای تبدیل کلید عمومی کاربر به آدرس استفاده میشود.
- با استفاده از فرآیند هشینگ میتوان امضای دیجیتال رمزنگاری شده کاربران را تشخیص داد. این فرآیند کمک میکند تا از صحت ارسال کننده تراکنش به شبکه مطمئن شویم.
- هش یک تراکنش کمک میکند که بررسی تراکنشها در شبکه به سادگی انجام شود. در این حالت به جای گشتن دنبال تراکنش 1000ام در بلاک 12565، هش بلاک را در جستجوگر بلاک تایپ میکنیم و تراکنش مورد نظر را به راحتی مشاهده میکنیم.
- مهمترین کاربرد هشینگ در فرآیند الگوریتم اجماع در بلاک چین است. معادله طراحی شده برای هر بلاک، با استفاده از توابع هش تعیین شده و ماینرها با هشینگهای متوالی به دنبال حل معادله و استخراج ارزهای دیجیتال هستند.
- استفاده از هش به ذخیرهسازی حجم زیاد اطلاعات در بلاک چین کمک میکند. این دادهها دارای مهر زمانی هستند و میتوانند به عنوان مرجع هشهای بعدی قرار گیرند. این مساله باعث کاهش حجم دادههای دائمی ذخیره شده در بلاک چین میشود.
- میزان توان دستگاههای ماینر موجود در شبکه بلاک چین، درجه سختی استخراج بلاکها را در شبکه تعیین میکند که برای زمانبندی ایجاد بلاک جدید استفاده میشود.
در بخش بعدی با بررسی معادله هر بلاک به سوال ارتباط الگوریتم اجماع و هشینگ چیست پاسخ میدهیم.
ارتباط الگوریتم اجماع و هشینگ چیست ؟
مهمترین کاربرد هشینگ در تکنولوژی بلاک چین مربوط به الگوریتم اجماع اثبات کار است که به منظور ایجاد راهکاری رقابتی برای انجام کار توسط ماینرها استفاده میشود. همانطور که در بخش ویژگیهای هشینگ چیست گفته شد، توابع هش به ازای هر ورودی یک خروجی منحصربهفرد ایجاد میکنند و با کمترین تغییر در ورودی، خروجی آنها تغییر میکند. از طرف دیگر، هیچ روش مستقیمی برای به دست آوردن ورودی متناظر با یک هش وجود ندارد. بنابراین، از تابع هش میتوان برای طراحی معادله بلاک استفاده کرد تا کاربران با مصرف انرژی و حل این معادله، بر روی اضافه کردن اطلاعات مشترک به اجماع برسند.
روش کار بدین صورت است که با توجه به میزان توان پردازشی فعال در شبکه، یک خروجی هدف برای تابع هش با ورودی اطلاعات بلاک در نظر گرفته میشود که این خروجی با تعدادی صفر در ابتدای هش مشخص میشود. هر چه تعداد صفرهای ابتدای هش هدف زیاد باشد، به دست آوردن آن با یک داده ورودی سختتر میشود. ورودی هر تابع هش برای یک بلاک، اطلاعات تراکنشها، هش بلاک قبلی و یک عدد تصادفی به نام نانس است. کاربران با قرار دادن این اطلاعات در تابع، هش اطلاعات را به دست میآورند و با تغییر عدد نانس، این فرآیند را تاجایی تکرار میکنند که به هش هدف با تعداد صفرهای تعیین شده برسند.
اولین کاربری که بتواند با جایگذاری نانس مناسب به هش مورد نظر بلاک برسد، اطلاعات مربوط به بلاک را برای دیگر ماینرها ارسال میکند تا آنها نیز صحت هش به دست آمده را تایید کنند. پس از تایید، بلاک به بلاک چین اضافه میشود و همه ماینرها اطلاعات دفتر کل را با بلاک جدید بهروز میکنند و کار ساخت بلاک جدید را با هش بلاک به دست آمده و تراکنشهای جدید آغاز میکنند. استفاده از هش بلاک قبل در ورودی بلاک جدید باعث میشود که بلاکها به یکدیگر متصل شوند و اطلاعات آنها قابل دستکاری نباشد.
جمعبندی
به فرآیند استفاده از توابع هش برای ایجاد خروجی با اندازه ثابت از یک ورودی با اندازه دلخواه، هشینگ گفته میشود که در مدیریت اطلاعات، امنیت داده و صحت سنجی اطلاعات کاربرد دارد. هشینگ در تکنولوژی بلاک چین در بسیاری از موارد برای صحت سنجی استفاده میشود اما اصلیترین کاربرد آن در الگوریتم اجماع اثبات کار برای طراحی روشی برای توافق و اجماع کاربران بر روی اطلاعات مشترک است. در این مقاله به طور کامل فرآیند هشینگ و ویژگیهای آن بررسی شد. در مقاله بعدی به طور کامل به بررسی انواع انواع الگوریتم اجماع و کاربرد هشینگ در آن میپردازیم.
نظر خود را با ما به اشتراک بگذارید
نظرات
بدون این که دادهای را برای کسی افشا کنید، اثباتی از آن را در اختیار او قرار دهید و بعدا با استفاده از آن اثبات کنید که داده مورد نظر شما چه بوده است.
خیلی ممنونم ازتون آفرین به سوادتون.
بلاکچین هایی که میشه توشون هش رو جسجو کرد
Btc.com
Tronscan.com
Blockchair.com
و….