یکی از بزرگترین مشکلات فناوری بلاک چین، مشکل «مقیاسپذیری» آن است. پروژههای بسیاری در سالهای اخیر تلاش کردهاند راهحلی برای این مشکل بیابند. مهمترینِ این پروژهها اتریوم است که در تلاش است با راهحلی بهنام دنک شاردینگ (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 میتواند به کاهش هزینهها با بهرهگیری از رولآپها به این فرایند کمک فراوانی کند.
سؤالات متداول
طرح دنک شاردینگ چیست؟
دنک شاردینگ چگونه کار میکند؟
دنک شاردینگ امکان برقراری ارتباط بین زیکی رولآپها (آربیتروم و آپتیمیزم) و لایه یک را فراهم میکند و مقیاسپذیری و سرعت هر تراکنش را در شبکه اصلی افزایش میدهد.
پروتودنک شاردینگ چیست؟