هشینگ ایده ایست که به ازای دریافت ورودی دلخواه و اعمال برخی الگوریتمهای ریاضی به آن، یک خروجی با طول ثابت توليد میکند و اصطلاحا به آن هش (Hash) می گویند. این ورودی ها میتوانند تعدادی بیت، کاراکتر، یک فایلMP3، یک رمان کامل، برگه تاریخچه حساب بانکی و حتی کل داده های موجود در اینترنت باشد. نکته حائز اهمیت این است که ورودی میتواند بزرگ باشد ولی پس از اعمال محاسباتی بر روی آن، خروجی با تعداد بیت ثابت مثلاً 128 یا 256 یا 512 بیت توليد میکند. الگوریتم Hash میتواند برحسب نیاز انتخاب گردد و هم اکنون چندین نوع الگوریتم مختلف وجود دارد.
از توابع هش برای تأیید و اطمینان از دستکاری نشدن فایل ها و حفظ یکپارچگی آنها استفاده می گردد. بعنوان مثال اگر فایلی را دانلود نمودید، برای مطمئن شدن از درستی و اصل بودن فایل، میتوانید هش (Hash) آن را محاسبه نموده و با هش فایل که به همراه فایل ارسال شده، مقایسه نمایید و در صورت مطابقت، از درستی و اصل بودن فایل مطمئن شوید.
کاربرد هش در ساختار بلاک چین
ورودی تابع هش در بلاکچین، همه تراکنشهای صورت گرفته تا آن لحظه (زمان خرید ارز دیجیتال) میباشد و خروجی، حالت فعلی بلاکچین است. به عبارت دیگر هش برای توافق بین همه بخش های شبکه به کار می رود و نشان می دهد که حالت کلی بلاکچین تغییر نکرده است.
نحوه محاسبه هش در بلاک چین
اولین هش برای بلوک اول (Genesis) محاسبه میشود و برای تراکنش در آن بلوک بکار میرود. رشته تراکنش اولیه برای محاسبه هش بلوک، جهت تولید بلوک Genesis (اولیه) بکار میرود. برای بلوک های جدیدی که بعداً تولید میشود، هش بلوک قبلی و تراکنش خودش بعنوان ورودی هش استفاده میگردد. بدین ترتیب زنجیرهای از بلوکها شکل میگیرد.
هشِ هر بلاک جدید به هشِ بلاک قبل از آن اشاره میکند. این سیستم از هشها تضمین میکند که هیچ تراکنشی در گذشته قابل تغییر نباشد؛ چون اگر یک قسمت از تراکنش تغییر کند، هش همان بلاک نیز تغییر میکند و در نتیجه هشهای بلاکهای بعد از آن نیز تغییر خواهند کرد. در نهایت تشخیص تراکنشهای دستکاری شده، بسیار ساده خواهد بود. البته هش بلاک برای هدر (سرایند بلاک) انجام می گیرد و تراکنش ها دو به دو هش می شوند و مجددا نتیجه های بدست آمده هش شده تا به یک ریشه صحیح دست یابند. به این مفهوم درختِ مرکلِ نیز گفته می شود.
ریشه درختِ مرکلِ تراکنش های یک بلاک در سرایند بلاک است. بنابرین هر هش بلوک جدید، اشاره به هش بلوک قبل آن میکند. این سیستم هشینگ تضمین کننده این است که در هیچ تراکنشی امکان دستکاری نیست زیرا درصورت تغییر بخشی از تراکنش، هش بلوکی که درآن قرار دارد و همینطور تمامی هش های زیربلوک ها تغییر میکنند. از همین رو تشخیص دستکاری شدن داده ها در بلاکچین آسان است، چراکه هرکسی فقط نیاز به تأیید 256 بیت دارد. به عنوان مثال، در حال حاضر بلاکچین اتریوم دهها گیگابایت حجم دارد اما Hash آن 256 بیت می باشد.
امضای دیجیتال در بلاک چین
امضای دیجیتال امروزه در کل بستر اینترنت مورد استفاده قرار میگیرد. مثل زمانیکه از SSL برای دیدن یک وبسایت استفاده میکنید. اینکار نوعی اعتماد بین شما و وب سرور مربوطه ایجاد مینماید که بدین معنی که پاسخ دریافتی، مطمئناً از سوی وب سرور ارسال شده و هکرها آنرا ارسال نکردهاند.
در امضای دیجیتالی از روش های رمزنگاری نامتقارن استفاده می گردد، بدین صورت که هر کاربر دارای دو کلید خصوصی و عمومی برای رمزنگاری میباشد. این کلیدها با یک رابطه ریاضی بهم مربوط میشوند. کلید عمومی برای دریافت پیام از طرف دیگران، به اشتراک گذاشته میشود. کلید خصوصی نیز بصورت مخفی نزد هر کاربر نگهداری خواهد شد. در امضای دیجیتال، هش دادهها توسط کلید خصوصی رمزنگاری می شود و در سمت گیرنده با کیلد عمومی فرستنده رمزگشایی میگردد و در نهایت با هش دادهها مقایسه میشود تا هویت فرستنده و صحت یکپارچگی اطلاعات تأیید شود.
تولید زوج کلید خصوصی و عمومی مشابه ایجاد یک حساب کاربری روی Blockchain میباشد، بدون اینکه مجبور به ثبت نام در جایی باشد. هر تراکنشی که بر روی بلاکچین اجرا میشود، توسط کلید خصوصی فرستنده امضا میگردد. بنابر این تراکنشهای امضا شده به دارنده حساب این اطمینان را میدهد که فقط او قادر به جابجایی پول به خارج از حساب میباشد.
مطالب مرتبط:
منبع: مرکز تحقیقات بلاک چین