پرش به محتوای اصلی

کمک برای به روز رسانی این صفحه

🌏

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

ترجمه صفحه
انگلیسی را ببینید

اینجا هیچ اشکالی وجود ندارد!🐛

این برگه هنوز ترجمه نشده است. ما به عمد این برگه را فعلاً به زبان انگلیسی رها کرده‌ایم.

بلوک‌ها

آخرین ویرایش: , Invalid DateTime
ویرایش صفحه
(opens in a new tab)

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

پیش‌نیازها

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

چرا بلوک‌ها؟

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

یک نمودار که تراکنش‌های یک بلوک که باعث تغییر وضعیت می‌شوند را نشان می‌دهد (opens in a new tab) نمودار برگرفته از Ethereum EVM illustrated(opens in a new tab)

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

بلوک‌ها چگونه کار می‌کنند

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

زمانی که یک بلوک توسط یک استخراج‌گر روی شبکه گردآوری شد (استخراج شد)، میان بقیه‌ی افراد شبکه پخش می‌شود؛ همه‌ی گره‌ها این بلوک را به انتهای زنجیره‌ی بلوکی خود اضافه می‌کنند و استخراج ادامه می‌یابد. این فرایند بلوک‌چینی (استخراج) و فرایند کامیت/وفاق به نام پروتکل «اثبات کار» اتریوم شناخته می‌شود.

یک نسخه‌ی آزمایشی تصویری

پروتکل اثبات کار

اثبات کار به معنای زیر است:

  • گره‌های استخراج باید میزان متغیر اما قابل‌توجهی انرژی، زمان و توان پردازشی را برای ساختن «گواهی مشروعیت» برای پیشنهاد یک بلوک به شبکه خرج کنند. این کار کمک می‌کند که در شبکه حملات اسپم/ممانعت از خدمات رخ ندهد، چون تهیه‌ی این گواهی‌ها هزینه‌بر است.
  • سایر استخراج‌گران که درباره‌ی بلوک جدید با یک گواهی مشروعیت معتبر شنیده‌اند باید بلوک جدید را به عنوان بلوک بعدی زنجیره‌ی بلوکی بپذیرند.
  • زمان دقیق برای هر استخراجگر برای رسیدن به این گواه یک متغیر رندوم با واریانس بالا است. با این کار اطمینان حاصل می‌شود که احتمال این که دو استخراج‌گر همزمان یک بلوک را پیشنهاد دهند پایین باشد؛ وقتی که یک استخراج‌گر یک بلوک جدید گواهی‌شده را می‌سازد و پخش می‌کند، می‌توانند تقریباً مطمئن باشند که این بلوک بدون تعارض توسط شبکه به عنوان بلوک جدید زنجیره‌ی بلوکی پذیرفته می‌شود (هر چند که پروتکلی برای حل مشکل تعارض و مشکل ساخت دو زنجیره‌ی همزمان برای دو بلوک گواهی‌شده وجود دارد).

اطلاعات بیشتر درباره استخراج

چه چیزی در یک بلوک است؟

  • برچسب زمان - زمانی که بلوک استخراج شده است.
  • blockNumber - تعداد بلوک‌های درون زنجیره بلوکی.
  • کارمزد پایه بر گاز - کمترین میزان کارمزد بر گاز لازم برای هر تراکنش که داخل بلوک بیاید.
  • سختی - توان لازم برای استخراج بلوک.
  • mixHash - یک شناسه‌ی یکتا برای آن بلوک.
  • هش پدر یک مشخص‌کننده‌ی یکتا برای بلوکی که قبل از این بلوک آمده است (بلوک‌ها در یک زنجیره این‌گونه به هم متصل هستند).
  • تراکنش‌ها - تراکنش‌های درون بلوک.
  • ریشه‌ی وضعیت - وضعیت کلی سیستم: موجودی حساب‌ها، حافظه‌ی قراردادها، کد قراردادها و nounceهای حساب‌ها در آن هستند.
  • نانس - یک هش که وقتی با mixHash ترکیب می‌شود اثبات می‌کند که بلوک از اثبات کار گذشته است.

زمان بلوک

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

اندازه‌ی بلوک

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

بیشتر بدانید

آیا منبعی اجتماعی می‌شناسید که به شما کمک کرده باشد؟ این صفحه را ویرایش کنید و آن را اضافه کنید!

آیا این مقاله مفید بود؟