یکی از جنبههای نوآورانه شبکه موناد، جداسازی فرآیند اجرا از فرآیند اجماع است. به طور خلاصه، اجماع فرآیندی است که گرههای موناد برای ترتیب رسمی تراکنشها با هم توافق میکنند، در حالی که اجرا فرآیندی است که تراکنشها را اجرا میکند و وضعیت را بهروز میکند. در اجماع موناد، گرهها برای ترتیب رسمی تراکنشها با هم توافق میکنند، اما هیچ یک از گرههای رهبر یا تأیید کننده تا به حال تراکنشها را اجرا نکردهاند.
به عبارت دیگر، رهبر ترتیب را پیشنهاد میدهد، اما هنوز به ریشه وضعیت نتیجهای ندارد و گرههای تأیید کننده برای تأیید صحت بلاک بدون دانستن (برای مثال) اینکه آیا تمامی تراکنشهای موجود در بلاک بدون بازگشت اجرا میشوند یا نه، رای میدهند.
چگونه این اتفاق میافتد؟ و چرا موناد این کار را انجام میدهد؟
پاسخ یکی از اصولیترین بخشهای طراحی موناد است و این امکان را برای موناد فراهم میکند که سرعت بسیار بالایی را به دست آورده و به گونهای که یک بلاکچین با یک شارد به میلیونها کاربر مقیاس پذیر باشد.
برای تجربه بهتر در مقالات به زبان فارسی (اقدام کنید : نصب استایل فارسی برای خوندن مقالات فارسی)
درآمیختن اجرا و اجماع باعث ناموفقیت میشود
در اتریوم، اجرا شرط پیش نیاز برای اجماع است، بنابراین وقتی گرهها درباره یک بلاک به اجماع میرسند، هم به لیست تراکنشهای موجود در بلاک و هم به ریشه مرکل خلاصهسازی کلیه وضعیت پس از اجرای آن لیست تراکنشها، میپردازند. به عبارت دیگر، رهبر باید تمامی تراکنشهای موجود در بلاک پیشنهادی را قبل از به اشتراک گذاشتن پیشنهاد، اجرا کند و گرههای تأیید کننده باید قبل از پاسخ دادن با اجرای تراکنشها موافقت کنند.
در این الگو، بودجه زمانی برای اجرا بسیار محدود است، زیرا باید دوبار اجرا شود و کافی باشد برای چندین دور ارتباطات جهانی برای اجماع. علاوه بر این، از آنجایی که اجرا اجماع را مسدود میکند، باید حداکثر مقدار گاز را انتخاب کرد تا اطمینان حاصل شود که محاسبه در تمامی گرهها در بودجه حتی در بدترین حالت به پایان میرسد.
ترتیب تعیین شده، تعیین پذیری وضعیت را نشان میدهد
این مشاهده آشکار اما بسیار حائز اهمیت است: با وجود ترتیب رسمی تراکنشها، وضعیت واقعی به طور کامل تعیین میشود. برای آشکار کردن حقیقت، اجرا لازم است، اما حقیقت قبلاً تعیین شده است.
موناد با حذف نیاز گرهها به اجرا قبل از اجماع، از این مشاهده بهره میبرد. توافق گرهها کاملاً درباره ترتیب رسمی است؛ هر گره تراکنشهای بلاک N را به صورت مستقل اجرا میکند در حالی که به اجماع در بلاک N+1 میپردازد.
این امکان را برای بودجه گس مطابق با زمان کامل بلاک فراهم میکند، زیرا اجرا فقط باید با اجماع همراه باشد. علاوه بر این، این رویکرد بیشتر از تغییرات زمان محاسبه دقیق متفاوت تحمل میکند، زیرا اجرا فقط باید به طور میانگین با اجماع همراه باشد.
ریشههای مرکل تأخیری همچنان اطمینان از تکثیر ماشین وضعیت را میدهند
اعتراضات اصلی که ممکن است در مورد موارد فوق وجود داشته باشد عبارتند از:
چه اتفاقی میافتد اگر یکی از گرهها نادرست باشد، بنابراین تراکنشهای دقیقاً مشخص شده در اجماع را اجرا نمیکند؟ (به عنوان مثال، برخی از تراکنشها را حذف میکند یا فقط متغیر وضعیت را به مقدار خود تعیین میکند.)
چه اتفاقی میافتد اگر یکی از گرهها در اجرا اشتباه کند؟
برای پاسخ به این نگرانیها، در موناد، پیشنهادهای بلاک شامل یک ریشه مرکل با تأخیر D بلاک هستند، که D یک پارامتر سیستمی وسیع است (در حال حاضر پیشبینی شده است که 10 باشد). به علت این ریشه مرکل با تأخیر، عواقب زیر رخ میدهد:
بعد از آنکه شبکه به اجماع (رای اکثریت 2/3) درباره بلاک N میرسد، به این معنی است که شبکه موافقت کرده است که نتیجه رسمی بلاک N-D، یک وضعیت است که ریشه مرکل آن M است. کلاینتهای سبک میتوانند سپس برای اثباتهای مرکل از مقادیر متغیرهای وضعیت در بلاک N-D از گرههای کامل پرس و جو کنند.
هر گرهای که در بلاک N-D خطا در اجرا داشته باشد، از اجماع در بلاک N خارج میشود. این باعث میشود که روی آن گره به حالت نهایی بلاک N-D-1 برگردد، سپس تراکنشهای بلاک N-D را مجدداً اجرا کند (امیدواریم که منجر به تطابق ریشه مرکل شود)، سپس تراکنشهای بلاک N-D+1، N-D+2 و غیره را مجدداً اجرا کند.
رویکرد اتریوم از اجماع برای اعمال تکثیر ماشین وضعیت به روشی بسیار سختگیرانه استفاده میکند: پس از آنکه گرهها به اجماع میرسند، میدانیم که اکثریت سوپر درباره ترتیب رسمی و وضعیت ناشی از آن توافق دارند. با این حال، این سختگیری با هزینه بسیار بالایی همراه است — تراکنشهای بسیار محدود. موناد این سختگیری را کمی کاهش میدهد، با تأثیر بسیار خوبی.
در مورد پایداری
در MonadBFT، پایداری در یک اسلات (1 ثانیه) انجام میشود و نتیجه اجرا در اغلب موارد کمتر از 1 ثانیه بعد از استفاده از یک گره کامل قابل مشاهده است. بیایید کمی بررسی کنیم.
پایداری در موناد در یک اسلات (1 ثانیه) انجام میشود. اگر یک تراکنش را ارسال کنید، پس از یک بلاک، ترتیب رسمی تراکنش (بین تمام تراکنشهای دیگر) را خواهید دید. بدون هیچ امکانی برای تغییر ترتیب، به جز در صورتی که اکثریت شبکه نادرست (غیرمجاز) باشد. این باعث میشود که پایداری موناد به طور قابل توجهی سریعتر از اتریوم باشد (2 دوره، یعنی 12.8 دقیقه).
نتیجه اجرای یک تراکنش (آیا موفق بود یا نه؟ موازنه بعد از آن چگونه است؟) در اغلب موارد کمتر از 1 ثانیه پس از پایداری در گرههای کامل قابل مشاهده است. هر کسی که نیاز به دانستن نتیجه یک تراکنش به سرعت دارد (به عنوان مثال، یک معاملهگر با فراوانی بالا که میخواهد وضعیت یک سفارش را بداند) میتواند یک گره کامل اجرا کند. موناد برای کمینه کردن هزینه گرههای کامل طراحی شده است.
هر کسی که میخواهد بدون اجرای یک گره کامل به ایمنی نتیجه یک تراکنش پرس و جو کند، میتواند یک کلاینت سبک را اجرا کند در حالی که با استفاده از مجوزهای مرکلی به گره کامل برای موازنه پرس و جو میکند. در این صورت، پرس و جوها توسط ریشه مرکل (D = 10 بلاک، یعنی 10 ثانیه) تاخیر خواهند کرد. لازم به ذکر است که بیشتر کاربران در حال حاضر وضعیت بلاکچین را با استفاده از نرمافزار (مرورگر) کیف پول یا از طریق یک بلاک اکسپلورر مشاهده میکنند. هیچ یک از این الگوهای استفاده شده، شامل یک کلاینت سبک نیست.
بعضی از خوانندگان ممکن است با تاخیر ریشه مرکل (D = 10 بلاک) با پایداری اشتباه کنند و به اشتباه فرض کنند که پایداری 10 بلاک است. این درست نیست. ترتیب رسمی تراکنش پس از 1 بلاک تعیین میشود و پس از آن هیچ بازگشتی بدون رفتار بیزانسی از اکثریت شبکه وجود نخواهد داشت.
شبکه اجتماعی دیسکورد بلاکچین موناد