[ad_1]
یکی از بزرگترین مشکلات فناوری بلاک چین، مشکل «مقیاسپذیری» آن است. پروژههای بسیاری در سالهای اخیر تلاش کردهاند راهحلی برای این مشکل بیابند. مهمترینِ این پروژهها اتریوم است که در تلاش است با راهحلی بهنام دنک شاردینگ (Danksharding) مشکل مقیاسپذیری را حل کند. اما دنک شاردینگ چیست؟
اولین راهحلی که اتریوم در پاسخ به چالش مقیاسپذیری مطرح کرده بود، شاردینگ بود. بااینحال شاردینگ آنقدر پیچیده بود که پیادهسازی آن بهسادگی میسرنبود. بدین گونه، پیشرفتدهندگان اتریوم تلاش کردند معماری جدیدی برای شاردینگ معرفی کنند. این معماری جدید، دنک شاردینگ است. در این مطلب به این سؤال که دنک شاردینگ چیست پاسخ میدهیم و به بررسی پروتو دنک شاردینگ و اینکه چگونه میتوانند مشکل مقیاسپذیری را حل کنند را میپردازیم. با ما همراه باشید.
شاردینگ چیست؟
همانطور که میدانیم، اتریوم یک پلتفرم غیرمتمرکز است که به کاربران اجازه ساخت و اجرای اپلیکیشنهای متفاوتی روی بلاک چین خود میدهد. با افزایش محبوبیت اتریوم، تعداد تراکنشهای آن هم افزایش یافت و ازدحام زیادی در شبکه آن ایجاد شد. به همین علت اتریوم نتوانست پاسخگوی نیازهای کاربران باشد. درکنار شرایط نامطلوبی که برای کاربران به وجود آمد، کارمزدهای تراکنشها یعنی مقدار گس (Gas) هم بهشکلی غیرمنطقی بالا رفت که سبب شد برخورد کاربران با این شبکه نهتنها دشوار بلکه هزینهبر هم باشد. همه اینها، پیشرفتدهندگان اتریوم را بر آن داشت که راهحلهای جدیدی برای این مشکل پیدا کنند. اولین راهحل شاردینگ بود.
شاردینگ در اتریوم بهمعنای تقسیم بلاک چین به بخشهای کوچکتری به نام شارد است. البته شاردینگ معنی جدیدی نیست و فقط به اتریوم اختصاص ندارد؛ چون در شبکههای سنتی هم برای مدیریت پایگاه دادهٔ متمرکز از تکنیک شاردینگ استفاده میکنند. با کمک شاردینگ، پیشرفتدهندگان میتوانند با توزیع یک تراکنش در چند شارد که بهشکل موازی کار میکنند، کارایی و مقیاسپذیری شبکه را افزایش دهند.
چرا فناوری شاردینگ برای بلاک چینها ضروری است؟
در بیشتر شبکههای بلاک چین، عموم نودها باید برای اعتبارسنجی تراکنشها به اجماع برسند. مشکلی که وجود دارد این است که این شبکهها تنها میتوانند تعداد کمی از تراکنشها را بهروش همزمان پردازش کنند. در کنار این، نودها بیشتر اوقات باید کل تاریخچه یک بلاک چین را ذخیره کنند. این نکته برای تمرکززدایی بلاک چینهایی مثل بیتکوین و اتریوم و امنیت آنها دربرابر رفتارهای کلاهبردارانه حیاتی است. بااینحال، طبق سهگانه مقیاسپذیری که ویتالیک بوترین، خالق اتریوم، مطرح کرد، تمرکززدایی و امنیت بالا در این شبکهها نیازمند قربانیکردن امکانهای مقیاسپذیری است و بالعکس.
در نتیجه، چگونه شبکههای بلاک چینی میتوانند مشکل مقیاسپذیری را بدون اینکه به امنیت و تمرکززدایی آنها آسیب برسد حل کنند؟ اینجاست که شاردینگ وارد میگردد. ازطریق شاردینگ، نودها نیازی به دانلود کل تاریخچه زنجیره و اعتبارسنجی تمام تراکنشهای شبکه نخواهند داشت. درنتیجه، با اجرای همزمان تراکنشها، شبکهها کارآمدتر و مقیاسپذیرتر میشوند و تأثیر مثبتی بر تجربه کاربر میگذارند.
دنک شاردینگ چیست؟
همانطور که گفتیم، شاردینگ برای پیادهسازی بسیار دشوار و پیچیده بود. به همین علت، یکی از پژوهشگران برجسته اتریوم بهنام دنکراد فیست (Dankrad Feist)، طرح پیشنهادی جدیدی برای شاردینگ در اتریوم عرضه کرد که دنک شاردینگ (Danksharding) نام دارد. درواقع دنک شاردینگ نوعی معماری جدید برای پیادهسازی شاردینگ است و این کار را توسط جداسازی سازنده/ پیشنهاددهنده بلاک انجام خواهد داد. این طرح درمقایسهبا طرحهای پیشنهادی قبلی، جریان کار را بهشکل برجستهی سادهتر میکند.
فرق اصلی بین همه طرحهای پیشنهادی شاردینگ برای اتریوم که از سال ۲۰۲۰ تا این ساعت ارائه شدهاند با طرحهای پیشنهادی شاردینگ غیر اتریومی، این است که دنک شاردینگ یک راهحل رولآپمحور (rollup-centric) است. دنک شاردینگ بهجای اینکه فضای بیشتری برای تراکنشها فراهم کند، از بلابها استفاده میکند که فضای ذخیرهسازی پویا و بسیار بزرگ درحد ۱۲۵ کیلوبایت است. اگر نمیدانید رولآپ و بلاب چه هستند، نخست توضیح مختصری را که درباره آنها دادهایم بخوانید و بعد ازآن مطلب را دنبال کنید.
بلاب چیست و چه ارتباطی با رولآپها دارد؟
رولآپ (rollup) یکی از راهکارهای لایه دوم برای بهبود مقیاسپذیری شبکه بلاک چین است. رولآپها با کمک قراردادهای هوشمند، تراکنشها را خارج از زنجیره اصلی بلاک چین اجرا میکنند تا در شبکه تراکم ایجاد نشود. بعد ازآن اطلاعات نهایی را به شبکه اصلی ارسال میکنند.
بلاب (blob) مخفف Binary Large Object است و محلی است که اطلاعات در آن ذخیره میشوند. میتوان آن را مشابه بلاک دانست؛ اما با آن فرقهایی هم دارد. برخلاف بلاکها که برای همیشه در شبکه ذخیره میشوند و برای ماشین مجازی اتریوم (EVM) قابلمشاهدهاند، بلابها فقط برای مدتزمان کوتاهی در دسترس هستند و ماشین مجازی اتریوم قادر به مشاهده آنها نیست. ضمناً، بلابها بهجای لایه اجرا که حجم محاسباتی سنگینی دارد، در لایه اجماع اتریوم قرار میگیرند. تأیید یک بلاب بسیار ساده است و فقط نیازمند بررسی دردسترسبودن آن بلاب یعنی امکان دانلودکردن آن از شبکه است. یعنی لایه اجرا، نیازی به جزئیات اطلاعات بلاب ندارد و کافی است الزامات اطلاعات را بداند. گفتنی است ازآنجاکه ماشین مجازی اتریوم مستقیماً به اطلاعات دسترسی ندارد، اجرای این نوع تراکنشها مقرونبهصرفهتر خواهد بود.
اما چه ارتباطی بین بلاب و رولآپ وجود دارد؟ قرار است پروتکلهای رولآپ لایه دوم که درحالحاضر از کالدیتا (calldata) برای ارسال اطلاعات آنچین استفاده میکنند، بعد از پیادهسازی دنک شاردینگ، از فضای داده در این بلابها استفاده کنند. البته باید به این نکته اشاره کنیم که کالدیتا گس بسیار زیادی مصرف میکند.
دنک شاردینگ چگونه کار میکند؟
طرح دنک شاردینگ پیچیدگیهایی دارد که در حیطه این مقاله نیست؛ بااینحال میتوان چهارچوب کلی آن را توضیح داد. برای درک نکته، نخست بد نیست مختصری درباره سازنده بلاک (Block Builder) و پیشنهاددهنده (Proposer) بدانیم.
سازندگان بلاک نودهایی هستند که کار پردازش و ساخت بلاک را بر عهده دارند. پیشنهاددهندگان نودهایی هستند که صرفا هدرهای تراکنشها را مشاهده میکنند و نمیتوانند بدنه بلاک را ببینند. در سیستم کنونی اتریوم، سازنده بلاک و پیشنهاددهنده یکی است و درواقع، همان اعتبارسنجهایی هستند که قبل از مرج آنها را بهعنوان ماینر میشناختیم.
اما در دنک شاردینگ قرار است سازندگان بلاک از پیشنهاددهندگان متمایز باشند. در سیستم بر پایه جداسازی پیشنهاددهنده/ سازنده (PBS)، دستهای جدید و تخصصی از نودها را داریم که سازنده بلاک خواهند بود و اعتبارسنجها همان پیشنهاددهندگان هستند.
سازندگان بلاک فهرستی از تراکنشها را انتخاب و بعد از مشخصکردن کارمزد، آنها را در فضاهایی بهنام اسلات انباشته میکنند. بعد ازآن این اسلاتها را به پیشنهاددهندگان میسپارند تا آنها براساس بالاترین قیمت پیشنهادی، تراکنشها را انتخاب کنند. شاید بتوان از پروتکلهای اوراکل غیرمتمرکز شخص ثالث بهعنوان سازنده بلاک استفاده کرد.
بعد از اینکه پیشنهاددهنده با موفقیت یک بلاک را انتخاب کرد، سازنده بلاک کل اطلاعات آن را پردازش میکند. اما پیشنهاددهندگان نیازی به این کار ندارند و با استفاده از روش «نمونهگیری در دسترسبودن داده»، فقط از تعدادی اطلاعات نمونه میگیرند و براساس آن، مقادیر زیادی از آنها را تأیید میکنند. این خاصیت به شبکه اتریوم کمک میکند سریعتر و ارزانتر از همیشه باشد.
نوآوری اصلی دنک شاردینگ معنیی با نام بازار کارمزد ادغام شده (Merged Fee Market) است. این بدان معناست که در دنک شاردینگ، بهجای تعداد ثابتی از شاردها که هریک دارای بلاکهای مجزا و پیشنهاددهندگان مجزا هستند، فقط یک پیشنهاددهنده وجود دارد که همه تراکنشها و اطلاعاتی را که در یک اسلات قرار میگیرند انتخاب میکند.
علت اصلی عرضه طرح پیشنهادی دنک شاردینگ
علت اصلی پشت طراحی دنک شاردینگ، حل مشکل مقیاسپذیری در بلاک چین اتریوم است. افزایش محبوبیت اتریوم بین کاربرانی که اپلیکیشنهای غیرمتمرکز را روی بلاک چین آن ساخته و اجرا میکنند، سبب ازدحام در شبکه، کُندی آن و بالارفتن کارمزدهای تراکنش شده است. این مشکل سبب میگردد.کاربران نتوانند بهروشای مقرونبهصرفه با شبکه برخورد برقرار کنند.
برای پاسخ به این چالش، دنک شاردینگ شبکه را به چند شارد تقسیم میکند. هر شارد، خود یک بلاک چین مجزاست که بهشکل مستقل عمل میکند و امکان پردازش موازی تراکنشها را فراهم میآورد. با این کار، شبکه اصلی میتواند هزاران تراکنش در ثانیه انجام دهد و کارآمدتر باشد.
از طرفی، در دنک شاردینگ سازنده بلاک و پیشنهاددهنده دو وظیفه جدا از هم هستند. هرچند پیشنهاددهندگان در ساخت بلاک دخالت ندارند، ازطریق نمونهگیری در دسترس بودن داده، به بلاکها رأی میدهند. این کار سبب میگردد.پروسه اعتبارسنجی بلاکها بهشکلی توزیعشده و غیرمتمرکز انجام شود؛ علیرقم اینکه ساخت هر بلاک بهشکل متمرکز صورت میگیرد.
از دیگر علل طراحی دنک شاردینگ، افزایش تمرکززدایی و محدودکردن قدرت ناعادلانه ماینرها و جلوگیری از معنی بیشترین مقدار قابل استخراج (MEV) است.
اصطلاح MEV کوتاهشده عبارت Maximal Extractable Value است که به بیشترین مقدار ارز دیجیتالی که ماینرها میتوانند از تراکنشها به دست آورند اشاره دارد. ازآنجاکه ماینرها میتوانند حذف و اضافهشدن تراکنشها را کنترل کنند، شاید با تغییر ترتیب تراکنشها در داخل بلاکی که تولید میکنند و انتخاب تراکنشهایی با قیمت پیشنهادی بالاتر، پاداش یا کارمزد بیشتری برای خود فراهم کنند. این کار سبب میگردد.میلیونها تراکنش دیگر ساعتها یا روزها در ممپول (Mempool) بلاتکلیف بمثل و مجبور شوند کارمزدهای بالاتری پرداخت کنند.
با دنک شاردینگ هیچکس از محتوای تراکنشهای سفارشی که سازنده بلاک عرضه میکند خبر ندارد. در نتیجه ماینرها یا همان پیشنهاددهندگان نمیتوانند بهمیل خودشان ترتیب تراکنشها را تغییر دهند و سودهای ناعادلانه کسب کنند.
مشکل دنک شاردینگ چیست؟
درحالحاضر دنک شاردینگ به دلیل استفاده زیاد از حافظه دچار مشکلاتی است. فیست این مقدار را ۲.۵ ترابایت در سال محاسبه کرده است. این مقدار حافظه بسیار بیشتر از چیزی است که اتریوم بعد از مرج استفاده میکند. از طرفی، با اینکه دنک شاردینگ راهحلی شگفتانگیز گویا، رسیدن به حد اعلای آن هنوز دور از ذهن است و شبکه اتریوم به سالها زمان نیاز دارد تا پروسه شاردینگ را بهروشکامل پیادهسازی کند. به همین علت، طرح پیشنهادی پروتو دنک شاردینگ معرفی شد.
پروتو دنک شاردینگ چیست؟
همانطور که گفتیم، دنک شاردینگ مشکلاتی دارد که باید قبل از آمادهشدن شبکه برای پذیرش کامل آن، حل شوند. به این منظور، راهحل پروتو دنک شاردینگ که به EIP-4844 هم معروف است، معرفی شد. همانطور که احتمالاً میدانید، EIP مخفف طرح پیشنهادی برای بهبود اتریوم است.
این طرح پیشنهادی، قرار است نمونه اولیهای از دنک شاردینگ را پیادهسازی کند. هدف از EIP-4844 این است که قبل از پیادهسازی دنک شاردینگ، منطق پشت آن و مشخصات کامل آن ازجمله فرمتهای تراکنش، قوانین تأیید و تعدیل هزینههای گس را به بوته آزمایش بگذارد. البته این طرح در بر گیرنده اجرای واقعی شاردینگ نیست و درواقع اصلا شاردینگ در آن اتفاق نمیافتد. به همین علت، در پروتو دنک شاردینگ تمام اعتبارسنجها کماکان باید کل اطلاعات بلاکها را پردازش کنند.
مهمترین ویژگی پروتو دنک شاردینگ چیست؟
بارزترین ویژگی پروتو دنک شاردینگ، معرفی نوعی تراکنش جدید است. این تراکنشهای جدید، تراکنشهای حامل بلاب نامیده میشوند. تراکنشهای حامل بلاب، کاملاً شبیه تراکنشهای معمولی هستند؛ اما بخشی اضافی از اطلاعات را که بلاب نامیده میشوند و درباره آنها صحبت کردیم، با خود حمل میکنند.
در دنک شاردینگ پهنای باند، ۱۶ مگابایت کامل بود؛ اما ازآنجاکه اعتبارسنجها و کلاینتها هنوز باید کل محتویات بلابها را دانلود کنند، پهنای باند در پروتو دنک شاردینگ باید کمتر باشد. این مقدار، فقط ۱ مگابایت در هر اسلات است. این مقدار کوچک است اما همین مقدار کوچک تأثیر بزرگی خواهد داشت؛ چون تراکنشهای روی راهحلهای بر پایه رولآپ، احتمالاً تا ۲۰ برابر ارزانتر از تراکنشهای معمولی خواهند شد. درحالحاضر بلاکها تقریباً میتوانند ۵۰ تا ۱۰۰ کیلوبایت داده را حمل کنند؛ در نتیجه ۱ مگابایت در دسترس، هزینههای تراکنشهای روی رولآپها را کاهش خواهد داد. شایان ذکر است در طرح پیشنهادی پروتو دنک شاردینگ، قانونی قرار دادهاند که بهموجب آن، اطلاعات بلاب روی شبکه بعد از ۳۰ روز حذف خواهند شد. در نتیجه اطلاعاتی که دیگر نیازی به آنها نیست، سرانجام از بلاب خارج میشوند و فضا آزاد میکنند.
حال که با پروتو دنک شاردینگ یا EIP-4844 آشنا شدیم، بد نیست نگاهی دقیقتر هم به EIP-4488 داشته باشیم و شباهت و فرق این دو پیشنهاد بهبود اتریوم را بررسی کنیم.
پیشنهاد EIP-4488 و شباهت آن با پروتو دنک شاردینگ چیست؟
درست مثل پروتو دنک شاردینگ، طرح پیشنهادی EIP-4488 هم میخواهد مشکل مقیاسپذیری اتریوم را حل کند؛ ولی نسخه نخستییتر و سرراستتری نسبتبه آن است. هدف این طرح پیشنهادی آن است که این کار را با دو قانون ساده انجام دهد:
- محدودیت ۱ مگابایت در هر بلاک، بهاضافه ۳۰۰ بایت اضافی در هر تراکنش (بهروشیکه روی کاغذ حداکثر به ۱.۴ مگابایت برسد)
- کاهش گس راجع به کالدیتا از ۱۶ گس بهازای هر بایت به ۳ گس بهازای هر بایت
این محدودیت، سادهترین روش ممکن برای اطمینان از این نکته است که اگر متوسط بار روی بلاک را هرچقدر بیشتر افزایش دهیم، به بار حداکثری روی بلاک منجر نخواهد شد. کاهش هزینه گس بهمقدار زیادی کاربرد رولآپها را افزایش میدهد و احتمالاً متوسط اندازه بلاک به صدها کیلوبایت افزایش خواهد یافت، اما بهعلت محدودیت هرگزاین مقدار به ۱۰ مگابایت نخواهد رسید. یعنی با این پروتکل اندازه بلاک در بدترین حالت به ۱.۴ مگابایت میرسد که حتی از مقدار کنونی ۱.۸ مگابایت کمتر خواهد بود.
به همین ترتیب، پروتو دنک شاردینگ (EIP-4844) هم در تلاش است هزینههای گس کالدیتا را کاهش دهد. البته این راهحل کوتاهمدت است؛ چون اگر شاردینگ بهروشکامل اجرا شود، این راهحل غیرضروری خواهد بود. علت این نکته آن است که شاردها از بلابها استفاده میکنند؛ در نتیجه کالدیتایی وجود نخواهد داشت که کاهش کارمزد آن اهمیتی داشته باشد.
پروتو دنک شاردینگ، نوعی تراکنش جداگانه ایجاد میکند که میتواند اطلاعات را در بلابهایی با اندازه بزرگ با هزینه بسیار کمتر نگهداری کند. البته باید توجه داشت تعداد بلابهایی که میتواند در هر بلاک گنجانده شود محدود خواهد بود.
فرق بین EIP-4488 و EIP-4844
حال بیایید ببینیم فرق بین EIP-4488 و EIP-4844 چیست.
یکی از فرقهای اصلی بین EIP-۴۴۸۸ و EIP-4844 این است که پروتو دنک شاردینگ با کل وظیفهه راه شاردینگ همخوانی دارد؛ اما از آن طرف، EIP-4488 نیت دارد مشکل را بهسرعت حل کند.
فرق دوم این است که EIP-4488 تلاش میکند تغییراتی را که برای شبکه کنونی لازم است به حداقل برساند، درحالیکه پروتو دنک شاردینگ تغییرات بیشتری را در شبکه کنونی ایجاد میکند تا در آینده برای ارتقای شاردینگ کامل به تغییرات کمتری نیاز باشد. هرچند پیادهسازی شاردینگ کامل کاری پیچیده است، این پیچیدگی فقط در لایه اجماع وجود خواهد داشت. در نتیجه بعد از اجرای پروتو دنک شاردینگ، تیمهای لایه اجرا، پیشرفتدهندگان رولآپ و کاربران نیازی به انجام کار بیشتر برای تکمیل پروسه انتقال به شاردینگ کامل نخواهند داشت.
اطلاعات بلاب از کالدیتا جداست و ذخیره آنها برای مدتزمان کوتاهتر سبب میگردد.شبکهای مقیاسپذیرتر و کارآمدتر داشته باشیم. از طرفی، این بدان معنا نیست که قرار است این دو پروتکل بهبود را رقیب یکدیگر بدانیم. ازآنجاکه اجرای پروتو دنک شاردینگ شاید بهعلت ویژگیهای فنی مهندسی آن مدتی طول بکشد، EIP-4488 میتواند به کاهش هزینهها با به کارگیری از رولآپها به این پروسه کمک بسیاری کند.
سؤالات شایع
دنک شاردینگ نوعی معماری جدید برای پیادهسازی شاردینگ در اتریوم است که توسط جداسازی وظیفههای پیشنهاددهنده/ سازنده بلاک، میخواهد قدرت ماینرها در شبکه و بالاترین مقدار قابلاستخراج را کاهش دهد.
در دنک شاردینگ، سازندگان بلاک وظیفه پردازش کل اطلاعات را بر عهده دارند. وظیفه آنها این است که فهرستی از تراکنشها را انتخاب و بعد ازآن آنها را در اسلاتها انباشته کنند. بعد اسلاتها را به پیشنهاددهندگان واگذار میکنند تا تراکنشها را براساس بالاترین قیمت پیشنهادی انتخاب کنند.
دنک شاردینگ امکان برقراری ارتباط بین زیکی رولآپها (آربیتروم و آپتیمیزم) و لایه یک را فراهم میکند و مقیاسپذیری و سرعت هر تراکنش را در شبکه اصلی افزایش میدهد.
این طرح پیشنهادی قرار است نمونه اولیهای از دنک شاردینگ را پیادهسازی کند. هدف از آن، این است که قبل از پیادهسازی دنک شاردینگ، منطق پشت آن و مشخصات کامل آن ازجمله فرمتهای تراکنش، قوانین تأیید و تعدیل هزینههای گس را به بوته آزمایش بگذارد. البته این طرح در بر گیرنده اجرای واقعی شاردینگ نیست. به همین علت، در پروتو دنک شاردینگ تمام اعتبارسنجها کماکان باید کل اطلاعات بلاکها را پردازش کنند.