وقتی مرج اتریوم انجام شد، خیلیها فکر میکردند سرعت انجام تراکنشهای اتریوم فضایی میشود که این اتفاق نیفتاد. در واقع مرج فقط زمینه را برای گام مهم بعدی در نقشه راه اتریوم فراهم کرد؛ یعنی همان شاردینگ. اما از آنجایی که پیادهسازی شاردینگ در عمل دشوار بود، معماری جدیدی با نام دنک شاردینگ (Danksharding) پیشنهاد شد. اکنون منتظریم که پروتودنک شاردینگ (Protodanksharding) به عنوان نمونه اولیهای از این معماری جدید پیادهسازی شود. حالا که میهن بلاکچین این فرصت را در اختیار من قرار داده تا این مفاهیم جدید را بررسی کنم، در این ماجراجویی با من همراه میشوید تا ببینیم دنک شاردینگ چیست و اصلا چرا مطرح شد؟ مگر شاردینگ قبلی چه ایرادی داشت؟ چه تغییراتی در معماری شاردینگ قبلی قرار است اتفاق بیفتد؟ سوالات در مورد شاردینگ فراوان است و تا زمانی که پیادهسازیاش اتفاق نیفتد، همچنان ابهامات زیادی در آن وجود دارد.
نکات کلیدی مقاله:
• شاردینگ به معنای تقسیم بلاکچین به زنجیرههای مجزاست که موجب افزایش مقیاسپذیری میشود.
• دنک شاردینگ نوعی معماری جدید برای پیادهسازی شاردینگ در اتریوم است که به دنبال غلبه بر مشکل MEV است و این کار را از طریق جداسازی نقش پیشنهاددهندگان بلاک و سازندگان بلاک عملی خواهد کرد.
• پروتو دنک شاردینگ یک پیادهسازی اولیه از دنک شاردینگ ارائه میدهد که این کار از طریق معرفی تراکنشهای حامل بلاب انجام میشود.
• بلابها فرمتی از حافظه هستند که فضای زیاد و هزینه کمی دارند. رولاپها میتوانند از این حافظه برای ذخیره دادههای خود استفاده کنند.
دنک شاردینگ چیست و چرا مطرح شد؟
قصه از آنجا آغاز میشود که قرار بود مرج اتریوم، شاردینگ را هم در بر بگیرد که چنین نشد و حالا معماری جدیدی برای آن مطرح شده است. معمولا نسخه اولیه و قبلی با نام شاردینگ ۱.۰ مطرح میشود که مطابق آن بنا بود ۶۴ شارد داشته باشیم که زنجیرهای با نام بیکن چین (Beacon Chain) بر آنها نظارت میکند. همچنین به کمیتههایی (Committee) از اعتبارسنجها نیز در این سیستم نیاز داشتیم تا در دسترس بودن داده (Data Availability) را در هر زنجیره شارد تایید کنند.
این معماری آنقدر پیچیده بود که پیادهسازی شاردینگ را بسیار حساس و دشوار کرده بود. امکان داشت اعتبارسنجها در پشت پرده با هم تبانی کنند و دست به تایید بلاکهای نامعتبر بزنند. جابجایی اعتبارسنجها میان شاردهای مختلف هم خود مشکلات دیگری به وجود میآورد. پل زدن مداوم میان شاردها در مواقعی که به تعامل میان زنجیرههای شارد مختلف نیاز داشتیم، مشکل دیگری بود که ممکن بود سیستم را با مخاطرات جدی روبهرو کند. چنین مسائلی موجب شد که توسعهدهندگان اتریوم، شاردینگ ۱.۰ را کنار بگذارند. آنها تصمیم گرفتند مسئله را از طریق طرحی دیگر حل کنند که با نام دنک شاردینگ (Danksharding) یا به اختصار DS شناخته میشود. این طرح اسمش را مدیون محقق اتریوم یعنی Dankrad Feist است. در تصویر زیر تفاوت شاردینگ ۱.۰ و طرح پیشنهادی دنک شاردینگ را میبینید:
در معماری دنک شاردینگ یک سازنده بلاک داریم که با استفاده از سختافزارهای ویژه و گرانقیمت اقدام به ساخت بلاکهای بزرگ میکند. این کار باعث میشود ساخت بلاک متمرکز شود، اما در عوض اعتبارسنجی به عملی کاملا غیرمتمرکز تبدیل میشود. در ضمن این معماری در برابر سانسور هم مقاوم است. ولیدیتورها از طریق نمونهگیریِ در دسترس بودن داده (Data Availability Sampling) میتوانند به بلاکها رای بدهند. ویتالیک بوترین، پدر اتریوم هم در مقاله خود با نام Endgame به این مسئله اشاره کرده و از مسیری حرف میزند که برای به وقوع پیوستن بهترین اتفاق در اتریوم، باید از آن عبور کرد.
این تصویر ذهنیت ویتالیک را نشان میدهد. جایی که ساخت بلاکها متمرکز است، اما اعتبارسنجی به شکل توزیعشده، غیرمتمرکز، بدون نیاز به اعتماد و موازی انجام میشود.
معماری قبلی شاردینگ به دنبال ایجاد فضای بیشتری برای تراکنشها بود، ولی Danksharding از یک راهکار مبتنی بر رولاپ استفاده میکند. در این معماری جدید به کمک یک فضای ذخیرهسازی به نام بلاب (Blob)، امکان ذخیره دادههای بیشتری برای رولاپها فراهم میشود. به طور خلاصه باید گفت با پیدایش مفهوم دنک شاردینگ، زنجیرههای شارد جای خود را به بلابهای شارد دادند. این مسئله نشان میدهد که عملا چیزی به اسم شاردینگ به معنای قبلیاش در اتریوم اتفاق نمیافتد. جلوتر که برویم، درک این مسئله واضحتر میشود.
دنک شاردینگ چطور کار میکند؟
دلیل پیدایش دنک شاردینگ، غلبه بر MEV است. این کار با هدف کاهش متمرکز بودن شبکه و افزایش امنیت انجام میشود. رسیدن به این هدف از طریق جداسازی پیشنهاددهنده-سازنده بلاک (Proposer-Builder Separation یا PBS) و ایجاد فهرستهای مقاوم در برابر سانسور (crList) صورت خواهد گرفت. این دو مفهوم را در بخش بعدی بیشتر توضیح میدهم.
در سیستم فعلی اتریوم، ولیدیتورها (همان پیشنهاددهندگان) میتوانند تراکنشهایی با بالاترین کارمزد را انتخاب کنند. این کار باعث میشود میلیونها تراکنش دیگر برای ساعتها یا روزها در ممپول باقی بمانند که این امری ناعادلانه است و زمان انتظار برخی تراکنشها را افزایش میدهد. Danksharding اینجا میتواند نقشش را به خوبی ایفا کند؛ چرا که نمیگذارد پیشنهاددهندگان محتوای لیست تراکنشهایی که سازنده آنها را انتخاب کرده است، ببینند. به این ترتیب، قدرت اعتبارسنجها یا همان پیشنهاددهندگان در سودجویی از فرصتهای MEV کم میشود.
اگر از ریاضیات دل خوشی ندارید، باید بگویم من هم در تیم شما هستم؛ ولی ویتالیک و همراهانش با ما همعقیده نیستند. دنک شاردینگ از چندجملهایهایی با نام KZG commitments استفاده میکند. این چندجملهایها این امکان را فراهم میکنند که با دسترسی به بیش از ۵۰ درصد از نمونه یک دیتا، بتوان به کل ردیف یا بلاکها دسترسی پیدا کرد. این کار باعث صرفهجویی در پهنای باند شبکه میشود؛ چون لازم نیست اعتبارسنجها هر بار کل بلاک را دانلود و اعتبارسنجی کنند. به جای آن این عمل بارها توسط افراد مختلف انجام میشود و میتوان نتیجه گرفت که بلاک واقعا معتبر و در دسترس است.
آشنایی با چند مفهوم مرتبط با معماری جدید شاردینگ
حتی با وجود پیادهسازیهایی که در دنک شاردینگ پیشنهاد شده است، این مسئله باز هم پیچیده است. همینجاست که پای یک پیادهسازی ابتدایی با اسم پروتو دنک شاردینگ در EIP4844 به ماجرا باز میشود که این یکی نامش را از Proto Lambda امانت گرفته است. با پیادهسازی Proto-Danksharding، اتریوم یک قدم به پیادهسازی شاردینگ کامل نزدیک میشود. قبل از آنکه به سراغ پروتو دنک شاردینگ برویم، بهتر است چند اصطلاح را با هم مرور کنیم که به درک بهتر این پروپوزال کمک میکند.
بلاب (Blob)
قبل از اینکه بگوییم بلاب چیست، باید به رولاپها اشاره کنیم. رولاپها تراکنشها را به صورت آف چین (خارج از زنجیره) اجرا میکنند و به این ترتیب لایه پایه را درگیر محاسبات نمیکنند؛ اما همچنان دادههای تراکنش را روی زنجیره اصلی ارسال میکنند. ذخیره دادهها به صورت دائمی روی اتریوم بسیار هزینهبر است. رولاپها اکنون از Calldata برای ارسال دادههای آنچین استفاده میکنند که گس زیادی مصرف میکند؛ در نتیجه همچنان هزینهبر هستند و بلابها قرار است اوضاع را بهتر کنند.
Blob مخفف Binary Large Objects یا اشیای بزرگ دودویی است. بلابها در عین اینکه فضای ذخیرهسازی بیشتری فراهم میکنند، انجام تراکنش را در مقایسه با Calldata ارزانتر میکنند؛ چرا که این دادهها به جای لایه اجرا (که محاسبات زیادی روی آن انجام میشود)، روی لایه اجماع ذخیره میشوند و لایه محاسباتی کاری با جزئیات داده ندارد. یک بلاب معمولی به لحاظ ساختاری، از یک بدنه و یک هدر تشکیل شده است. بدنه بلاب همیشه قسمتهایی از داده را ذخیره میکند که مستقیما به تراکنش مربوط است. هدر نیز اطلاعات کمتری نظیر امضای پیشنهاددهنده یا برچسب زمانی را در دل خود جای میدهد. اگر جایی دیدید از Sharded Data یا دادههای شاردشده صحبت شده، بدانید که منظور همان بلاب است.
جداسازی سازندگان/ پیشنهاددهندگان (PBS)
گفتیم که در سیستم فعلی اتریوم، Proposer میتواند از موقعیتهای سودآوری مانند آربیتراژ یا MEV بهرهمند شود؛ اما با پیادهسازی PBS، این دو نقش جدا میشوند. سازندگان، بدنه بلاک (Exec Block Body) را تشکیل میدهند؛ یعنی لیستی از تراکنشها را به صورت مرتبشده تهیه میکنند و هدر بلاک مربوطه را برای اعتبارسنج میفرستند. محتوای بدنه بلاکها پیش از تایید شدن توسط پیشنهاددهنده، قابل نمایش نیست. اگر چنین بود، ممکن بود کاربر دیگری اقدام به فرانت رانینگ کند.
با توجه به اینکه اعتبارسنج نمیتواند بدنه بلاک را ببیند، پس باید چیزی وجود داشته باشد تا او را مجاب به رایدهی به بلاک کند. به همین خاطر سازنده باید مبلغی پیشنهاد دهد تا نظر ولیدیتور را جلب کند. با پیادهسازی این طراحی در شبکه اتریوم، سازندگان باید تمام بلاک را پردازش کنند و سایر ولیدیتورها و کاربران میتوانند بلوکها را از طریق نمونهگیری دسترسپذیری دادهها تایید کنند.
نقش سیستم فعلی اتریوم پس از PBS پیشنهاددهنده بلاک (Proposer) ساخت بلاکی از تراکنشها و انتشار آن روی بلاکچین. پیشنهاددهنده میتواند از میان تراکنشهای ممپول، آنهایی را انتخاب کند که Priority Fee بالاتری دارند. پیشنهاددهنده به بازیگر دیگری به نام سازنده بلاک متکی است؛ یعنی موجودیتی که وظیفه دارد دستهای از تراکنشها را انتخاب و کارمزد را هم برای پیشنهاددهنده مشخص کند تا پیشنهاددهنده دستهای را که بالاترین فی را دارد، انتخاب کند. سازنده بلاک (Builder) – کسی است که وظیفه ایجاد لیستی از تراکنشها و ارائه آن به Proposer را بر عهده دارد.
مفهوم crList
در یک بلاکچین سنتی، پیشنهاددهنده بلاک شخصی است که انتخاب میکند کدام تراکنشها در بلاک جا بگیرند. طبیعتا پیشنهاددهنده تراکنشهایی با فی بالاتر را در اولویت قرار میدهد؛ اما سازندگان بلاک در PBS لیستی از تراکنشها را در فرمتی خاص با نام Censorship-Resistance List یا crList از پیشنهاددهندگان دریافت میکنند. در این لیست مشخص شده است که سازنده باید کدام تراکنشها را بردارد. سپس سازنده بلاک میتواند ترتیب تراکنشها را مجددا تغییر دهد؛ اما نمیتواند چیزی را سانسور کند.
به بیان سادهتر، این لیست شامل تراکنشهایی است که پیشنهاددهندگان حدس میزنند سانسور شده باشند. یعنی این تراکنشها معتبر هستند ولی در چندین اسلات هنوز توسط هیچ سازندهای انتخاب نشدهاند. بیایید در نظر بگیریم که پیشنهاددهندگان به این مسئله شک کردهاند که سازندگان دارند تراکنشها را سانسور میکنند. به همین خاطر به کمک crList آنها را مجبور میکنند که از فضای بلاک خالی استفاده کنند. پیشنهاددهندگان خود نمیتوانند ترتیب خاصی برای سازندگان در نظر بگیرند.
اگر یکی از سازندگان این لیست را نادیده بگیرد و همچنان به سانسور تراکنشها ادامه دهد، Attstor بلاک او را رد میکند. Attestor اعتبارسنجی است که به صورت تصادفی انتخاب شده تا پس از آنکه اعتبارسنجها یک بلاک را پیشنهاد دادند، به آن بلاک رای دهند.
پروتو دنک شاردینگ (EIP-4844) چیست؟
پس از آنکه تاریخ احتمالی هاردفورک شانگهای اتریوم اعلام شد، اکنون بیش از پیش به پیادهسازی دنک شاردینگ نزدیک شدهایم. البته هیچکدام از تاریخهای اعلامی دقیق نیستند و واقعا مشخص نیست کی این اتفاقها میافتد. هنوز هم فاصله زیادی تا پیادهسازی شاردینگ کامل وجود دارد و همین مسئله منجر به ساخت EIP-4844 شده است که میتوانید آن را در لیست پروپوزالهای بهبود اتریوم هم مشاهده کنید. در تعریف این پروپوزال از عبارت Shard Blob Transactions استفاده شده است. چیزی که این EIP پیشنهاد میدهد، استفاده از دادههای شاردشده است؛ آن هم بدون آنکه واقعا چیزی به اسم شاردینگ اتفاق بیفتد.
هدف این پروپوزال، پیادهسازی تغییرات اساسی و به ویژه فرمت تراکنشهاست که برای اجرای شاردینگ کامل به آن نیاز داریم. ویژگی اصلی که Proto-Danksharding آن را معرفی کرده است، نوعی جدیدی از تراکنش با نام تراکنش حامل بلاب (Blob-Carrying Transaction) است. چنین تراکنشهایی مشابه یک تراکنش معمولی هستند؛ به جز اینکه قطعات اضافی داده با نام بلاب به همراه دارند. تراکنشهای بلاب همان فرمتی را دارند که انتظار میرود در نسخه نهایی شاردینگ نیز شاهد آنها باشیم. اکنون رولاپها از Call Data استفاده میکنند؛ اما در آینده چارهای جز این ندارند که به استفاده از دادههای شارد شده یا همان بلابها روی بیاورند. دلیل این امر هم ارزان بودن این بلابهاست که در بالا دلیل آن را توضیح دادیم.
سیستم اتریوم اکنون به شکلی است که هر تراکنش که گس بالاتری پیشنهاد دهد، شانس بیشتری دارد تا در یک بلوک جای بگیرد. اما پس از پروتو دنک شاردینگ، تراکنشهای حامل بلاب، کارمزد متفاوتی خواهند داشت و یک بازار کارمزد چندبعدی یا اصطلاحا بازار کارمزد ادغام شده (Merged Fee Market) برای آنها پیاده خواهد شد. به این ترتیب گس مورد استفاده برای تراکنشهای حامل بلاب از گس تراکنشهای معمولی جدا خواهد شد.
تغییر بزرگ این است که فقط و فقط سازنده بلاک باید تمام دادهها را پردازش کند؛ در حالی که اعتبارسنجهای شبکه، دسترسپذیری دادههای بلاکها را به کمک نمونهبرداری تایید میکنند. این کار باعث تایید حجم زیادی از دادهها بدون دانلود کل آنها میشود.
آیا پروتو دنک شاردینگ باعث کاهش هزینه گس میشود؟
به سادگی میتوان به این سوال پاسخ منفی داد. پروتو دنک شاردینک هزینههای گس اتریوم را کم نمیکند، اما هزینههای تراکنشهای پروتکلهای لایه دو را کسر خواهد کرد. باید توجه کرد که بلابها جایگزین Call Data میشوند که رولاپها معمولا از آن استفاده میکنند. بنابراین هزینه گس در لایه پایه اتریوم همچنان مثل گذشته خواهد بود.
توسعهدهندگانی که چندین سال است پیگیر آپدیتهای اتریوم هستند، بر سر این قضیه موافق خواهند بود که بیشتر طرحهای پیشنهادی اتریوم، مستقیما منجر به کاهش چشمگیر هزینههای گس پروتکل اصلی نمیشود؛ اتفاقی که حتی با وقوع مرج هم رخ نداد. شاید بهتر است صبر کنیم و ببینیم اتریوم در مسیر رسیدن به شاردینگ کامل، در نهایت چقدر موفق خواهد بود.
نقشه راه رولاپمحور اتریوم
مهمترین وجه تمایز تمام طرحهای پیشنهادی برای شاردینگ اتریوم از سال ۲۰۲۰ در نقشه راه رولاپ محور اتریوم یا Rollup-Centric Ethereum Roadmap بروز پیدا میکند.
اکوسیستم اتریوم به سمت استفاده از رولاپها (در کنار پلاسما و کانالها) گام برداشته است. این موارد به عنوان استراتژیهای مقیاسپذیری در نقشه راه اتریوم جای گرفتهاند و مزیت آنها این است که در ازای فراهم کردن مقیاسپذیری، امنیت و غیرمتمرکز بودن را قربانی نمیکنند. مقیاسپذیری رولاپها به این بستگی دارد که زنجیره چه مقدار داده میتواند نگهداری کند. هرچه این میزان افزایش پیدا کند، مقیاسپذیری رولاپها هم بیشتر میشود. به همین خاطر است که بلابها در پروپوزال جدید وارد بازی شدند.
طرح فعلی و اخیر نقشه راه اتریوم، رولاپمحور است. به این معنا که رولاپها مقیاسپذیری را ایجاد میکنند و تراکنشها توسط کاربران نهایی روی رولاپها اتفاق میافتند، نه روی اتریوم. اتریوم تمرکزش را روی این موضوع میگذارد که بهترین زنجیره لایه یک برای رولاپها باشد. گواه اثبات سهام (PoS) این امکان را برای اتریوم فراهم کرده است که به لایه اجماعی فوقالعاده ایمن و غیرمتمرکز برای رولاپها تبدیل شود. بلابها نیز وظیفه خود را به خوبی انجام میدهند و دادههای مورد نیاز رولاپها را فراهم میکنند.
اما چرا این مسئله اینقدر اهمیت دارد؟ پاسخ این سوال در مزیت رولاپها نسبت به بلاکچینهای سنتی نهفته است. تمرکز اتریوم بر تامین امنیت بالا و همچین غیرمتمرکز شدن است. در نقشه راه قبلی با کمک شاردینگ میتوانستیم به ۳,۰۰۰ تراکنش در ثانیه برسیم. به کمک رولاپها و شاردینگ دادهها، امکان دستیابی به ۱۰۰ هزار TPS وجود دارد. با نقشه راه کنونی میتوان انتظار داشت که اتریوم در چند سال آینده کاملا بر مبنای رولاپها عمل کند. نتیجه چنین عملی این خواهد بود که بلاکچینهایی مانند کاردانو، ایاس (EOS) و ترون دیگر با اتریوم مقابله نمیکنند؛ بلکه رقیب آنها زنجیرههای رولاپ قرارداد هوشمند مانند آربیتروم یا zkSync 2.0 خواهد بود.
پرسش و پاسخ (FAQ)
- دنک شاردینگ چیست؟
طراحی جدیدی از شاردینگ است که با کاهش پیچیدگیها به پیادهسازی این مسئله در اتریوم کمک میکند. - پروتودنک شاردینگ چیست؟
پروپوزالی است که با نام EIP-4844 شناخته میشود و یک پیادهسازی اولیه از دنک شاردینگ پیشنهاد میدهد. - ارتقای شاردینگ کی اتفاق میافتد؟
قرار است شاردینگ در سال ۲۰۲۳ پیادهسازی شود؛ اما هنوز زمان دقیقی برای آن اعلام نشده است. - آیا آپدیت شاردینگ هزینههای گس را کاهش میدهد؟
شاردینگ امکان استفاده از رولاپها را در اتریوم فراهم میکند. رولاپها هم راهکارهای لایه دو هستند و انجام تراکنش به کمک آنها باعث کاهش هزینهها میشود. با این همه به طور کلی شاردینگ هزینههای لایه اتریوم را کاهش نمیدهد.
جمعبندی
بررسی چشمانداز اتریوم در سال ۲۰۲۳ و وقایع تاثیرگذار روی قیمت آن، اهمیت آپدیت شاردینگ را به خوبی نشان میدهد. شاردینگ به دلیل مشکلات و پیچیدگیهایی که در پیادهسازی داشت، تاکنون اجرایی نشده است؛ اما Danksharding آمده تا این رسالت را انجام دهد. در این مقاله با هم یاد گرفتیم که دنک شاردینگ چیست و با چه هدفی به وجود آمده است. همچنین کمی هم با EIP-4844 و مفهوم پروتو دنک شاردینگ آشنا شدیم که گام قبلی پیادهسازی دنک شاردینگ است. شما در مورد شاردینگ چه فکر میکنید؟ آیا بالاخره این اتفاق مهم در اتریوم میافتد یا به آن بدبین هستید؟ به نظرتان بعد از پیادهسازی پروتو دنک شاردینگ و دنک شاردینگ، تغییرات چشمگیری در اتریوم اتفاق میافتد؟ هیچکس نمیداند و باید تنها صبر کنیم و ببینیم آنچه در واقعیت اتفاق میافتد چیست.