روش کار رمز ارزها از الگوریتم هش تا بلاک‌چین

در این مطلب قرار است با هم چند نکته در مورد نحوه کار رمزارزها با محوریت  بیتکوین و کمی عمیق‌تر، بلاک چین و الگوریتم های هش بیاموزیم.

(این مطلب با همکاری آقای سینا فلاح برای پروژه درس ریاضی۲ استاد حسن‌زاده نوشته می‌شود.)

همان‌طور که می‌دانید یکی از مهم‌ترین موضوعات داغ این روز های دنیای تکنولوژی، بلاک‌چین و ارزهای مجازی است. در این میان مهم‌ترین سوالاتی که برای افراد عادی پیش می‌آید این است که قیمت یک رمزارز چگونه تعیین می‌شود و در واقع چگونه و بر چه اساسی تغییر می‌کند و یا اصلا چه چیزی به این ارزها "ارزش" می‌دهد و در مرحله دوم اینکه آیا این رمز ارز ها امن هستند؟ آیا ارزش سرمایه گذاری دارند؟

در این مطلب علاوه بر پاسخ به سوالاتی از قبیل سوال بالا می‌خواهیم نگاهی عمیق‌تر به نحوه کارکرد این رمزارزها داشته باشیم.

خلاصه‌ای درباره رمزارز‌ها

همان‌طور که می‌دانید از دیرباز (پس از مبادله کالا با کالا) چیزی به نام پول وجود داشته که یا خودش ارزش داشته ( مانند سکه) و یا نماد چیزی با ارزش بوده مثلا اسکناس نماد یا واسط مقدار معینی طلا در خزانه‌ی صادر کننده آن اسکناس است. سوالی که پیش می‌آید این است که آیا اسکناس به خودی خود ارزش دارد؟ جواب این است که خیر، ارزش آن به طلا ( چیز با ارزش) پشت آن در خزانه بستگی دارد.

در مورد شرایط و محدودیت‌های پول‌های رایج خودتان بهتر می‌دانید ولی مهم ترین آنها وابستگی به یک مرجع خاص مثلا بانک مرکزی شرکت صادر کننده است.

و اما پول‌های نامتمرکز (رمزارز‌ها) برای حل چه مشکلی آمده اند؟ با استفاده از رمزارز‌ها کنترل پول دست یک نهاد واحد نیست (عملاً کنترلی بر شبکه وجود ندارد) و طبق پروتکل‌هایی که از ابتدا تعیین شده‌اند به فعالیت ادامه می‌دهد، به دلیل استفاده از سیستم‌های رمزنگاری پیشرفته و ریاضیاتی بسیار امن است(البته منوط به رفتار صحیح کاربر) و هیچ گونه قابلیت ردگیری تراکنش‌ها وجود ندارد.

اما ارزش پول‌های رمزنگاری شده از کجاست؟ همانطور که گفتیم خزانه و سیستم مرکزی برای رمزارزها وجود ندارد و موجودیت خود را مدیون مقبولیت و محبوبیت بین کاربران هستند، ارزششان هم دقیقاً از همینجا ناشی می‌شود، از مقبولیت بین کاربران، وقتی چیزی خواهان داشته باشد، ارزش پیدا می‌کند. البته باید تولید و مقدارش هم محدود باشد که همینگونه است. (در ادامه توضیح می‌دهیم تولید بیتکوین چگونه است.)

آیا ارزش بیتکوین تضمین شده است؟ خیر، هیچ تضمینی وجود ندارد که ارزش بیتکوین ناگهان سقوط نکند و حتی اخیراً ارزشش به نصف رسیده و یکبار در تاریخ نیز به شدت کاهش یافت و از چند هزار دلار به چند دلار رسید (البته موقتا) پس این سرمایه‌گذاری پر ریسکی است ولی نمی‌توان منکر این شد که افراد زیادی نیز در این حیطه سرمایه‌گذاره کرده‌اند و سود برده‌اند.

نکته دیگر چگونگی خرید و فروش رمزارز است، شیوه کار به این صورت است که گیرنده و فرستنده پول باید کیف‌پول الکترونیک داشته باشند و فرستنده می‌تواند با استفاده از برنامه‌های موجود(که در موبایل کامپیوتر و .. موجود هستند) به گیرنده به هر میزان پول(تا سقف موجودی خودش) انتقال دهد.

۲ راه اصلی نیز برای به دست آوردن بیتکوین وجود دارد که ساده‌ترین آن خرید از صرافی است، این صرافی‌ها ارز‌های رایج را گرفته و بنا به قیمت روز بیتکوین به شما بیتکوین می‌دهند(یعنی به کیف پول شما واریز می‌کنند) که این راه برای عموم مردم مناسب و منطقی است.

اما راه دوم که پیچیده‌تر و بیان‌گر مفاهیم پشت بیتکوین است، ماین‌کردن بیتکوین است. توضیح دقیق اتفاقات پشت سر ماینینگ را در ادامه می‌خوانیم ولی به طور خلاصه استفاده از قدرت پردازش کامپیوتر خود برای امن کردن شبکه بیتکوین را ماینینگ می‌گویند که در این صورت شبکه به عنوان جایزه مقداری بیتکوین می‌دهد. امروزه برخی در ماین کردن بیتکوین سرمایه‌گذاری می‌کنند و با خرید سیستم‌های قدرتمند، بیتکوین استخراج (ماین) می‌کنند برای مثال دستگاه‌هایی ساحته‌شده که با اتصال به اینترنت روزانه حدودا به اندازه ۸دلار بیتکوین استخراج می‌کنند، افراد این دستگاه‌ها را تهیه کرده و با تامین برق و اینترنت‌شان اقدام به ماین‌کردن می‌کنند.

تا اینجا با هر آنچه لازم است کاربر عادی درباره بیتکوین بداند را دیده‌ایم اما در ادامه به منطق و نحوه کار پشت رمزارز‌ها بامحوریت بیتکوین می‌پردازیم.

در ابتدا لازم است مفهوم هش را با هم ببینیم:

الگوریتم های درهم‌سازی(هش)

به طور خلاصه الگوریتم هش، یک ورودی می‌گیرد و یک خروجی ثابت و منحصر به فرد(به ازای هر ورودی) تولید می‌کند که به ازای هر تغییر کوچک در ورودی، مقدار خروجی کاملا عوض می‌شود.

برای مثال هش عبارت "salam"   برابر مقدار رو‌به‌رو خواهد بود:

DE6838252F95D3B9E803B28DF33B4BAA

ولی اگر در ورودی یک تغییر کوچک بدهیم و تبدیل به "sAlam" کنیم هش جدید برابر

F9CDFE53EB8A86BA24C4814EC6752C4A 

خواهد بود که کاملا با قبلی تفاوت دارد.(نکته: از الکوریتم MD5 استفاده کردیم، الگوریتم های دیگر را خواهیم دید.)

بیایید برای فهم ساده‌تر یک نیاز معمول در دنیا را با هم بررسی کنیم و با استفاده از توابع ریاضی برای آن راه حل دهیم، فرض کنید می‌خواهیم تکلیف یک دانشجو را در ایام عید تحویل بگیریم. این دانشجو فرضا تا ۵ فروردین فرصت دارد که تکلیف را انجام دهد ولی دسترسی به اینترنت برای ارسال تکلیف ندارد. استاد می‌خواهد مطمئن شود که دانشجو تمرین را قبل از مهلت انجام دهد ولی هرموقع که دانشجو می‌توانست تحویل دهد پس از این ایده استفاده می‌کند: استاد از دانشجو می‌خواهد که در روز ددلاین از فایل تکلیف خود هش بگیرد (یعنی توسط یک الگوریتم هش، از فایل خود یک عدد بسازد) و آن عدد را پیامک کند. در هنگام تحویل (مثلا ۱۰ روز بعد) استاد از فایل تحویلی مجددا هش می‌گیرد و اگر هش همان شد، یعنی دانشجو از ۵ فروردین فایل خود را تغییر نداده است(چون اگر تغییر داده بود هش به کلی عوض می‌شد) و تحویل موفقیت آمیز است.

مشابه مثالی که دیدیم، کاربرد اصلی هش در این است که مطمین شویم یک داده(مثلا فایل PDF تمرین) هیچ تغییری نکرده است، مثلا در شبکه های کامپیوتری همراه با ارسال داده، هش داده‌ها هم ارسال می‌شود و گیرنده نیز در مقصد از داده‌ دریافتی هش می‌گیرد و با برابری هش‌ها مطمین می‌شود که داده در طول مسیر هیچ تغییری نکرده است.

نکته‌ای که در این میان وجود دارد این است که آیا توابع هش یک به یک هستند یا خیر؟ جواب این سوال به سادگی امکان پذیر نیست، در نگاه اول به نظر می‌رسد که گفتیم برای هر ورودی، جواب منحصر به فرد است پس باید تابع یک‌به یک باشد اما در این میان یک نکته وجود دارد، دامنه و برد! دامنه یک الگوریتم هش هرچیزی ممکن است باشد، فایلی با حجم ۱۰۰ها گیگابایت یا یک عدد یا هرچیز قابل تبدیل به صفر و یک، اما برد آن محدود است(بسته به الگوریتم) مثلا برای  md5، تعداد ۳۲ رقم در مبنای ۱۶ هست که با محاسبه ساده درمی‌بابیم که حدود 3.4 در ده به توان ۳۸ حالت وجود دارد ولی تعداد حالت‌های ورودی بی نهایت است، پس قطعا هم‌پوشانی (collision) خواهیم داشت یعنی هش ۲ داده متفاوت، دقیقا یکی خواهد شد و این برای ما خوب نیست به این دلیل که‌ مثلا یک هکر می‌تواند داده ما را با داده دیگری با همان هش عوض کند و ما اصلا متوجه نشویم. از این جا این ایده به وجود می‌اید که بیاییم الگوریتم های هش دیگری توسعه دهیم با تعداد حالت‌های خروجی بیش‌تر و در نتیجه احتمال پیدا شدن هم‌پوشانی کم‌تر.

الگوریتم‌های هش زیر امروزه استفاده می‌شوند:

MD5

SHA1

SHA2

SHA256

SHA3

که برای الگوریتم MD5 هم‌پوشانی کشف شده و دیگر الگوریتم امنی به حساب نمی‌آید و مختصصات امنیت تاکید به استفاده از هش‌های امن‌تر دارند.

نکته: تمام هش‌هایی که استفاده و معرفی شدند هش‌های رمزنگاری (به اصطلاح cryptographic ) بودند، گونه دیگری از هش‌ها هستند که با تغییر کوچک در ورودی، خروجی نیز اندکی تغییر می‌کند ولی این هش‌ها در کاربرد‌های امنیتی استفاده نمی‌شوند.

در آخر برای تقریب به ذهن، یک الگوریتم فرضی و ساده برای هش کردن می‌گوییم: فرض کنید مقدار هش ما، تعداد بایت های ورودی باشد، اشکال اصلی این هش متغیر بودن رنج خروجی‌است و محدود نیست پس با یک بازنگری، الگوریتم را به: باقی‌مانده تعداد بایت‌های ورودی بر ۱۰۰ تبدیل می‌کنیم. در این حالت مطمئنیم هش ما بین ۰ تا ۱۰۰ است ولی ایرادی که وجود دارد هم‌پوشانی بسیار زیادی وجود دارد مثلا هش هر دو ورودی ۲ بایتی، ۲ می‌شود  پس طراحی الگوریتم هش به سادگی نیست و از الگوریتم‌های پیچیده ریاضی و عملگرهای بولی استفاده می‌شود.

نکته: بیتکوین از یکی‌از امن‌ترین هش‌ها با نام SHA256 استفاده می‌کند.

برای مطالعه بیش‌تر در مورد الگوریتم‌های هش به لینک زیر مراجعه کنید:

https://coindoo.com/how-does-a-hashing-algorithm-work/

بلاک‌چین چیست؟

بلاک‌چین مکانیسم اصلی برای توزیع امن داده بین همه کاربران است. در سیستم بلاک‌چین هر کاربر (مثلا کاربر الف) بخشی از کل داده‌ها را دارد، بنابراین کل داده بین کاربران تقسیم شده‌است. به لطف این تقسیم، سرور و سیستم مرکزی برای نگه‌داری داده‌ها وجود ندارد و همه‌ی داده توسط کاربران نگه‌داری می‌شود.
ساختار هر بلوک شامل بخشی از اطلاعات، یک متن رندم، هش بلاک قبلی و هش خود بلاک است، از ان‌جا که هر بلوک هش بلوک قبلی را دارد بلاک‌ها مانند زنجیره‌ای به هم متصل می‌شوند و تغییر در بلوک‌های قبلی باعث تغییر هش و نامعتبر ساختن همه‌ی بلوک‌های بعدی می‌شود و امکان‌پذیر نیست.

دلیل وجود متن رندم را در ادامه می‌خوانیم.

− کاربری که اطلاعات را دارد ناگهان از شبکه خارج شود:‌ به طور طبیعی، وقتی کاربر از شبکه خارج شود، اطلاعاتی که دارد از دست می‌رود ولی با مکانیسم‌های هوشمندانه‌ای که پیاده سازی شده، هر قسمت از داده همزمان بین چند نفر نگه‌داری می‌شود پس با از دست رفتن یک کاربر، کاربران دیگری هستند که داده را نگه‌داری کنند پس نگرانی وجود ندارد و احتمال از دست رفتن داده را بسیار کاهش می‌دهد. در سیستم بلاک‌چین بیتکوین با از دست رفتن حدود ۷۰ درصد از شبکه، همچنان همه اطلاعات در دسترس باقی می‌مانند.
۲−یک خراب‌کار که مقداری از داده‌ها را دارد اقدام به تغییر اطلاعات به نفع خود کند: همانطور که در بالا اشاره شد، هرقسمت از داده توسط چند کاربر نگه‌داری می‌شود، حال فرض کنیم کاربر خرابکار A داده دست خودش(بلوک B) را مخدوش کند، در این حالت به جای یک نسخه از بلوک B، دو نسخه از بلوک B داریم. سیستم بلاک‌چین با تطبیق اطلاعات بین همه کابرانی که بلوکB را دارند، داده مخدوش را پیدا کرده و نامعتبر اعلام می‌کند.
نکته قابل توجه اینکه سیستم بر اساس تکرار بیش‌تر داده معتبر را پیدا می‌کند و یعنی داده‌ای که دست اکثر کاربران است معتبر است(بالای ۵۰ درصد یک داده مشابه را دارند) و مابقی نامعتبر هستند و دور انداخته می‌شوند. حال یک احتمال وجود دارد که فرد خراب‌کار با صرف هزینه هنگفت تعدادی کامپیوتر وارد شبکه کند و همزمان اطلاعات‌شان را تغییر دهد در این صورت اگر تعداد کامپیوترهای خراب‌کار بالای ۵۰ درصد باشد، او موفق می‌شود کل داده‌ را دستکاری کند(به این هک، هک ۵۱درصد گفته میشود) اما این فقط در تئوری ممکن است ولی در عمل تعداد کامپیوتر‌های داخل شبکه بیتکوین(همان ماینرها) بسیار زیاد است و هزینه هک ۵۱درصد عملا غیرقابل پرداخت می‌شود بنابراین از این نظر نیز تا زمانی که بیتکوین محبوبیت دارد و تعداد ماینر‌ها زیادند، شبکه همچنان امن است.

در اپیزود ۸ از فصل ۵ سریال silicon valley یک هک ۵۱ درصد به تصویر کشیده شد!
در اپیزود ۸ از فصل ۵ سریال silicon valley یک هک ۵۱ درصد به تصویر کشیده شد!


بیتکوین چگونه از بلاک‌چین استفاده می‌کند؟

تا اینجا با نحوه کار بلاک‌چین اشنا شدیم و اکنون زمان پاسخ به سوال اصلی می رسد، چگونگی کار یک رمزارز با بلاک‌چین:

بیایید تفکرات قدیمی در مورد پول داشتن را کنار بگذاریم، در بیتکوین بلاک‌های داده در واقع سیاهه‌(ledger)هایی از تراکنش‌های صورت گرفته هستند یعنی مثلا اگر روزبه به سینا یک بیتکوین انتقال دهد، در سیاهه(که تعداد زیادی نسخه مشابه در دست همه ماینرها وجود دارد) نوشته می‌شود روزبه یک بیتکوین به سینا داد. البته با این توضیح که هیچ قابلیت ردگیری وجود ندارد و هیچ نام واقعی نیز درج نمی‌شود فقط پابلیک‌کی کیف‌پول روزبه و سینا وجود دارد. (توضیح در مورد کیف‌پول را در اول مطلب مطالعه کردیم).

در هر دقیقه نیز پرونده این بلوک بسته می‌شود و با اضافه کردن هش بلوک قبلی و خود بلوک، به دیتابیس غیرمتمرکز (یعنی پخش در میان همه ماینرها) سپرده می‌شود و بلوک جدیدی شروع می‌شود.

نمونه سنتی سیاهه یا دفترچه حساب که اطلاعات تراکنش‌های ۱۰ دقیقه در هر سیاهه نوشته می‌شود.
نمونه سنتی سیاهه یا دفترچه حساب که اطلاعات تراکنش‌های ۱۰ دقیقه در هر سیاهه نوشته می‌شود.

امنیت بیتکوین چگونه تضمین می‌شود؟

اگر میخواهید بیتکوین رد و بدل کنید باید به الگوریتم  امضای دیجیتال منحنی بیضوی که شامل کلید عومی و خصوصی می باشد دسترسی داشته باشید. حالا فرق این امضای با رمزنگاری نامتقارن چیست؟ در رمز نگاری نا متقارن فرض بر این بود که حدس زدن کلید خصوصی غیرممکن است پس امن تلقی می شدند ولی با وجود ابرکامپیوترها این الگوریتم کم‌کم غیرقابل اطمینان می‌شود، با توجه به حساسیت بیتکوین برای امنیت، تیم توسعه‌دهنده استفاده از ریاضیات پیچیده‌تری را انتخاب کردند: رمزنگاری منحنی بیضوی. رمز نگاری منحنی بیضوی براین اساس است که پیدا کردن لگاریتم گسسته از یک عنصر تصادفی منحنی بیضوی با توجه به یک نقطه پایه‌ی عمومی شناخته شده غیر عملی می‌باشد. اندازه منحنی بیضوی تعیین‌کننده سختی مسئله‌است. منحنی بیضوی یک منحنی مسطح است که متشکل از نقاط رضایت بخش معادله می‌باشد.

y^2 = x^3 + ax + b

حال این مسئله چجوری بیت کوین را امن می کند؟
با این رمز نگاری transaction(نقل و انتقال) ها امضا می شوند. رمز نگاری منحنی بیضوی شامل چند رویه جدا برای امضا و اطمینان از صحت اطلاعات هست که هر رویه دارای الگوریتم جدا می باشد، الگوریتم امضا داده ها را با استفاده از کلید خصوصی امضا و الگوریتم صحت اطلاعات با استفاده از کلید عمومی از صحت اطلاعات اطمینان حاصل میکند.
همانطور که قبلا گفته شد رمز نگاری منحنی بیضوی از فرمولی استفاده می کند که کلی حالت در خود جای میگیرد به عنوان مثال برای a = 0 و b = 7 (نسخه ای که بیت کوین از آن استفاده می کند) شبیه این می شود:

حال با توجه به مشخصه هایی که منحنی بیضوی به ما می دهد می توانیم در یابیم که چقدر این مسئله می تواند کار رمز نگاری را امن کند. به دور از جزئیات مسئله finite fields بیان کنیم که مسئله ای به نام جمع نقطه ای وجود دارد که میگوید با فرض اینکه دو نقطه p=(x1, y1) و q=(x2, y2) همراه با مختصاتشان داده شده باشند و p مخالف q باشد نقطه سومی باید یافت شود که شرط p+q=r را دارا باشد. که خب به راحتی این مسئله در دنیای دو بعدی به دست می آید. برای انجام صحیح رمز نگاری منحنی بیضوی، به جای جمع کردن دو نقطه اختیاری، یک نقطه پایه روی منحنی مشخص کردن و آن را با خودش جمع می کنیم.
برای مثال ما یک نقطه دلخواه p در نظر میگیریم حالا p را با خودش جمع می کنیم، طبق گفته های بالا نقطه سوم به دست می آید که با نقطه دوم تلاقی دارد و آن را به آن سوی محور x انعکاس می دهیم. پس الان ما 2*P را داریم.

اگر همین کار را هی تکرار کنیم می تواینم الگوریتم را سخت تر کنیم که برای مثال مختصات بیت کوین
x = 55066263022277343669578718895168534326250603453777594175500187360389116729240
y = 32670510020758816978083085130507043184471273380659243275938904335757337482424
پس دریافتیم که ریاضیات در رمزارزها واقعا کاربرد دارد و همانطور که گفته شد باعث امنیت برای این سیستم می شود که بدون این ریاضیات امکان‌پذیر نبود.

موجودی چگونه محاسبه می‌شود؟

می‌دانیم که تنها اطلاعاتی که در دیتابیس نگه‌داری می‌شود اطلاعات گردش مالی هستند، پس اگر من بخواهم موجودی حسابم را بدانم از کجا باید بفهمم؟

پاسخ بسیار ساده است، موجودی شما مساوی مجموع تمام پول‌های دریافتی منهای تمام پول‌های ارسالی و چون این اطلاعات را داریم، کافیست تمام گردش‌های مالی(transaction) ها را از ابتدا یکبار پیمایش کنیم و محاسبات ساده جمع و تفریق را انجام دهیم تا به موجودی فعلی برسیم.

اطلاعات چگونه ذخیره می‌شوند؟

گفتیم هر بلوک شامل اطلاعات transaction های ۱۰ دقیقه است و دیدیم برای محاسبه موجودی به همه‌ی اطلاعات قبلی نیاز داریم پس این اطلاعات دست کیست؟ به طور مختصر گفتیم در دیتابیس غیرمتمرکز است ولی یه طور دقیق، هر ماینر که اقدام به ماین کردن می‌کند بخشی از داده را هم میزبانی می‌کند که البته این داده دست چندین ماینر دیگر هم هست تا در صورت خروج یک ماینر در شبکه، هیچ اطلاعاتی از دست نرود.

اگر بخواهیم در مورد حجم داده‌ها بیشتر بررسی کنیم: هر ۱۰ دقیقه که یک بلاک جدید تولید می‌شود، این بلاک حدود ۳۶ مگابایت حجم دارد که با یک محاسبه سر انگشتی در ۱۰ سال اخیر که بیتکوین ساخته شده است ۱۸ ترابایت داده وجود دارد. این حجم داده بین هزاران ماینر سراسر جهان پخش است و به هر یک سهم ناچیزی می‌رسد. نکته مهم در الگوریتم‌های بیتکوین وجود دارد که با از دست رفتن حتی ۷۰ درصد ماینر‌ها، همچنان همه اطلاعات باقی می‌ماند.

ماینرها چه کار می‌کنند؟

ماینر‌ها به زبان ساده امنیت شبکه را تضمین می‌کنند، دقیق‌تر بخواهیم صحبت کنیم، هر بلاک که تمام می‌شود، ماینر‌ها  سعی می‌کنند با اضافه کردن یک عبارت رندم، هش آن را به مقدار خاصی در بیاورند (مثلا اگر در مبنای ده فرض کنیم، عدد ۳۰ رقمی ما زیر ۱۰۰ شود) همانطور که پیداست این امر خیلی دشوار است و احتمال پیدا کردن عبارت صحیح را پایین می‌اورد. ماینر ها به رقابتی می‌پردازند که هرکس عبارت صحیح را پیدا کند، خودش یک بیتکوین دریافت می کند، برای همین جایزه است که ماین کردن بیتکوین مشتاقان زیادی دارد.

الگوریتم‌های بیتکوین همواره طوری سختی محاسبه (همان عدد صد در مثال بالا) را تنظیم می‌کنند که بسته به تعداد ماینر‌ها هر ۱۰ دقیقه پرونده بلاک بسته شود یعنی عبارت رندم مورد نظر پیدا شود.

پول از کجا می‌آید؟

گفتیم که هر بلاک شامل تعدادی نقل و انتقال است ولی پول اولیه از کجا آمده است؟ مقداری پول اولیه در بلاک اولیه(اولین بلاک ساخته شده یا genesis block) ساخته شده و در هر ۱۰ دقیقه نیز با اتمام یک بلاک، یک بیتکوین به ماینر خوش‌شانس می‌رسد.

و در نهایت ارزش بیتکوین به خاطر محبوبیت و تولید محدود (و البته هزینه‌بر) آن است. از هزینه‌های اصلی ماین کردن بیتکوین می توان به خرابی و استهلاک قطعات کامپیوتر و هزینه برق سیستم اشاره کرد.

توضیح برخی اصطلاحات تکنیکی:
حوضچه ماینینگ(mining pool)

همانطور که خواندیم مکانیست دریافت بیتکوین این است که یک ماینر، متن رندم را پیدا کند و مقدار هش را به زیر ۱۰۰ برساند اما احتمال این کار خیلی پایین است و در واقع یک ماینر باید سال‌ها تلاش کند تا یک بیتکوین کسب کند در حالی که عموما ماینر‌ها ترجیح می‌دهند به هر میزان که وقت و انرژی صرف کرده‌اند، در آن جایزه دریافت کنند پس با هم همکاری می‌کنند و گروه (یا pool) تشکیل می‌دهند و با هم تقسیم کار می‌کنند تا هر یک بخشی از متن‌‌های رندم را امتحان کند و با هم سریع‌تر به نتیجه برسند، در پایان نیز جایزه بین همه آن‌ها تقسیم می‌شود.

هش‌ریت یا نرخ‌هش

هر دستگاه ماینر در ثانیه تعداد محدودی استرینگ رندم تولید می‌کند و هش آن‌ها را بررسی می‌کند، به این تعداد هش‌ریت می‌گویند، طبیعی است که هرچقدر هش‌ریت بالاتر باشد در ماینینگ تکی احتمال دریافت بیتکوین بیشتر است و در mining pool جایزه دریافتی بیش‌تر است. بنابراین ماینر ها اقدام به خرید دستگاه‌های قدرتمند می‌کنند.

نکته: برخلاف تصور عمومی، ابزاری که برای ماینینگ استفاده می‌شود پردازنده مرکزی(CPU) نیست بلکه پردازنده گرافیکی(GPU) به دلیل تعداد هسته‌های پردازشی بسیار بالا‌تر است.

منابع

ویکی‌پدیا

https://en.wikipedia.org/wiki/Hash_function

https://en.wikipedia.org/wiki/Blockchain

https://en.wikipedia.org/wiki/Bitcoin

سایت زومیت

https://www.zoomit.ir/tag/bitcoin/

ویدیو‌های یوتیوب جادی در مورد هش و بیتکوین

https://www.youtube.com/channel/UCgKePkWtPuF36bJy0n2cEMQ

سایت اصلی بیتکوین:

https://bitcoin.org/en/how-it-works

دیگر منابع:

https://www.coindesk.com/bitcoin-explained-five-year-old

https://coinsutra.com/bitcoin-double-spending/