هش ريت (HashRate) يا نرخ هش خروجي تابع هش ميباشد و در بيت كوين، هش ريت سرعت اتمام عمليات محاسباتي در كد بيت كوين است. هنگام ماينينگ هرچه هش ريت بيشتر باشد بهتر است، زيرا فرصت يافتن بلاك بعدي و دريافت جايزه افزايش مييابد.
اگر ميخواهيد وارد عرصه ماينينگ شويد، دانستن مفهوم هش ريت و اهميت آن بسيار ضروري است. هم چنين بايد از اثرات آن بر ظرفيت استخراج كوين ها آگاه باشيد. برخورداري از دانش كافي در خصوص هش ريت ميتواند به شما كمك كند كه بهترين تصميم ممكن در حوزه ماينينگ را اتخاذ كنيد. در اين مقاله به اين موضوعات ميپردازيم كه هش ريت چيست، از چه اهميتي برخوردار است و هزينه هاي برق مصرقي بر سودآوري چه تاثيري دارد.
تعريف هش ريت
به زبان ساده هش ريت سرعت عملكرد دستگاه ماينر ميباشد. استخراج ارز ديجيتال (ماينينگ كريپتو) شامل يافتن بلاك ها از طريق محاسبات پيچيده ميباشد. بلاك ها مشابه پازل هاي رياضياتي اند. دستگاه هاي ماينينگ بايد هزاران يا حتي ميليون ها حدس در ثانيه بزنند تا جواب صحيح براي حل بلاك بيابند.
به عبارت ديگر براي استخراج موثر يك بلاك، ماينر بايد طوري هِدِر بلاك را هش كند كه كمتر يا برابر با هدف (تارگت) شود. با تغيير سختي، هدف نيز تغيير ميكند. براي رسيدن به هش (يا هدف) مورد نظر، ماينر بايد بعضي از هدرهاي بلاك كه نانس (nonce) نام دارند را تغيير دهد. هر نانس با “0” شروع شده و براي رسيدن به هش (يا هدف) ضروري افزايش مييابد.
از آن جا كه تغيير نانس كاملا تصادفي ميباشد، احتمال رسيدن به هش (يا هدف) مورد نظر بسيار كم است. بنابراين ماينر با تغيير نانس بايد تلاش زيادي كند. تعداد دفعاتي كه ماينر در ثانيه براي رسيدن به هش تلاش ميكند را هش ريت يا قدرت هش ميگويند.
اندازه گيري هش ريت و واحدهاي آن
واحد اندازه گيري هش ريت، هش در ثانيه h/s ميباشد. بعضي از اصطلاحات رايج مورد استفاده شامل مگا، گيگا و ترا است كه براساس تعداد هش ها گفته ميشوند. براي مثال دستگاهي با سرعت 60 هش در ثانيه ، هنگام تلاش براي حل كردن بلاك، 60 حدس در ثانيه ميزند. براي 1000 هش از كيلوهش KH/s ، براي 1000 كيلوهش از مگاهش MH/s ، براي 1000 مگاهش از تراهش TH/s و براي 1000 تراهش از پتاهش PH/s استفاده ميشود.
دستگاه هاي مختلفي كه براي استخراج ارزهاي ديجيتال متفاوت به كار گرفته ميشوند داراي هش هاي برابر نيستند. براي مثال، يك دستگاه ماينينگ بيت كوين هش ريت متفاوتي با دستگاه ماينينگ اتريوم دارد. اين موضوع را با الگوريتم هاي متفاوتي كه ارزهاي ديجيتال به كار ميگيرند ميتوان توضيح داد، زيرا براي استخراج آن ها از ميزان حافظه و محاسبات يكسان استفاده نميشود.
رابطه بين هش ريت، سودآوري ماينر و سختي استخراج
هش ريت، سودآوري ماينر و سختي استخراج از چند طريق به هم وابسته اند. براي مثال بيت كوين را در نظر ميگيريم. هربار كه سختي شبكه بيت كوين افزايش مييابد، هش ريت نيز زياد ميشود و به دنبال آن، ماينر 12.5 بيت كوين BTC و كارمزد تراكنش را به دست ميآورد. تعداد ماينرها در شبكه بيت كوين، سختي را افزايش ميدهد زيرا ماينر بايد حدس هاي بيشتري در ثانيه محاسبه كند.
تاثير برق مصرفي بر سودآوري
براي سودآوري، بيت كوين را در نظر ميگيريم. در حال حاضر يك دستگاه ماينينگ بيت كوين نظير ASIC تقريبا قدرت ماينينگ 12 تراهش در ثانيه دارد. با در نظر گرفتن سختي حال حاضر شبكه، اين دستگاه ميتواند 0.318 بيت كوين BTC در سال توليد كند.
هرچند هنگام محاسبه سودآوري، بايد هزينه برق مصرفي تجهيزات ماينينگ را در نظر بگيريد. به اين مورد، بازده (راندمان) ماينر ميگويند. افزايش سختي ماينينگ ارز ديجيتال، هزينه هاي برق مصرفي را نيز بيشتر ميكند. براي مثال، يك دستگاه ماينينگ با 10 درصد هش ريت بيشتر نسبت به دستگاهي ديگر، 50 درصد بيشتر برق مصرف ميكند. بنابراين، هرچند هش ريت عاملي مهم در ماينينگ ميباشد، اما همواره راندمان را نيز در نظر بگيريد.
هش كردن يا هشينگ به فرآيندي گفته ميشود كه در آن يك عملگر رياضي به نام «تابع هش» (Hash Function)، دادههاي ورودي مانند حروف و اعداد و تصوير و … را به خروجي رمزگذاري شده تبديل ميكند. به تابع هش، «تابع درهمساز» نيز گفته ميشود.
به عنوان مثال يك تابع هش ميتواند كلمه «سلام» را دريافت كند و به عنوان خروجي اين عبارت را تحويل بدهد:
«bda1fa48345336618741fd2c4bc02809eb099c49a9b02fb5056401ab6d4dc3e6»
به خروجيِ تابع هش، «هش» (Hash) ميگويند و به اين عمل يعني استفاده از تابع هش براي ايجاد هش، هش كردن يا «هشينگ» (Hashing) گفته ميشود.
تابع هش ورودي را ميگيرد و تبديل به يك رشته متني با طول ثابت ميكند.
حالا بياييد ببينيم فرآيند هش كردن يا به اصطلاح هشينگ چگونه انجام ميشود.
هر كسي كه در رمزنگاري و رياضيات تخصص داشته باشد، ميتواند با استفاده از اين علوم براي خود تابع هش بسازد. در حال حاضر انواع زيادي تابع هش وجود دارد و آن را به روشهاي گوناگوني ميتوان ساخت اما در اينجا قصد داريم به عنوان نمونه نحوه كار الگوريتم شناخته شده SHA-256 را توضيح بدهيم كه پركاربردترين تابع هش دنياست.
توابع هش معتبر، هر مقدار ورودي را تبديل به يك رشته متني با طول ثابت ميكنند.
هش كردن عبارات با استفاده از تابع هش SHA-256
همانطور كه در عكس بالا هم مشاهده ميكنيد، براي تابع هشِ استاندارد اهميتي ندارد كه ورودي شما چقدر بزرگ يا كوچك است. خروجي هميشه داراي طول ثابت خواهد بود. اين مساله زماني اهميت پيدا ميكند كه با تعداد زيادي داده و اطلاعات سر و كار داشته باشيد. بنابراين، اساسا به جاي رهگيري و ذخيره دادههاي ورودي كه ميتوانند بسيار زياد و بزرگ باشند، ميتوانيد تنها هش را ذخيره كنيد و آن را رديابي كنيد.
همچنين استفاده از يك خروجي با طول ثابت سبب افزايش امنيت ميشود، چون كسي كه سعي در رمزگشايي هش داشته باشد، نميتواند با ديدن خروجي تشخيص دهد كه ورودي ما به چه صورت بوده است.
پيش از اينكه بيشتر در رابطه با هشينگ صحبت كنيم، ابتدا بايد ويژگيهاي مختلف توابع هش و چگونگي و نحوه اجراي آنها را توضيح دهيم.
تابع هش رمزنگاري
يك تابع هش رمزنگاري نوع خاصي از توابع هش بوده كه داراي ويژگيهاي منحصر به فردي است. ويژگيهاي اين نوع هش سبب ميشود براي هويتسنجي و برقراري امنيت بسيار مناسب باشد. از اين نوع تابع هش براي ساخت امضاهاي ديجيتال و صحتسنجي استفاده ميشود و ميتوان با آن به اصطلاح «اثر انگشت ديجيتال» ساخت. يك تابع هش رمزنگاريِ امن بايد ويژگيهاي زير را داشته باشد:
1- قطعي و معين بودن
تابع هش به ازاي يك ورودي مشخص، خروجي ثابت و مشخصي را به شما تحويل ميدهد. فرقي نميكند كه شما چند مرتبه و يا در چه زماني آن ورودي را به تابع هش دادهايد؛ تحت هر شرايطي خروجي ثابت است. اين ويژگي از اهيمت بالايي برخوردار است، زيرا اگر هر بار هشهاي مختلفي را تحويل دهد، آنگاه رديابي و پيگيري اطلاعات غيرممكن خواهد بود.
مثلا اگر كلمه «سلام» را هزاران بار در تابع هش وارد كنيم باز هم هش اين كلمه ثابت است.
2- محاسبه سريع
تابع هش بايد بتواند هش ورودي را به سرعت محاسبه كند. اگر اين فرآيند به اندازه كافي سريع نباشد، سيستم ناكارآمد خواهد شد.
3- تابع يك طرفه
تابع هش رمزنگاري يك طرفه است
توابع هش رمزنگاري، توابعي يك طرفه هستند. تابع يكطرفه به تابعي گفته ميشود كه براي هر ورودي، خروجي به راحتي قابل محاسبه است، اما بهدست آوردن پيشتصويرِ خروجيِ متناظر با يك وروديِ تصادفي، غيرعملي است.
به عبارت ديگر، در يك تابع هش استاندارد، ساخت خروجي از ورودي به راحتي قابل انجام است اما پيدا كردن ورودي از خروجي بسيار دشوار است. دقت داشته باشيد از واژه دشوار و غيرعملي به جاي واژه «غيرممكن» استفاده شده است. به مثال زير توجه كنيد.
تصور كنيد كه ما اعدادي بين 1 تا 6 داريم و به صورت تصادفي و مخفيانه، يكي از اين اعداد را هش ميكنيم. خب حالا چگونه ميتوانيد تعيين كنيد كه عدد اصلي چه بود؟ از آنجايي كه توابع هش هميشه معين است، هش وروديهاي خاص هميشه يكسان خواهد بود. بنابراين تمام كاري كه بايد انجام دهيد اين است كه هش اعداد 1 تا 6 را با هشي كه ساخته شده است، مقايسه كنيد و به اين ترتيب عدد اصلي را بيابيد.
اما اين سازوكار زماني امكانپذير است كه تعداد دادههاي شما كم باشد. اگر با حجم عظيمي از اعداد سروكار داشته باشيد، آنگاه چه خواهيد كرد؟
فرض كنيد شما با يك هش 128 بيتي سر و كار داريد. تنها راه پيدا كردن داده ورودي اصلي استفاده از روش «جستجوي جامع» است. جستجوي جامع كه به آن جستجوي خام و بيخردانه (brute-force method) نيز گفته ميشود، اساسا به اين معني است كه شما بايد همينطور دادهها را امتحان كرده و آن را با خروجي مقايسه كنيد و اين مراحل را تا جايي كه هش ورودي و هش هدف با يكديگر تطابق پيدا كنند، ادامه دهيد.
خب اگر از اين روش استفاده كنيد چه اتفاقي ميافتد؟
- بهترين حالت ممكن: شما در اولين تلاش خود، جواب را پيدا كنيد. براي اينكه اين اتفاق بيافتد به معناي واقعي كلمه بايد خوششانسترين فرد در تمام هستي باشيد. احتمال رخ دادن چنين اتفاقي تقريبا به صفر ميل ميكند.
- بدترين حالت ممكن: شما پاسخ را در سعي و خطاي دفعه (1-128)^2ام بيابيد. در واقع يعني در آخرين شانس خود جواب را پيدا كنيد.
- حالت ميانگين: جواب را جايي در آن وسطها پيدا كنيد. بنابراين پس از 127^2 = 2/(128)^2 بار. براي اينكه درك واضحي از اين عدد داشته باشيد، بايد بدانيد كه 127^2برابر است با 38^10× 1.7 و پيدا كردن عدد از بين اين همه احتمال با كامپيوترهاي امروزي احتمالا هزاران سال زمان خواهد برد.
بنابراين همانطور كه پيشتر نيز عنوان شد، يافتن پيشتصويرِ خروجيِ متناظر با يك وروديِ تصادفي با استفاده از حدس دادهها امكانپذير است اما بسيار بسيار زمانبر خواهد بود به طوري كه هيچ توجيهي براي اين كار وجود ندارد.
4- هر تغيير در ورودي، هش را به طور كامل تغيير ميدهد
حتي اگر تغييري بسيار كوچك در داده ورودي ايجاد كنيد، بازتاب اين تغيير كوچك در هش بسيار قابل توجه خواهد بود.
همانطور كه در تصوير بالا مشاهده ميكنيد، حتي اگر يك كاراكتر را تغيير دهيد هش به طور كلي تغيير ميكند. اين عملكرد بسيار حائز اهميت است، چراكه در صحت كلمات عبور و بسياري از دادههاي حياتي از آن استفاده ميشود.
زماني كه شما در سايتي مثل فيسبوك كلمه عبور خود را وارد ميكنيد، سيستم به طور خودكار هشِ كلمه عبور شما را با هش موجود در پايگاه داده تطبيق ميدهد. بنابراين اگر كلمه عبور ورودي شما كوچكترين تغييري نسبت به كلمه عبور اصلي كند، هش آن نيز تغيير ميكند و با هش ثبت شده منطبق نخواهد بود.
همچنين در بحث ارزهاي ديجيتال، اين ويژگي باعث برقراري يكي از مهمترين اصلهاي بلاك چين يعني «تغييرناپذيري» ميشود كه در ادامه بيشتر در مورد آن ميخوانيد.
5- مقاوم در برابر تصادم
با توجه به اينكه A و B دو ورودي متفاوت تابع هش هستند و (H(A و (H(B نيز به ترتيب هشهاي متناظر با آنها، احتمال اينكه اين دو خروجي با يكديگر يكسان باشند عملا غيرممكن است. اين بدان معناست كه هر ورودي، هش منحصر به فرد خود را دارد.
نمونههايي از توابع هش
الگوريتمهاي هش زيادي براي رمزنگاري داده وجود دارند. در ادامه به چند مورد از شناختهشدهترين و پركاربردترين آنها اشاره خواهد شد.
MD5
الگوريتم هش MD كه مخفف عبارت «Message Digest» به معني «خلاصه پيام» است، در سال 1991 توسط رونالد ريوِست و به عنوان جايگزيني براي تابع هش پيشين اين خانواده يعني MD4 طراحي شد. الگوريتم MD5، تابع هشي است كه به صورت گسترده مورد استفاده قرار ميگيرد و هش 128 بيتي توليد ميكند.
اگر چه MD5 با هدف اينكه به عنوان تابع رمزنگاري مورد استفاده قرار گيرد طراحي و ايجاد شد، اما از مشكلات زيادي برخوردار است. همين باعث شد كه كمتر به عنوان تابع هش از آن استفاده شود. امروزه از اين الگوريتم به عنوان چكسام براي بررسي درستي و يكپارچگي دادهها در برابر دستكاري ناخواسته استفاده ميشود.
SHA
الگوريتم هش ايمن (Secure Hash Algorithm) كه به اختصار آن را SHA مينامند، مجموعهاي از الگوريتمهاست كه توسط موسسه ملي استاندارد و فناوري (NIST) ايالات متحده و ديگر ارگانهاي امنيتي ايجاد شد و توسعه يافت. SHA-0 اولين الگوريتم از خانواده SHA است كه در سال 1993 توسعه پيدا كرد. اما مدتي پس از انتشار به دليل نقص قابل توجهي كه در آن كشف شد، جاي خود را به نسخهي جديدتر و اصلاحشدهي SHA-1 داد.
SHA-1 يك تابع هش 160 بيتي است كه به الگوريتم MD5 شباهت دارد. از طرفي ديگر الگوريتم SHA-1 شباهت بسيار زيادي به SHA-0 نيز دارد ولي در اصل ايرادهايي اساسي كه در نسخه 0 وجود داشته و سبب ضعف اين الگوريتم شده بود را برطرف نمود. اين الگوريتم توسط آژانس امنيت ملي ايالات متحده (NSA) و با هدف اينكه بخشي از الگوريتم امضاي ديجيتال باشد طراحي شد. در سال 2005 رخنههاي امنيتي در اين الگوريتم تشخيص داده شد، كه نشان از نفوذپذيري احتمالي آن داشت. از آن زمان بود كه نياز به يك الگوريتم بهتر در اين حوزه احساس شد.
الگوريتم هش ايمن بعدي، SHA-2، متشكل از 6 تابع هش با مقادير هش متفاوت 224، 256، 384 و 512 بيتي است كه نامهاي آنها نيز با توجه به مقادير هش انتخاب شده است؛ SHA-224، SHA-256، SHA-384، SHA-512، SHA-512/224 و SHA-512/256. اين الگوريتمها در طول با يكديگر متفاوتند.
الگوريتم شناختهشدهي SHA-256 در بلاك چينِ بيت كوين هم استفاده ميشود. علاوه بر اين، از اين الگوريتم در TLS ،SSL ، PGP، SSH، توسعه چندمنظوره پست الكترونيك اينترنت/امن و IPsec يا همان ايمنسازي پروتكل اينترنت استفاده ميشود.
آخرين عضو از خانواده الگوريتم هش ايمن، SHA-3 است كه در سال 2015 توسط NIST منتشر شد. اين الگوريتم در سال 2012 در جريان رقابت و مسابقهاي عمومي در رابطه با طراحي الگوريتمي جديد به عنوان برترين الگوريتم برگزيده شد. SHA-3 در واقع زيرمجموعهاي از خانواده گستردهتري به نام Keccak است.
RIPEMD
RIPEMD كه مخفف عبارت «RACE Integrity Primitives Evaluation Message Digest» است، همانند الگوريتم SHA مجموعهاي از توابع هش است كه در بلژيك و توسط گروه تحقيقاتي غير مجاز مي باشدIC در سال 1996 توسعه يافت. آنها اين مجموعه الگوريتم را در واكنش به ضعف امنيتي كه در RIPEMD مشاهده شد، طراحي كردند. در طراحي اين الگوريتم از اصول به كار رفته در MD4 استفاده شده است و عملكردي مشابه با SHA-1 دارد.
طول هش توابع اين خانواده متفاوت است و داراي مقادير 128، 160، 256 و 320 بيتي است. تاكنون حمله موفقي به RIPEMD-160 گزارش نشده است. نسخه 256 و 320 بيتي اين توابع نيز سطح امنيتي بالاتري ندارند، بلكه تنها امكان بروز تصادم را از بين ميبرند.
Whirlpool
ويرپول، يكي ديگر از توابع هش در دنياي رمزنگاري است. اين الگوريتم براي اولين بار در سال 2000 و توسط وينسنت ريمن و پائولو بارتو طراحي شده است. ويرپول بر مبناي نسخه اصلاح شدهي استاندارد رمزنگاري پيشرفته (AES) ساخته شده است.
اين تابع هش، هر پيامي با طول كمتر از 2256 بايت را دريافت و هشي با اندازه 512 بيت (64 بايت) توليد ميكند. هش 512 بيتي الگوريتم ويرپول به صورت اعداد 128 رقمي نمايش داده ميشود.
الگوريتم ويرپول از سال 2000 تاكنون، 2 بار بازبيني شده است. در اولين بازبيني در سال 2001، S-box را تغيير دادند تا پيادهسازي اين الگوريتم بر روي سختافزار آسانتر شود. در دومين بازبيني (2003)، نقصي در ماتريس انتشار كه سبب ميشد تا امنيت روش پايينتر از آنچه از آن انتظار ميرفت باشد، پيدا و برطرف شد. الگوريتم اوليه و اصلي را Whirlpool-0، بازبيني اول Whirlpool-T و نسخه نهايي را Whirlpool نام دارند.
Blake
بليك يكي از الگوريتمهايي است كه در رقابت توابع هشي كه از جانب موسسه ملي استاندارد و فناوري ايالات متحده (NIST) با هدف انتخاب بهترين تابع هش براي توسعه SHA-3 برگزار شده بود، در بين 5 الگوريتم برگزيده قرار داشت. اين رقابت از سال 2007 آغاز شد و در نهايت در سال 2012 با اعلام Keccak به عنوان برنده به طور رسمي به كار خود پايان داد.
همانند SHA-2، بليك نيز داراي 2 نوع الگوريتم متفاوت است. يكي از كلمات 32 بيتي استفاده ميكند و طول هش محاسبهشدهي آن حداكثر 256 بيت است و ديگري از كلمات 64 بيتي استفاده ميكند با طول هش 512 بيت.
اما شناختهشدهترين عضو خانواده بليك، Blake2 است كه در سال 2012 منتشر شد. هدف از طراحي اين الگوريتم معرفي جايگزيني براي الگوريتمهاي پركاربرد اما آسيبپذير MD5 و SHA-1 در برنامههايي كه نيازمند كارايي بالايي بودند بود.
Blake2 خود به دو زيرگروه Blake2b و Blake2s تقسيم ميشود. گفته ميشود Blake2 از MD5، SHA-1، SHA-2 و SHA-3 سريعتر است و از لحاظ امنيت نيز با SHA-3، يعني آخرين نسخه الگوريتم هش ايمن برابري ميكند.
هشينگ در ارزهاي ديجيتال
ارزهاي ديجيتال براي حفظ بقا و امنيت خود تا حد زيادي به هش كردن وابسته هستند. چرا كه اكثر عمليات انجام شده در بلاك چين آنها بر مبناي هش كردن اطلاعات به منظور حفظ امنيت آنها صورت ميگيرد. در ادامه به نقش هش كردن در ارزهاي ديجيتال در صه بخش مهم ميپردازيم.
هويت سنجي و امضاي ديجيتال
امضاي ديچيتال يك مكانيزم رمزنگاري است كه براي تاييد صحت و اعتبارسنجي دادههاي ديجيتال مورد استفاده قرار ميگيرد.
به بياني ديگر، امضاي ديجيتال را ميتوان به عنوان كدي كه به پيام و يا سندي متصل است در نظر گرفت؛ كدي كه اثبات ميكند پيام در طول مسير خود از فرستنده تا گيرنده دستكاري نشده است. اگر چه مفهوم تضمين امنيت ارتباطات با استفاده از علم رمزنگاري به دوران باستان باز ميگردد، اما امضاي ديجيتال به لطف توسعه رمزنگاري كليد عمومي در سال 1970 به واقعيت بدل شد.
الگوريتمهاي رمزنگاري كليد عمومي براي امضا كردن اسناد طولاني مناسب نيستند. براي صرفهجويي در زمان، اغلب پروتكلهاي امضاي ديجيتال به جاي اينكه كل پيام را رمزنگاري كنند، از تابع هش استفاده ميكنند.
هشينگ، يكي از اصليترين عناصر سيستم امضاي ديجيتال است. در مبحث ارزهاي ديجيتال، يك سيستم امضاي ديجيتال از سه مرحلهي هش كردن، امضا كردن و صحتسنجي تشكيل شده است.
هش كردن دادهها
اولين قدم در امضاي ديجيتال، هش كردن يا هشينگ دادههاست. اين فرآيند با دادن اطلاعات به يك الگوريتم هش و دريافت مقدار هششده آغاز ميشود. همانطور كه پيشتر نيز اشاره شد، ممكن است پيامهاي ورودي از لحاظ اندازه با يكديگر متفاوت باشند، اما در نهايت تمام مقادير هش شده توسط يك الگوريتم خاص، طول يكسان و ثابتي دارند.
هش كردن دادههاي براي ايجاد امضاي ديجيتال ضروري نيست، چرا كه ميتوان از كليد خصوصي براي امضاي اطلاعات استفاده كرد. اما در زمينه ارزهاي ديجيتال، دادهها هميشه هش ميشوند، زيرا سروكار داشتن با دادههايي با طول ثابت و مشخص در تسهيل فرآيند عملكرد بلاك چين بسيار موثر است.
امضا كردن
پس از هش كردن اطلاعات، فرستنده پيام بايد آن را امضا كند. اين نقطه، جايي است كه رمزنگاري كليد عمومي وارد بازي ميشود. انواع مختلفي از الگوريتمهاي امضاي ديجيتال وجود دارد كه هر يك مكانيزم خاص خود را دارد. اما در اصل، پيام هششده، با كليد خصوصي امضا خواهد شد و دريافتكننده پيام ميتواند اعتبار آن را با استفاده از كليد عمومي كه توسط فرستنده ارائه شده است، بسنجد.
به بياني ديگر، اگر در هنگام ايجاد امضا از كليد خصوصي استفاده نشود، دريافتكننده قادر نخواهد بود كه از كليد عمومي مربوطه براي تاييد صحت آن اطلاعات استفاده كند. هر دوي كليدهاي عمومي و خصوصي توسط فرستنده پيام ايجاد ميشوند، اما تنها كليد عمومي با شخص دريافتكننده و يا حتي ديگران به اشتراك گذاشته ميشود.
شايان ذكر است كه امضاهاي ديجيتال به طور مستقيم با محتواي هر پيام مرتبط هستند. بنابراين برخلاف امضاهاي دستي، كه صرف نظر از نوع پيام و محتوا بايد يكسان باشند، هر پيامي كه به صورت ديجيتالي امضا شده است، امضاي ديجيتالي متفاوتي دارد.
صحتسنجي
بياييد با مثالي كل فرآيند صحتسنجي را از ابتدا تا انتها بررسي كنيم. تصور كنيد كه مريم پيامي براي محمد نوشته، آن را هش كرده و سپس مقدار هش را با كليد اختصاصي خود تركيب كرد تا يك امضاي ديجيتال توليد كند. اين امضا همانند اثر انگشت ديجيتالي منحصر به فردي از آن پيام عمل خواهد كرد.
زماني كه محمد پيام را دريافت كند، ميتواند اعتبار امضاي ديجيتال را با استفاده از كليد عمومي مريم بررسي كند. بدين طريق محمد ميتواند اطمينان حاصل كند كه اين امضا توسط مريم ايجاد شده است، چرا كه كليد خصوصياي كه با اين كليد عمومي منطبق باشد تنها در اختيار مريم قرار دارد.
بنابراين،مخفي و امن نگه داشتن كليد خصوصي براي هر كسي ضروري است. اگر شخصي ديگري به كليد خصوصي مريم دسترسي داشته باشد، ميتواند به راحتي وانمود كند كه مريم است و امضاهاي ديجيتالي توليد كند كه منجر به كلاهبرداري و دسترسي به اطلاعات خصوصي او شود. در رابطه با ارزهاي ديجيتال، اين بدان معناست كه هر كسي كه به كليد خصوصي مريم دسترسي داشته باشد، ميتواند بدون اجازهي او از حسابش كوين برداشت كند.
تغييرناپذيري بلاك چين
در بلاك چين از هش براي نشان دادن وضعيت فعلي شبكه استفاده ميشود، به اين ترتيب كه داده ورودي هر چه را كه در بلاك چين اتفاق افتاده است نشان ميدهد. در واقع هر تراكنشي كه تا آن لحظه صورت گرفته است با دادههاي جديدي كه اضافه ميشود، تركيب ميشود. اين بدان معناست كه هش خروجي مبتني بر تمامي تراكنشهاي پيشيني است كه بر روي بلاك چين اتفاق افتاد.
اولين هش براي اولين بلاك يا همان بلاك جنسيس، با توجه به تراكنشهايي كه درون آن بلاك ثبت شده است محاسبه ميشود. براي هر بلاك جديدي كه از اين پس ايجاد ميشود، علاوه بر تراكنشهاي بلاك مورد نظر، هش بلاك پيشين نيز به عنوان ورودي به تابع هش داده ميشود و مقدار هش آن بلاك محاسبه ميشود. بدين ترتيب زنجيرهاي از بلاكها ايجاد ميشود.
هش بلاك جديد با اشاره به هش بلاك پيش از آن ايجاد ميشود. اين سيستم هشينگ، درواقع تضميني است كه به ما اثبات ميكند هيچگونه دستكاري در تراكنشها ممكن نيست. چرا كه اگر تنها بخش كوچكي از اطلاعات تراكنش تغيير كند، در نتيجه هش بلاكي كه تراكنش درون آن ثبت شده است نيز تغيير خواهد كرد و به همين ترتيب هش بلاكهاي بعد از آن نيز تغيير ميكند.
براي تغيير يك بلاك در بلاك چين بايد هش تمام بلاك هاي قبلي را هم تغيير داد چون هر بلاك علاوه بر هش خود، داراي هش بلاك قبلي هم هست.
در نتيجه از هرگونه تقلب و دستكاري جلوگيري ميشود، چراكه تنها كافي است هشها با يكديگر مقايسه شوند. اين ويژگي جالب و هيجانانگيز بلاك چين است، چون تمام افراد حاضر در شبكه بايد تنها بر روي يك هش به توافق برسند و تاييد كنند كه تراكنشهاي بلاك جديد درست هستند و در نهايت رضايت دهند كه آن بلاك ايجاد شود. در صورت مشاهده عدم انطباق هشها، به راحتي به تقلب انجام شده پي ميبرند و آن را رد ميكنند. بدين ترتيب و به همين سادگي هشينگ، بلاك چين را تغييرناپذير ميكند، خصوصيتي كه به نوعي بارزترين مشخصه اين فناوري محسوب ميشود.
ماينينگ
استخراج فرآيند يافتن و ايجاد يك بلاك جديد و افزودن آن به بلاك چين است. همانطور كه ميدانيد عرضه بسياري از ارزهاي ديجيتال محدود به تعداد مشخصي است كه اين عدد براي بيت كوين 21 ميليون واحد است. اگر ماينرها بتوانند بسيار سريع و با كمترين توان محاسباتي بلاكهاي جديد را ماين كنند، در عرض مدت زمان كوتاهي همه كوينها استخراج ميشدند. علاوه بر اين، در بلاك چين محدوديت زماني براي ايجاد هر بلاك در نظر گرفته شده است. اگر بلاكها در مدت زماني كمتر از زمان درنظر گرفتهشده استخراج شوند، مشكلات زير به وجود ميآيد:
- تصادم بيشتر: توابع هش بيشتري توليد خواهند شد و در نتيجه منجر به تصادم بيشتر ميشود.
- بلاكهاي يتيم بيشتر: اگر تعداد زيادي از ماينرها قادر به استخراج بلاك جديد شوند، در اين صورت ممكن است همزمان با هم بلاك جديد به جواب برسند. اما همانطور كه ميدانيد تنها يكي از اين بلاكها جزو زنجيره خواهد شد و بقيه آنها رها خواهند شد كه به آنها بلاك يتيم ميگويند.
بنابراين، به منظور محدود كردن توليد بلاك، يك سطح دشواري مشخصي براي محاسبه و استخراج بلاك جديد در نظر گرفته ميشود. استخراج شبيه به يك بازي است. شما معما را حل ميكنيد و جايزه ميگيريد. در نظر گرفتن سختي، حل معما را دشوارتر و زمانبرتر ميكند. به عنوان مثال سختي هدف بيت كوين، يك رشته 64 كاراكتري است كه با چند صفر آغاز ميشود. با افزايش سطح سختي استخراج، تعداد اين صفرها نيز افزايش مييابد. سطح سختي پس از هر 2016 بلاك تغيير ميكند.
زماني كه نرمافزارهاي استخراج ميخواهند يك بلاك جديد را به بلاك چين اضافه كنند، به شيوه زير اين كار را انجام ميدهند. زماني كه بلاك جديد براي استخراج در شبكه قرار ميگيرد، تمام محتويات بلاك هش ميشوند. اگر مقدار هش كمتر از سختي هدف است، آنگاه آن را به بلاك چين اضافه ميكنند و تمام افراد شبكه بايد بلاك جديد را تاييد كنند.
به دست آوردن يك بلاك جديد به همين سادگي نيست. اينجاست كه نانس (nounce) وارد بازي ميشود. نانس رشتهاي تصادفي و دلخواه است كه با هش بلاك تركيب ميشود. پس از آن، اين رشته بههمپيوستهي جديد هش ميشود و با سطح سختي مقايسه ميشود. اگر مقدار آن كمتر از سطح سختي هدف نباشد، نانس بايد تغيير كند و اين فرآيند شايد ميليونها بار انجام شود تا در نهايت شرايط مورد نظر برآورده شود. زماني كه اين اتفاق بيفتد، بلاك جديد به بلاك چين اضافه ميشود.
نرخ هش چيست؟
نرخ هش در بلاك چين و عملگرهاي ارز ديجيتال، به تعداد عمليات هش انجام شده در زمان معين يا سرعت عملكرد دستگاه ماينر اطلاق ميشود. نرخ هش يكي از عوامل مهم و تاثيرگذار در استخراج ارز ديجيتال است و ماينرها براي انتخاب دستگاه استخراج آن را مد نظر قرار ميدهند. در واقع نرخ هش، معياري براي اندازهگيري عملكرد يك دستگاه ماينر است.
نرخ هش، پاداش ماينرها و سختي شبكه، سه عامل كاملاً وابسته به يكديگرند. هر چه سختي شبكه بيت كوين بالاتر برود، نرخ هش بيشتري نيز براي پيدا كردن و ماين كردن بلاكها نياز خواهد بود.
يكي از رايجترين معيارهاي اندازهگيري نرخ هش «هش بر ثانيه» است. اين عدد نشاندهنده تعداد هشهايي كه در يك ثانيه انجام ميشود. با توجه به نوع نوع الگوريتم و سختي شبكه، نرخ هش است و بايد توجه داشت كه نميتوان نرخ هش الگوريتمهاي متفاوت را با يكديگر مقايسه كرد.
برخي ديگر از معيارهاي اندازهگيري نرخ هش كه در واقع تنها عمل تبديل واحد بر روي آنها صورت گرفته عبارتند از:
- 1 KH/s يا هزار هش بر ثانيه
- 1 MH/s يا يك ميليون هش بر ثانيه
- 1 GH/s يا يك ميليارد هش بر ثانيه
- 1 TH/s يا يك تريليون هش بر ثانيه
- 1 PH/s يا يك كوادريليون هش بر ثانيه
- 1 EH/s يا يك كوئينتيليون هش بر ثانيه
ارقام بالا به ترتيب كيلوهش، مگاهش، گيگاهش، تراهش، پتاهش و اگزا هش نامگذاري ميشوند.