الگوریتم استخراج بیت کوین، نوع خاصی از الگوریتمهای رمزنگاری است که SHA-256 نام دارد. الگوریتم رمزنگاری SHA_256 یک فرایند برگشتناپذیر است؛ همین ویژگی باعث شده است که این تابع یک الگوریتم مناسب برای استخراج بیت کوین و سایر بلاکچینهای گواه اثبات (PoW) باشد. در این مقاله از میهن بلاکچین با ما همراه باشید تا توضیح دهیم که الگوریتم SHA_256 چیست، چگونه امنیت بیت کوین را تامین میکند، چه کاربردهای دیگری در شبکه بیت کوین دارد و ماینرهای BTC چه استفادهای از این الگوریتم میکنند.
خلاصه مطلب
📌 هش کردن یک فرایند برگشتناپذیر است که در آن، با استفاده از توابع رمزنگاری، یک متن خام به رشتهای از کاراکترها تبدیل میشود. این رشتههای خروجی هش نام دارند.
📌 الگوریتم SHA-256 نوعی تابع هشینگ است که خروجیهای آن ۲۵۶ بیتی هستند.
📌 الگوریتم استخراج بیت کوین از تابع SHA-256 استفاده میکند. ماینرها با استفاده از این تابع، پازلهای ریاضی پیچیده را حل میکنند تا بتوانند یک بلاک جدید به زنجیره بلاک بیت کوین اضافه کنند.
📌 از کاربردهای دیگر الگوریتم SHA-256 در بلاکچین بیت کوین، میتوان به ساخت آدرسهای بیت کوین اشاره کرد.
تابع SHA-256، خانوادهای از توابع SHA است که یک خروجی ۲۵۶ بیتی ارائه میدهد؛ یعنی هر دادهای که به تابع SHA-256 داده شود، نتیجه آن به عنوان رشتهای از اعداد و حروف ۲۵۶ بیتی (هش) نمایش داده میشود.
هشینگ چیست؟
هش کردن (Hashing) یک فرایند یکطرفه است که اطلاعات خام را به محتوایی به نام هش (Hash) تبدیل میکند. فرایند هشینگ اطلاعات را از یک تابع ریاضی عبور میدهد و آنها را به صورت رشتهای از کاراکترها درمیآورد که به آن هش یا خلاصه هش (Hash Digest) گفته میشود.
هش کردن یک فرایند یکطرفه و برگشتناپذیر است؛ یعنی نمیتوانید خروجی هشینگ (هش یا همان رشتهای از کاراکترها) را به تابع هش بدهید و متن اولیه را دریافت کنید. ضمنا، خروجی تابع هش برای یک ورودی تکراری، ثابت است؛ یعنی هر چقدر هم که فرایند هش کردن را برای یک متن خام تکرار کنید، هش به دست آمده داده همان خواهد شد. برای دریافت خروجی (هش) جدید، باید یک داده خام جدید به تابع هش بدهید.
الگوریتم SHA-256 چیست؟
الگوریتم SHA-256 (مخفف Secure Hash Algorithm یا الگوریتم هش امن) نوعی الگوریتم هش رمزنگاری است که توسط آژانس امنیت ملی آمریکا (NSA) معرفی شده است. از این الگوریتم در بلاکچین بیت کوین و برخی از بلاکچینهای PoW استفاده میشود.
همانطور که از اسمش پیداست، الگوریتم SHA-256 یک هش ۲۵۶ بیتی تولید میکند که طول آن ثابت است؛ یعنی طول داده ورودی هرچقدر هم که باشد، طول خروجی ۲۵۶ بیت (۶۴ کاراکتر) خواهد بود. البته طول داده ورودی نیز باید کمتر از ۲۶۴ بیت باشد. برای آزمایش عملی الگوریتم SHA-256، میتوانید از این ابزار استفاده کنید. در کادر اول، متن خام را بنویسید تا در کادر دوم خروجی تابع به صورت یک هش نمایش داده شود:
یکطرفه و برگشتناپذیر بودن الگوریتم SHA-256 باعث شده است که از آن به عنوان یک الگوریتم ایدهآل برای استخراج ارزهای دیجیتال PoW مثل بیت کوین استفاده شود.
ویژگیهای الگوریتم SHA-256 به شرح زیر است:
- نمیتوانیم مقدار ورودی را با توجه به خروجی حاصل شده معین کنیم.
- مقدار ورودی میتواند هر میزان رقم و طول دلخواهی داشته باشد (حتی هزاران رقم).
- خروجی این تابع همواره طول یکسانی دارد.
- در صورت وارد کردن ورودی یکسان، مقدار خروجی دریافتی همواره یکسان خواهد بود.
- اعمال هرگونه تغییری در مقدار ورودی هرچقدر هم ناچیز، به تغییرات غیرقابل پیشبینی و بسیار متفاوتی در میزان خروجی منجر میشود.
- به نظر میرسد که میزان خروجی کاملا تصادفی یا رندوم است، اما در حقیقت این مقدار دریافتی کاملا قطعی است (بدین معنا که کاملا محاسبه شده و قابل تکرار است).
- میزان خروجی دریافتی غیرقابل پیشبینی است. خروجی ما تنها قابل محاسبه بوده و چنین محاسباتی نیازمند انجام کار قابل توجهی توسط کامپیوتر است ( با مداد و کاغذ ساعتها به طول میانجامد پس این کار را انجام ندهید).
الگوریتم SHA-256 بیت کوین چگونه کار میکند؟
الگوریتم SHA-256 در بلاکچین بیت کوین ۲ کاربرد مهم دارد: استخراج BTC و ساخت آدرسهای بیت کوین.
در الگوریتم PoW که الگوریتم اجماع بیت کوین است، ماینرها باید برای اضافه کردن بلاک جدید به زنجیره بلاکهای بیت کوین باهم رقابت کنند. در این رقابت، ماینرها باید یک عدد خاص به نام نانس (Nonce) را پیدا کنند و آن را همراه با سایر اطلاعات بلاک در الگوریتم وارد کنند تا فرایند استخراج آغاز شود. یکی از این اطلاعات لازم، هش بلاک قبل است. هر بلاک بیت کوین، بخشی به نام بلاک هدر (Block Header) دارد که اطلاعات مهمی مثل هش بلاک قبل در آن ذخیره میشود. برای به دست آوردن هش بلاک قبل، ماینر باید بلاک هدر (Block Header) قبلی را دو بار از الگوریتم SHA-256 عبور دهد. پس از ثبت اطلاعات مورد نیاز و حل کردن این پازل ریاضی، بلاک جدید با موفقیت ساخته شده و فرایند استخراج شروع میشود.
کل فرایند اضافه شدن بلاک جدید تقریبا ۱۰ دقیقه طول میکشد. برای اینکه زمان استخراج بلاک جدید همان ۱۰ دقیقه باقی بماند و تغییر نکند، از سازوکاری به نام سختی استخراج یا سختی شبکه استفاده میشود که تقریبا هر ۲ هفته یکبار تنظیم میشود. سختی استخراج همان سختی پازلهای ریاضی الگوریتم بیت کوین است که ماینرها باید حل کنند. سختی استخراج زمان اضافه شدن بلاک جدید را کنترل میکند و باعث میشود که بلاکهای جدید با یک سرعت ثابت به شبکه اضافه شوند.
کاربرد دوم الگوریتم SHA-256، ساخت آدرسهای بیت کوین است. بهطور خلاصه، برای ساخت آدرس بیت کوین، ابتدا کلید خصوصی بیت کوین با یک الگوریتم به نام ECDSA (مخفف الگوریتم امضای دیجیتال منحنی بیضوی) به کلید عمومی تبدیل میشود. سپس این کلید عمومی از تابع SHA-256 و یک تابع دیگر (RIPEMD-160) عبور داده میشود تا در نهایت به یک آدرس بیت کوین تبدیل شود.
تراکنشهای بیت کوین با استفاده از کلید خصوصی بهصورت دیجیتال امضا میشوند تا ثابت شود که بیت کوینهای ارسالشده واقعا متعلق به فرستنده است. امضای تراکنشهای بیت کوین نیز با تابع SHA-256 انجام میشود؛ به این صورت که دادههای تراکنش با تابع SHA-256 هش میشوند و هش حاصل، با کلید خصوصی فرستنده و با استفاده از تابع ECDSA امضا میشود. این امضای دیجیتال در دادههای تراکنش قرار داده میشود تا سایر اعضای شبکه بتوانند با استفاده از کلید عمومی فرستنده، صحت امضا را تایید کنند.
آیا الگوریتم SHA-256 امن است؟
هیچ کدام از الگوریتمهای رمزنگاری کاملا امن و بینقص نیستند؛ اما در حال حاضر، الگوریتم SHA-256 یکی از امنترین الگوریتمهای هش موجود است. الگوریتم SHA-256 به این دلیل امن است که برگشتناپذیراست و اجازه نمیدهد خروجی تابع (هش) دوباره به متن خام اولیه تبدیل شود. ویژگی مثبت دوم SHA-256 این است که احتمال تولید هشهای یکسان در آن بسیار کم و تقریبا غیرممکن است؛ یعنی دو ورودی متفاوت هیچوقت هش یکسان تولید نمیکنند (از لحاظ تئوری، درصد بسیار کمی احتمال وقوع وجود دارد). ضمنا، وقتی دادههای مشابهی به تابع SHA-256 داده میشود، هشهای تولیدشده به حد کافی باهم تفاوت دارند تا مشخص نشود که هشها از دادههای مشابه به دست آمدهاند. البته، عوامل دیگری مثل پیادهسازی صحیح پروتکلهای امنیتی نیز در امنیت الگوریتم SHA-256 نقش دارند. این بیشتر به برنامه یا شبکهای بستگی دارد که الگوریتم در آن استفاده میشود.
جمعبندی
الگوریتم SHA-256 یکی از انواع الگوریتمهای هش است که در بلاکچینهای PoW، از جمله بلاکچین بیت کوین استفاده میشود. این تابع، متن خام را به عنوان ورودی میگیرد و آن را به یک رشته ۲۵۶ بیتی تبدیل میکند که به آن هش گفته میشود. استخراج بیت کوین، اضافه شدن بلاکهای جدید و ساخت آدرسهای بیت کوین به کمک همین الگوریتم انجام میشود. در این مقاله توضیح دادیم که الگوریتم SHA-256 چیست و چه نقشی در بلاکچین بیت کوین و امنیت آن دارد. امیدواریم که مطالب این مقاله برای شما مفید بوده باشد. منتظر دریافت نظرات و پرسشهای شما هستیم.
سوالات متداول (FAQ)
نوعی الگوریتم رمزنگاری است که متن خام را به رشتهای از کاراکترهای ۲۵۶ بیتی (هش) تبدیل میکند. این تابع یکطرفه و برگشت ناپذیر است.
از الگوریتم SHA-256 به عنوان الگوریتم استخراج در بلاکچین بیت کوین و سایر بلاکچینهای PoW استفاده میشود. ساخت آدرسهای بیت کوین، تامین امنیت شبکه و امضای تراکنشهای آن نیز به کمک همین الگوریتم انجام میشود.