اتریوم چگونه کار می‌کند(۸) – اثبات کار و استخراج

خانه انجمن ها تالار اتریوم اتریوم چگونه کار می‌کند(۸) – اثبات کار و استخراج

  • این موضوع خالی است.
در حال نمایش 1 نوشته (از کل 1)
  • نویسنده
    نوشته‌ها
  • #270
    Mohmmad10
    مدیر

    قسمت هفتم


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


    حساب‌ها و حالت

    اتریوم چگونه کار می‌کند؟ – ۸

    اثبات کار و استخراج


    در بخش «بلاک‌ها» مختصری به مفهوم سختی بلاک پرداختیم. الگوریتمی که به سختی بلاک معنا می‌دهد اثبات کار (PoW) است.

    الگوریتم اثبات کار اتریوم اتهش (Ethash) نامیده می‌شود (قبلا به‌عنوان داگر – هاشیموتو نامیده می‌شد).

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

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

    اگر m میکس‌هش (mixHash)، n نانس و Hn سربرگ بلاک جدید باشد (به استثنای نانس و تابع درهم‌سازی مختلط که باید محاسبه شوند)، آنگاه Hn نانس سربرگ بلاک است و d همان دَگ (گراف جهتدار غیرمدور) است که مجموعه‌ای بزرگ از داده‌هاست.

    در بخش «بلاک‌ها» درباره بخش‌های مختلف موجود در یک سربرگ بلاک صحبت کردیم. دو مورد از آن اجزاء میکس‌هش و نانس بودند. گفتیم که:

    • میکس‌هش، هشی است که همراه با نانس اثبات می‌کند که روی این بلاک محاسبات کافی انجام شده است؛
    • نانس نیز هشی است که وقتی با میکس‌هش ترکیب می‌شود، اثبات می‌کند که محاسبات کافی روی این بلاک انجام شده است.

    تابع اثبات کار برای ارزیابی این دو بخش به کار می‌رود.

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

    یک «عبارت بازیابی (seed)» برای هر بلاک محاسبه می‌شود. این عبارت بازیابی در هر «دوره» به طول ۳۰,۰۰۰ بلاک تغییر می‌کند. عبارت بازیابی برای اولین دوره، درهم‌سازیِ یک سری متشکل از ۳۲ بایت با مقدار صفر است. اما برای هر دوره بعدی، درهم‌سازیِ درهم‌سازیِ عبارت بازیابی قبلی است. با استفاده از این عبارت بازیابی، یک نود می‌تواند یک «کَش یا حافظه پنهان» شبه تصادفی را محاسبه کند.

    این حافظه پنهان بی‌نهایت مفید است زیرا با همین حافظه پنهان است که می‌توانیم لایت نودها را داشته باشیم. بدون وجود آن همه نودها باید فول نود می‌بودند. یاد گرفتیم که لایت نودها قابلیت این را دارند که یک تراکنش را به‌شکلی کارامد تأیید کنند بدون اینکه مجبور باشند کل مجموعه داده‌های بلاک چین را ذخیره کنند. یک لایت نود می‌تواند اعتبار یک تراکنش را بر اساس همین حافظه پنهان تأیید کند؛ زیرا حافظه پنهان می‌تواند هر چیزی را که برای تأیید یک بلاک نیاز است دوباره تولید کند.

    با استفاده از این حافظه پنهان، یک نود می‌تواند «مجموعه داده» گراف جهتدار غیرمدور را تولید کند. هر آیتم در این مجموعه داده‌ها، به تعداد کمی از آیتم‌های انتخاب‌شده به‌شکل شبه تصادفی از این حافظه پنهان بستگی دارند. برای اینکه یک ماینر باشید، باید کل این مجموعه داده را تولید کنید. همه کلاینت‌ها و ماینرها این مجموعه داده را ذخیره می‌کنند، به‌این‌ترتیب این مجموعه داده به‌شکل خطی در طول زمان رشد می‌کند.

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


    حفظ امنیت سیستم با استخراج


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

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

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

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


    توزیع ثروت با استخراج


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

    • یک پاداش ثابت ۲ اتری برای بلاک برنده؛
    • هزینه سوخت مصرف‌شده در بلاک توسط تراکنش‌های موجود در بلاک؛
    • یک پاداش اضافی برای وارد کردن اومرها به‌عنوان بخشی از بلاک.

    برای اطمینان از اینکه استفاده از سازوکار اجماع اثبات کار برای امنیت و توزیع ثروت در درازمدت پایدار باشد، اتریوم تلاش می‌کند تا دو ویژگی زیر را به‌تدریج به این الگوریتم اضافه کند:

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

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

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

    چیزی که در اینجا باید به آن توجه کنید این است که درحال‌حاضر، اتریوم در حال گذار از سازوکار اجماع اثبات کار به اثبات سهام است.


    پایان مجموعه تاپیک‌های اتریوم چگونه کار می‌کند


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

در حال نمایش 1 نوشته (از کل 1)
  • شما برای پاسخ به این موضوع باید وارد شوید.