هش و امضای دیجیتال در بلاکچین چیست؟
هش به این مفهموم اشاره دارد که مقدار نامشخصی از داده ورودی، توسط یک الگوریتم، به یک داده خروجی که هش نام دارد تبدیل میشود. این داده خروجی طول ثابت و مشخصی دارد. داده ورودی نیز میتواند یک کارکتر باشد یا حتی یک فایل صوتی یا تمام اینترنت! نکته این است که داده ورودی میتواند بسیار بزرگ باشد. الگوریتم هش میتواند بر اساس نیاز ما انتخاب شود. الگوریتم هش، یک مقدار نامحدود از بیتها را به عنوان ورودی میگیرد و بعد از انجام یکسری محاسبات روی آن، یک خروجی با طول مشخص را تولید میکند. برای مثال یک رشته ۲۵۶ بیتی.
اما استفاده این هش تولید شده چه میباشد؟ یک استفاده عمومی از هشها برای ایجاد اصالت در فایلها است. به این معنی که این هش تایید میکند که فایل تاکنون توسط شخصی غیر از مولف آن و به طور غیر عمد دستکاری نشده است. برای مثال اگر وب سایت ویکیلیکس، یکسری از اسناد با هش MD5 آن را منتشر کند، هر کس که آن فایلها را دانلود کند و هش آن را حساب کند، در صورت مغایرت هش حساب شده با هش منتشر شده توسط این سایت، متوجه خواهد شد که فایل دانلود شده به طریقی دچار دستکاری شده است.
اما بلاکچین چگونه از هشها استفاده میکند؟
هشها در بلاکچین برای نشان دادن حالت فعلی جهان بکار گرفته میشوند. یعنی ورودی کل حالت فعلی بلاکچین است: تمام تراکنشهایی که از ابتدا تاکنون صورت گرفته، به عنوان ورودی هش میشوند و در نتیجه هش، حالت فعلی بلاکچین را نشان خواهد داد. این هش برای توافق بین تمام بخشها در دنیا بر سر اینکه حالت فعلی، تنها حالت فعلی و واقعی است بکار میرود. اما در حقیقت چگونه این هشها محاسبه میشوند؟
هش اول برای بلاک اول یا بلاک ریشهای محاسبه میشود که حاوی تراکنشهای درون بلاک است. دنبالهی تراکنشهای اولیه برای محاسبه هشِ بلاکِ ریشه مورد استفاده قرار میگیرد. برای هر بلاکی که بعد از آن تولید میشود، هشِ بلاک قبلی نیز مانند تراکنشهای همان بلاک بعنوان ورودی مورد استفاده قرار میگیرد تا هش این بلاک مشخص شود. این نحوه شکل گیری زنجیرهای از بلاکها است.
هشِ هر بلاک جدید به هشِ بلاک قبل از آن اشاره میکند. این سیستم از هشها تضمین میکند که هیچ تراکنشی در گذشته قابل تغییر نباشد؛ چون اگر یک قسمت از تراکنش تغییر کند، هش همان بلاک نیز تغییر میکند و در نتیجه هشهای بلاکهای بعد از آن نیز تغییر خواهند کرد. در نهایت تشخیص تراکنشهای دستکاری شده، بسیار ساده خواهد بود. زیرا برای اینکار تنها نیاز دارید تا هشها را با یکدیگر مقایسه کنید. نتیجه این کار بسیار جالب است. چرا که همه افراد روی زنجیرهی بلاک، تنها نیاز دارند تا روی ۲۵۶ بیت برای تایید حالت زنجیره بلاک در بینهایت توافق کنند. بلاکچین اتریوم در حال حاضر چند ده گیگابایت حجم دارد، اما در عین حال، مقدار فعلی بلاکچین آن، یک هش شانزده دهی است که با ۲۵۶ بیت نشان داده میشود.
امضای دیجیتال
امضای دیجیتال مانند امضای واقعی، راهی برای اثبات این است که هر کسی همان کسی باشد که ادعا میکند، با این تفاوت که در اینجا از ریاضیات و رمزنگاری بجای دستخط استفاده میشود که بسیار امنتر است. یک امضای دیجیتال راهی برای اثبات این است که یک پیام دقیقا از یک شخص مشخص به دست ما رسیده است نه کسی دیگر مثل یک هکر.
امضاهای دیجیتال همه روزه در تمام اینترنت مورد استفاده قرار میگیرند. هرگاه شما به یک وبسایت از طریق ACTP مراجعه میکنید، شما در حال استفاده از SSL هستید که از امضای دیجیتال برای ایجاد اعتماد بین شما و سرور استفاده میکند. این به آن معنیست که هر وقت شما به وبسایت Facebook.com سر میزنید، مرورگر شما امضای دیجیتالی که از صفحهی وب به دستش رسیده را چک میکند تا تایید کند که در اصل از Facebook آمده است نه از رایانهی یک هکر.
در سیستمهای رمزنگاری غیرمتقارن، کاربران یک جفت کلید تولید میکنند: یک کلید عمومی و کلید خصوصی. کلید عمومی و خصوصی با استفاده از یکسری روابط ریاضیاتی به یکدیگر وابستگی دارند. کلید عمومی میتواند به صورت عمومی به عنوان آدرس دریافت پیام توسط دیگران معلوم باشد. کلید خصوصی اما باید بصورت خصوصی و مخفی باشد و برای امضای پیام مورد استفاده قرار گیرد. این امضا درون پیام فرستاده شده لحاظ میگردد، بنابراین گیرنده میتواند توسط کلید عمومی فرستنده آن را تایید کند. با این روش، گیرنده میتواند مطمئن شود که تنها فرستنده، میتوانسته این پیام را فرستاده باشد. تولید یک جفت کلید مشابه ایجاد یک حساب کاربری روی زنجیره بلاک یا بلاکچین است، اما بدون نیاز به ثبت آن در جایی. همچنین هر تراکنشی که روی زنجیره بلاک اجرا میشود، توسط کلید خصوصی امضا میشود. این امضا اطمینان خواهد داد که تنها صاحب حساب خواهد توانست پول را از حساب خود منتقل کند.
برای جمع بندی مطالب گفته شده باید گفت، بلاکچین بدون هش و امضای دیجیتال وجود نخواهد داشت. هش راهی را برای توافق همگان روی وضعیت فعلی زنجیره ایجاد میکند. در حالی که امضاهای دیجیتال، راهی است برای اطمینان از اینکه تمام تراکنشها فقط توسط شخص معتبر صورت گرفته. با تکیه بر این دو ویژگی میتوان مطمئن شد که بلاکچین آسیب نخواهد دید و در معرض خطر نخواهد بود.