آشنایی با مفهوم اثبات کار

شما یاد خواهید گرفت که اثبات کار چیست ، هش کردن چگونه کار می کند و سیستم اثبات کار بیت کوین چگونه کار می کند.

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

ویژگی اصلی سیستم اثبات کار عدم تقارن آن می باشد، به این معنی که فرستنده ی پیام برای تهیه ی آن به مدتی زمان نیاز دارد تا ثابت کند که کار انجام شده است، با این وجود گیرنده می تواند در زمان بسیار کمی تأیید نماید که کار توسط فرستنده انجام شده است.

اخیراً، سیستم های اثبات کار به دلیل استفاده ی یکپارچه در ارزهای رمزنگاری شده مانند بیت کوین و اتریوم، که توسط ماینرها برای امنیت شبکه استفاده می شوند، محبوب گشته اند.

آنچه یاد خواهید گرفت

  • هش کردن (هشینگ) چگونه کار می کند.
  • چگونه شبکه ی بیت کوین سختی هدف پازلی را که ماینرها حل می کنند محاسبه می نماید.
  • چگونه ماینرها بیت کوین بلاک های معتبر را پیدا می کنند.
  • چرا بیت کوین و سایر ارزهای رمزپایه ی مبتنی بر بلاک چین های عمومی از مکانیسم های اثبات کار استفاده می کنند.

هش کردن (هشینگ) چگونه کار می کند؟

برای درک سیستم اثبات کار بیت کوین، ابتدا باید مشخص نماییم که هش چیست. هش یا به عبارت دیگر digest، نتیجه ای است که توسط یک تابع هش مانند SHA-256 (همان مورد استفاده شده توسط شبکه ی بیت کوین) تولید می شود.

نحوه عملکرد تابع هش به شرح زیر است:

  • مقداری ورودی می گیرد – این ورودی می تواند هر ترکیبی از حروف، اعداد و نمادها باشد.
  • با استفاده از توابع ریاضی، ورودی پردازش گردیده و نتیجه ای به نام digest (هش) تولید می شود. در مورد SHA-256، digest دنباله ای به طول ۲۵۶ از یک ها و صفرها است.
  • ورودی یکسان همیشه منجر به digest یکسانی می گردد.
  • صرف نظر از حدس زدن، هیچ راه شناخته شده ای برای دانستن اینکه ورودی بر اساس یک هش داده شده چیست، وجود ندارد.

به طور دقیق تر، اگر ما به محاسبه گر هش Sha-256 متعلق به Xorbin برویم و “bitcoin” را به عنوان داده ای که می خواهیم هش کنیم ارائه دهیم، نتیجه همیشه بدین صورت خواهد بود

6b88c087247aa2f07ee1c5956b8e1a9f4c7f892a70e324f1bb3d161e05ca107b

حتی یک تغییر جزئی در پیام منجر به ایجاد یک هش کاملا متفاوت می شود. به عنوان مثال، اگر “bitcoin” را به “bitcoins” تغییر دهیم، هش به این فرم تبدیل می گردد

b1e84e5753592ece4010051fab177773d917b0e788f7d25c74c5e0fc63903aa9

همانطور که مشاهده می کنید، این نتیجه ای کاملا متفاوت است حتی اگر فقط یک حرف به ورودی اضافه کنیم.

ذکر این نکته مهم است که رشته های فوق نمایانگر مبنای ۱۶ دنباله ی ۲۵۶ بیتی یک ها و صفرهای تولید شده توسط SHA-256 هستند.

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

سیستم اثبات کار بیت کوین چگونه کار می کند؟

بیت کوین از یک سیستم اثبات کار به نام Hashcash استفاده می کند. روش کار بسیار ساده است – برای یافتن عددی که کمتر از یک هدف مشخص است، به متقاضی خدمات، که این متقاضی در مورد بیت کوین ماینر است، نیاز دارد. هدف عددی است که توسط شبکه ی بیت کوین ارائه گردیده و در اینجا نحوه ی کار آن مشخص شده است.

چگونه شبکه بیت کوین سختی را تنظیم می کند؟

شبکه ی بیت کوین به روشی راه اندازی شده است که بلاک ها به طور متوسط ​​هر ۱۰ دقیقه استخراج شوند. از آنجا که قدرت استخراج می تواند با گذشت زمان بالا و پایین شود، بلاک چین با تغییر دادن یک عددِ هدف،  میزان راحتی دستیابی  به بلوک جدید توسط ماینرها را کنترل میکند. (همه ی این ها را در بخش بعدی توضیح خواهیم داد).

این عدد هدف برای  ۲۰۱۶ بلاک یا تقریباً هر ۲ هفته تنظیم شده است. اگر استخراج ۲۰۱۶ بلاک قبلی بیش از ۲ هفته طول کشید، عدد هدف به طور متناسب و در جهت عکس افزایش می یابد تا استخراج راحتتر گردد.

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

به عنوان مثال، اگر عدد مورد نظر برای ۲۰۱۶ بلاک گذشته ۱۰۰۰ باشد، بیایید نحوه ی محاسبه برای ۲۰۱۶ بلاک بعدی را بررسی کنیم. شبکه ی بیت کوین با استفاده از نمایشگر زمان در سرتیتر هر بلاک متوجه می شود که چند دقیقه طول کشیده است تا ۲۰۱۶ بلاک آخر استخراج گردد.

در مثال ما، فرض کنیم که بیش از ۲ هفته یا ۲۱۱۶۰ دقیقه طول کشید (۲۰۱۶۰ دقیقه برابر با ۲ هفته است). عدد هدف جدید برای ۲۰۱۶ بلاک بعدی برابر خواهد بود با عدد  ۱۰۰0 هدف قبلی ضرب در (۲۱۱۶۰ / ۲۰۱۶۰).

این عدد ۱۰۰۰  در 1.0496031746 ضرب می شود، یعنی در حدود ۱۰۴۹. همانطور که توضیح دادیم، افزایش عدد هدف سختی استخراج برای ماینرها را کاهش می دهد و از آنجا که، در مثال ما استخراج ۲۰۱۶ بلاک گذشته بیش از ۲ هفته ی مورد انتظار طول کشید این تغییر دقیقاً همان چیزی است که ما به دنبال آن هستیم.

چگونه ماینرها بلاک های معتبر را پیدا می کنند؟

این یک تصور غلط رایج است که ماینرهای بیت کوین برای تأیید بلاک پیشنهادی خود سعی در یافتن یک عدد با تعداد مشخصی صفرِ ابتدای رشته دارند.

به عبارت ساده تر، برای یافتن یک بلاک معتبر، ماینرها باید عددی را که کمتر یا مساوی با عددی است که در بالا ذکر کردیم حدس بزنند.

از نظر آماری شانس یافتن همچین عددی ، با استفاده از میزان زمان صرف شده برای دستیابی به آن به راحتی محاسبه می شود.

داده های سرتیتر بلاک

برای توضیح چگونگی فرایند کار، ابتدا باید نشان دهیم که هر بلاک در شبکه ی بیت کوین در سرتیتر خود شامل چه داده هایی است:

  • شماره نسخه ی بلاک – نشان می دهد کدام مجموعه از قوانین اعتبارسنجی باید دنبال شود.
  • هش سرتیتر بلاک پیشین – اینگونه است که بلاک ها به یکدیگر زنجیر می شوند.
  • هش جذر مرکل – تولید شده توسط هش تمام تراکنش های موجود در بلاک. این کار بلاک را ایمن می سازد زیرا تغییر در هر تراکنش باعث بی اعتبار شدن بلاک می گردد.
  • زمان – زمانی که ماینر کار در بلاک را آغاز نمود.
  • بیت ها – عدد هدف در یک فرم فشرده.
  • نانس – عدد تصادفی تولید شده توسط ماینر.

بیایید نگاهی به مشخصات خاص بیندازیم. سیستم اثبات کار بیت کوین از SHA-256 برای تابع هش کردن خود استفاده می کند. عددی که ماینرها سعی می کنند حدس بزنند کمتر از عدد هدف تعیین شده توسط شبکه ی بیت کوین و دوبرابر هش SHA-256 از کل اطلاعات سرتیتر بلاک می باشد.

تمام داده های فوق با استفاده از SHA-256 با هم هش می شوند و سپس نتیجه دوباره هش SHA-256 می گردد که یک عدد ۲۵۶ بیتی تولید می کند. اگر این عدد کمتر یا برابر با عدد هدف باشد و تراکنش ها در بلاک قوانین اعتبارسنجی را نقض نکنند، بلاک معتبر در نظر گرفته می شود. در غیر این صورت، ماینر حدس زدن را ادامه می دهد.

نانس

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

بنابراین، تغییر مقدار نانس به میزان ۱ منجر به ایجاد یک هش کاملاً متفاوت و یک عدد کاملاً متفاوت برای مقایسه با عدد هدف می گردد. ماینر این کار را ادامه می دهد تا زمانی که عددی کمتر از عدد مورد نظر پیدا شود که در آن زمان بلاک معتبر بوده و به بلاک چین بیت کوین ضمیمه می شود.

صفرهای پیشتاز

تمام صحبت ها در مورد صفرهای پیشتاز از این واقعیت ناشی می گردند که عدد هدف معمولاً وقتی در قالب باینری نشان داده می شود، عدد بسیار بزرگی است و صفرهای پیشتاز زیادی دارد. از آنجا که عددی که ماینرها باید پیدا کنند باید کمتر یا برابر با عدد مورد نظر باشد، در مقایسه با آن صفرهای برابر یا بیشتری دارد.

به عنوان مثال، بیایید بلاک پیدایش بیت کوین را بررسی کنیم. اولین عدد هدف تعیین شده توسط ساتوشی ناکاموتو بدین صورت بود

26959535291011309493156476344723991336010898738574164086137773096960

که همانطور که مشاهده می کنید عددی فوق العاده زیاد است.

برای نشان دادن صفرهای پیشتاز، باید عدد فوق را به فرمت باینری با ۲۵۶ بیت تبدیل کنیم که نتیجه به شکل زیر می باشد:

0000000000000000000000000000000011111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.

هدف از هش بلاک پیدایش، همانطور که توضیح داده شد، آن است که یک عدد کمتر یا مساوی با عدد هدف باشد و اولین موردی که توسط اولین ماینر بیت کوین یافت شد، بدین صورت بود

10628944869218562084050143519444549580389464591454674019345556079.

همچنین این عدد در قالب باینری (۲۵۶ بیتی)، دارای تعداد زیادی از صفرهای ابتدای رشته است، بدین صورت

0000000000000000000000000000000000000000000110011101011001101000100111000000100001011010111000010110010110000011000111101001001101001111111101110110001110101110010001101010001010100110110000010111001010110011111100011011011000001010100011001110001001101111.

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

این کار نوعی بازی حدس زدن می باشد، اما همانطور که توضیح دادیم کمی متفاوت است. از آنجا که SHA-256 یک هش ۲۵۶ بیتی تولید می کند، بیشترین عددی که می تواند توسط آن تولید شود منهای ۱ است (ما با ۰ شروع می کنیم)، که عدد نجومی عظیمی می باشد، بسیار بزرگتر از حداکثر هدفی است که می تواند توسط شبکه ی بیت کوین تعیین شود.

اینجاست که رابطه ای معکوس بین عدد هدف و سختی به وجود می آید.

هرچه عدد هدف کوچکتر باشد، یافتن یک هش بلاک معتبر برای ماینرها دشوارتر می باشد زیرا دامنه ی اعداد معتبر کوچکتر و کوچکتر می گردد. با افزایش عدد هدف، آعداد معتبر بیشتری پیدا می شود، بنابراین سختی شبکه کاهش می یابد.

نحوه محاسبه ی شانس یافتن بلاک معتبر

به عبارتی ساده تر، فکر کنید که سعی دارید برای عددی کمتر یا برابر با ۳ قرعه کشی نمایید، در صورتی که مقدار حداکثر در این بازی ساختگی برای حدس زدن، ۱۰ می باشد. شانس شما برای پیروزی ۳ تقسیم بر ۱۰ یا ۳۰ درصد است، که ۳ نشان دهنده ی عدد هدف از شبکه ی بیت کوین می باشد.

بازی حدس زدن سیستم اثبات کار بیت کوین به همان روش کار می کند، اما از اعداد بسیار بزرگتری استفاده می نماید.

از آنجا که می توانیم شانس پیدا کردن یک عدد معتبر برای یک بلاک جدید را محاسبه کنیم، می توانیم به راحتی به طور متوسط​​، تعداد حدس هایی که برای یافتن یک بلاک جدید نیاز است را محاسبه نماییم.

در بلاک پیدایش بیت کوین، شانس یافتن عدد مناسب 1/4295032832 یا تقریباً یک در 4.3 میلیارد بود. بنابراین، پس از حدود 4.3 میلیارد تلاش نانسی، آمارها حکایت از این دارد که احتمال یافتن یک بلاک معتبر بسیار خوب است.

البته این موضوع به طور متوسط ​​است. در واقعیت، بعضی اوقات بلاک ها سریع تر و گاهی کندتر پیدا می شوند. اما بر اساس احتمال می توان میانگین زمان بلاک را برآورد نمود.

همانطور که قبلاً توضیح دادیم، شبکه ی بیت کوین هر ۲۰۱۶ بلاک عدد هدف را دوباره تنظیم نموده و سعی می کند به وعده ی خود در مورد پیدا کردن بلاک های جدید هر ۱۰ دقیقه عمل نماید.

و بدین گونه مکانیسم اجماع اثبات کار بیت کوین کار می کند.

چرا از اثبات کار در بیت کوین استفاده می شود؟

در ارزهای رمزپایه ی مبتنی بر بلاک چین های عمومی، اثبات کار به عنوان مکانیسمی برای جلوگیری از بازیگران مخرب در ایجاد و افزودن بلاک به بلاک چین مورد استفاده قرار می گیرد.

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

انگیزه برای ماینرها پاداش بلاک و هزینه ی ترکانش ها است، ییعنی هربار ک آنها لاکی را ایجاد میکنند با توجه به استاندارد شبکه پاداش می گیرند. در زمان نگارش این مقاله پاداش بیت کوین 6.25 BTC می باشد و قرار است در سال ۲۰۲۴ دوباره نصف شود.

جمع بندی

سیستم اثبات کار بیت کوین راه حلی بسیار هوشمندانه برای تأمین دفتر تراکنش های پولی مشترک می باشد و در عین حال انگیزه هایی برای ماینرها به منظور ادامه ی بازی حدس زدن ایجاد می کند.

ماینرها سعی می کنند یک عدد تصادفی کمتر یا مساوی با یک عدد هدف تعیین شده توسط شبکه ی بیت کوین را حدس بزنند. اگر آنها بسرتیترستی حدس بزنند، بلاکی که ایجاد نموده اند به بلاک چین ضمیمه گشته و کار بر روی مورد بعدی را شروع می کنند.

در هر ۲۰۱۶ بلوک، عدد هدف بر اساس زمانی که برای ایجاد ۲۰۱۶ بلاک پیشین لازم بود تنظیم می گردد.

اگر این کار بیش از ۲ هفته طول بکشد، سختی کاهش می یابد و بالعکس. هدف این است که همیشه این کار را انجام دهیم تا بلاک های جدیدی پیدا شود، بدون توجه به قدرت هش ترکیبی تمام ماینرها در شبکه ی بیت کوین به طور متوسط ​​هر ۱۰ دقیقه این عمل صورت می گیرد.

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