اتریوم چگونه کار می‌کند(۵) – بلاک‌ها

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

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

    قسمت چهارم


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


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

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

    بلاک‌ها


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

    در اتریوم، یک بلاک از مؤلفه‌های زیر تشکیل شده است:

    • سربرگ بلاک؛
    • اطلاعاتی درباره مجموعه تراکنش‌هایی که در آن بلاک قرار دارند؛
    • مجموعه‌ای از سربرگ‌های بلاک‌های دیگر برای اومِرهای بلاک فعلی.

    اومر (Ommer) چیست؟


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

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

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

    بلاک‌های اومر نسبت به بلاک‌های کامل پاداش کمتری دریافت می‌کنند. بااین‌حال، همین مقدار پاداش هم مشوقی است که می‌تواند ماینرها را ترغیب کند برای رسیدن به آن، این بلاک‌های یتیم را وارد کنند.


    سربرگ بلاک


    بیایید یک لحظه به بلاک‌ها برگردیم. قبلا گفتیم که هر بلاک یک سربرگ بلاک دارد، اما این سربرگ بلاک دقیقا چیست؟

    سربرگ بلاک، بخشی از بلاک است که دارای اجزای زیر است:

    • هش پدر (parentHash): هش سربرگ بلاک پدر (همان چیزی که مجموعه بلاک‌ها را به یک زنجیره تبدیل می‌کند)؛
    • هش اومر (ommersHash): هش فهرست اومرهای بلاک فعلی؛
    • ذی‌نفع (beneficiary): آدرس حسابی که کارمزدهای استخراج این بلاک را دریافت می‌کند؛
    • ریشه حالت (stateRoot): هشِ نودِ ریشه از درخت مرکلِ حالت (گفتیم که درخت حالت در سربرگ ذخیره می‌شود و تأیید این حالت را برای لایت کلاینت‌ها آسان می‌کند)؛
    • ریشه تراکنش‌ها (transactionsRoot): هشِ نود ریشه درخت که حاوی تمام تراکنش‌های فهرست‌شده در این بلاک است؛
    • ریشه رسیدها (receiptsRoot): هشِ نود ریشه درخت که حاوی رسیدهای تمام تراکنش‌های فهرست‌شده در این بلاک است؛
    • بلوم لاگ‌ها (logsBloom): یک فیلتر بلوم (ساختار داده) که حاوی گزارش اطلاعات است (کاربرد فیلتر بلوم در کامپیوتر، کاهش بار سرور و در عین حال استفاده اندک از حافظه است)؛
    • سختی (difficulty): سطح دشواری استخراج یک بلاک؛
    • شماره (number): شماره بلاک فعلی (به‌عنوان‌مثال شماره بلاک جنسیس صفر است؛ برای رسیدن به شماره بلاک بعدی باید شماره هر بلاک را یک واحد اضافه کنیم)؛
    • حد سوخت (gasLimit): حد سوخت فعلی به ازای هر بلاک؛
    • سوخت مورداستفاده (gasUsed): مجموع کل مقدار سوخت استفاده‌شده توسط تراکنش‌هایی که در این بلاک هستند؛
    • برچسب زمانی (timestamp): واحد زمانی این بلاک از آغاز؛
    • داده اضافی (extraData): هر اطلاعات اضافی که به این بلاک مربوط است؛
    • میکس‌هش (mixHash): نوعی هش که همراه با نانس ثابت می‌کنند که روی این بلاک محاسبات کافی انجام شده است؛
    • نانس (nonce): نوعی هش که وقتی با میکس‌هش ترکیب می‌شود، اثبات می‌کند که روی این بلاک محاسبات کافی انجام شده است.

    توجه کنید که هر سربرگ بلاک حاوی سه ساختار درختی به شکل زیر است:

    • درخت حالت (ریشه حالت)؛
    • درخت تراکنش‌ها (ریشه تراکنش‌ها)؛
    • درخت رسیدها (ریشه رسیدها).

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

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


    لاگ‌ها


    اتریوم این امکان را فراهم می‌کند که از طریق لاگ‌ها بتوان تراکنش‌ها و پیام‌های مختلف را پیگیری کرد. یک قرارداد می‌تواند با تعریف «رویدادهایی» که باید ثبت شوند یک لاگ ایجاد کند. لاگ شامل موارد زیر است:

    • آدرس حساب ایجادکننده لاگ؛
    • یک سری موضوعات که هر یک نشان‌دهنده رویدادهای متفاوتی هستند که توسط این تراکنش انجام شده‌اند؛
    • هر داده مرتبط با این رویدادها.

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


    رسید تراکنش


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

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

    سختی بلاک


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

    سختی بلاک روی نانس تأثیر می‌گذارد. نانس نوعی هش است که با استفاده از الگوریتم اثبات کار، در هنگام استخراج یک بلاک باید محاسبه شود.

    رابطه بین سختی بلاک و نانس از طریق فرمول ریاضی زیر به دست می‌آید:

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

    که در آن Hd همان سختی است.

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

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


    در قسمت‌های بعدی این مجموعه نیز با ما همراه باشید…


    قسمت ششم

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