پلاسما در اتریوم
زنجیره پلاسما در اتریوم یک بلاک چین مجزا است که به شبکه اصلی اتریوم متصل است، اما تراکنشهای خارج از زنجیره را با مکانیزم خاص خود برای اعتبارسنجی بلاک اجرا میکند. زنجیرههای پلاسما گاهی اوقات به عنوان زنجیرههای «کودک» شناخته میشوند که اساساً کپیهای کوچکتری از شبکه اصلی اتریوم هستند. زنجیرههای پلاسما از شواهد تقلب (مانند optimistic rollups) برای داوری اختلافات استفاده میکنند.
درختان مرکل (Merkle trees) ایجاد یک دسته بی پایان از این زنجیرهها را امکانپذیر میسازند که میتوانند پهنای باند را از زنجیرههای مادر (از جمله Ethereum Mainnet) تخلیه کنند. با این حال، در حالی که این زنجیرهها تا حدی امنیت را از اتریوم (از طریق اثبات تقلب) میگیرند، امنیت و کارایی آنها تحت تأثیر چندین محدودیت طراحی قرار میگیرد.
پلاسمای اتریوم چیست؟
پلاسمای اتریوم چارچوبی برای بهبود مقیاس پذیری در بلاک چین های عمومی مانند اتریوم است. زنجیره های پلاسما بر روی زنجیره بلوکی دیگری (به نام “زنجیره ریشه یا پایه”) ساخته شده اند. هر “زنجیره کودک” از زنجیره پایه گسترش می یابد و به طور کلی توسط یک قرارداد هوشمند مستقر در زنجیره والد مدیریت می شود.
قرارداد پلاسما، در میان چیزهای دیگر، به عنوان پلی عمل می کند که به کاربران اجازه می دهد دارایی ها را بین شبکه اصلی اتریوم و زنجیره پلاسما جابجا کنند. اگرچه این امر آنها را شبیه به زنجیرههای جانبی میکند، زنجیرههای پلاسما،حداقل تا حدی، از امنیت Ethereum Mainnet بهره میبرند. این برخلاف زنجیرهای جانبی است که تنها مسئول امنیت آنها هستند.
پلاسما چگونه کار می کند؟
اجزای اصلی چارچوب پلاسما عبارتند از:
محاسبات خارج از زنجیره
سرعت تراکنش پردازش اتریوم به 15 تا 20 تراکنش در ثانیه محدود شده است که امکان کوتاهمدت مقیاسپذیری برای رسیدگی به کاربران بیشتر را کاهش میدهد. این مشکل عمدتاً به این دلیل وجود دارد که مکانیسم اجماع اتریوم به بسیاری از گرههای همتا به همتا نیاز دارد تا هر بهروزرسانی در وضعیت بلاک چین را تأیید کنند.
اگرچه مکانیسم اجماع اتریوم برای امنیت ضروری است، اما ممکن است برای همه موارد استفاده اعمال نشود. به عنوان مثال، آلیس ممکن است برای یک فنجان قهوه تأیید شده توسط کل شبکه اتریوم نیازی به پرداخت روزانه خود به باب نداشته باشد زیرا اعتماد بین هر دو طرف وجود دارد.
Plasma فرض می کند که Ethereum Mainnet نیازی به تأیید همه تراکنش ها ندارد. در عوض، میتوانیم تراکنشها را خارج از Mainnet پردازش کنیم و گرهها را از تأیید اعتبار هر تراکنش رها کنیم.
محاسبات خارج از زنجیره ضروری است زیرا زنجیره های پلاسمای اتریوم می توانند برای سرعت و هزینه بهینه شوند. به عنوان مثال، یک زنجیره پلاسما ممکن است (و اغلب این کار را می کند) از یک “اپراتور” واحد برای مدیریت سفارش و اجرای تراکنش ها استفاده کند. تنها با یک نهاد که تراکنشها را تأیید میکند، زمان پردازش در زنجیره پلاسما سریعتر از Ethereum Mainnet است.
تعهدات دولتی
در حالی که پلاسمای اتریوم تراکنشهای خارج از زنجیره را انجام میدهد، آنها در لایه اصلی اجرای اتریوم مستقر میشوند، در غیر این صورت، زنجیرههای پلاسما نمیتوانند از تضمینهای امنیتی اتریوم بهرهمند شوند. اما نهایی کردن تراکنش های خارج از زنجیره بدون اطلاع از وضعیت زنجیره پلاسما، مدل امنیتی را شکسته و امکان گسترش تراکنش های نامعتبر را فراهم می کند. به همین دلیل است که اپراتور، نهادی که مسئول تولید بلوکها در زنجیره پلاسما است، ملزم به انتشار دورهای «تعهدات دولتی» در اتریوم است.
طرح تعهد یک تکنیک رمزنگاری برای تعهد به یک ارزش یا بیانیه بدون افشای آن برای طرف دیگر است. تعهدات “الزام آور” هستند به این معنا که شما نمی توانید ارزش یا بیانیه را پس از تعهد به آن تغییر دهید. تعهدات دولتی در پلاسما به شکل “ریشه های مرکل” (مشتق شده از درخت مرکل) است که اپراتور در فواصل زمانی آن را به قرارداد پلاسما در زنجیره اتریوم ارسال می کند.
ریشههای مرکل، از اولیههای رمزنگاری هستند که امکان فشردهسازی حجم زیادی از اطلاعات را فراهم میکنند. یک ریشه Merkle (که در این مورد “ریشه بلوک” نیز نامیده می شود) می تواند تمام تراکنش های یک بلوک را نشان دهد. ریشه های Merkle همچنین تأیید اینکه یک قطعه کوچک از داده بخشی از مجموعه داده بزرگتر است را آسان تر می کند. به عنوان مثال، یک کاربر می تواند یک اثبات Merkle برای اثبات گنجاندن یک تراکنش در یک بلوک خاص ارائه کند.
ریشه های Merkle برای ارائه اطلاعات در مورد وضعیت خارج از زنجیره به اتریوم مهم هستند. میتوانید ریشههای مرکل را بهعنوان «نقاط ذخیره» در نظر بگیرید: اپراتور میگوید: «این وضعیت زنجیره پلاسما در نقطه x در زمان است، و این ریشه مرکل بهعنوان اثبات است». اپراتور به وضعیت فعلی زنجیره پلاسما با ریشه مرکل متعهد است، به همین دلیل است که به آن “تعهد دولتی” می گویند.
ورودی ها و خروجی ها
برای اینکه کاربران اتریوم از مزیت پلاسمای اتریوم استفاده کنند، باید مکانیزمی برای جابجایی وجوه بین زنجیره اصلی و پلاسما وجود داشته باشد. ما نمیتوانیم خودسرانه اتر را به آدرسی در زنجیره پلاسما بفرستیم، این زنجیرهها ناسازگار هستند، بنابراین تراکنش یا شکست میخورد یا منجر به از دست رفتن وجوه میشود.
پلاسمای اتریوم از یک قرارداد اصلی در حال اجرا بر روی اتریوم برای پردازش ورودی ها و خروجی های کاربر استفاده می کند. این قرارداد اصلی همچنین مسئول ردیابی تعهدات دولتی (که قبلا توضیح داده شد) و مجازات رفتار غیرصادقانه از طریق اثبات تقلب است.
ورود به زنجیره پلاسما
برای ورود به زنجیره پلاسمای اتریوم، آلیس (کاربر) باید ETH یا هر توکن ERC-20 را در قرارداد پلاسما واریز کند. اپراتور پلاسما، که سپردههای قراردادی را تماشا میکند، مبلغی برابر با سپرده اولیه آلیس را دوباره ایجاد میکند و آن را به آدرس او در زنجیره پلاسما میفرستد. آلیس ملزم به دریافت وجوه در زنجیره کودک است و سپس می تواند از این وجوه برای تراکنش ها استفاده کند.
خروج از زنجیره پلاسما
خروج از زنجیره پلاسمای اتریوم به چند دلیل پیچیده تر از ورود به آن است. بزرگترین مورد این است که در حالی که اتریوم اطلاعاتی در مورد وضعیت زنجیره پلاسما دارد، نمی تواند صحت یا عدم صحت این اطلاعات را تأیید کند. یک کاربر مخرب می تواند ادعای نادرستی داشته باشد (“من 1000 ETH دارم”) و از ارائه شواهد جعلی برای پشتیبان گیری از ادعا خودداری کند.
برای جلوگیری از برداشت های مخرب، یک “دوره چالش،challenge period” معرفی شده است. در طول دوره چالش (معمولاً یک هفته)، هر کسی می تواند با استفاده از یک ضد تقلب، درخواست برداشت را به چالش بکشد. اگر چالش با موفقیت انجام شود، درخواست برداشت رد می شود.
با این حال، معمولاً اینطور است که کاربران صادق هستند و ادعاهای درستی در مورد وجوه خود دارند. در این سناریو، آلیس با ارسال یک تراکنش به قرارداد پلاسما، درخواست برداشت از زنجیره ریشه (اتریوم) را آغاز می کند.
او همچنین باید یک مدرک Merkle ارائه دهد که تأیید کند تراکنشی که وجوه او را در زنجیره پلاسما ایجاد می کند در یک بلوک گنجانده شده است. این برای تکرارهای پلاسما، مانند پلاسما MVP، که از مدل خروجی تراکنش خرج نشده (UTXO) استفاده می کند، ضروری است.
دیگران، مانند Plasma Cash، وجوه را بهعنوان توکنهای غیرقابل تعویض به جای UTXO نشان میدهند. برداشت، در این مورد، مستلزم اثبات مالکیت توکن ها در زنجیره پلاسما است. این کار با ارسال دو آخرین تراکنش شامل توکن و ارائه یک اثبات Merkle برای تأیید گنجاندن آن تراکنشها در یک بلوک انجام میشود.
کاربر همچنین باید به درخواست انصراف به عنوان تضمین رفتار صادقانه یک وثیقه اضافه کند. اگر یک رقیب ثابت کند درخواست انصراف آلیس نامعتبر است، وثیقه او قطع می شود و مقداری از آن به عنوان پاداش به رقیب می رسد.
اگر دوره چالش بدون ارائه مدرک ضد تقلب بگذرد، درخواست برداشت آلیس معتبر تلقی میشود و به او اجازه میدهد تا سپردههای قرارداد پلاسما روی اتریوم را بازیابی کند.
داوری اختلاف
مانند هر بلاک چین، زنجیرههای پلاسمای اتریوم به مکانیزمی برای اعمال یکپارچگی تراکنشها در مواردی که شرکتکنندگان شروع به اعمال مخرب کنند (مثلاً دو برابر کردن وجوه) نیاز دارند. برای این منظور، زنجیره های پلاسما از شواهد تقلب برای داوری اختلافات مربوط به اعتبار انتقال حالت و مجازات رفتار بد استفاده می کنند.
اثبات تقلب صرفاً ادعایی است مبنی بر اینکه یک انتقال حالت خاص نامعتبر است. به عنوان مثال، اگر یک کاربر (آلیس) سعی کند دو بار همان سرمایه را خرج کند. شاید او UTXO را در تراکنش با باب خرج کرده باشد و بخواهد همان UTXO (که اکنون برای باب است) را در تراکنش دیگری خرج کند.
برای جلوگیری از انصراف، باب با ارائه شواهدی مبنی بر خرج کردن UTXO مذکور در تراکنش قبلی توسط آلیس و مدرک Merkle مبنی بر گنجاندن تراکنش در یک بلوک، یک ضد تقلب ایجاد خواهد کرد. همین فرآیند در Plasma Cash نیز کار میکند. باب باید مدرکی ارائه دهد که نشان دهد آلیس قبلاً توکنهایی را که میخواهد برداشت کند، منتقل کرده است.
اگر چالش باب موفقیت آمیز باشد، درخواست خروج آلیس لغو می شود. با این حال، این رویکرد بر توانایی باب برای تماشای زنجیره درخواستهای برداشت متکی است. اگر باب آفلاین باشد، آلیس می تواند پس از سپری شدن دوره چالش، برداشت مخرب را پردازش کند.
مشکل خروج انبوه در پلاسما
مشکل خروج انبوه (mass exit problem) زمانی رخ می دهد که تعداد زیادی از کاربران همزمان سعی می کنند از زنجیره پلاسمای اتریوم خارج شوند. چرایی این مشکل به یکی از بزرگترین مشکلات پلاسما مربوط می شود: در دسترس نبودن داده ها.
در دسترس بودن داده، توانایی تأیید این است که اطلاعات یک بلوک پیشنهادی واقعاً در شبکه بلاک چین منتشر شده است. یک بلوک “در دسترس نیست” اگر سازنده خود بلوک را منتشر کند اما داده های استفاده شده برای ایجاد بلوک را مخفی کند.
اگر گرهها میخواهند بلوک را دانلود کنند و اعتبار تراکنشها را تأیید کنند، باید بلوکها در دسترس باشند. بلاک چین ها با وادار کردن تولیدکنندگان بلاک به ارسال تمام داده های تراکنش در زنجیره، در دسترس بودن داده ها را تضمین می کنند.
در دسترس بودن داده ها همچنین به ایمن سازی پروتکل های مقیاس بندی خارج از زنجیره که بر روی لایه پایه اتریوم ساخته شده اند کمک می کند. با وادار کردن اپراتورهای این زنجیرهها به انتشار دادههای تراکنش در اتریوم، هر کسی میتواند با ایجاد مدارک تقلب که به وضعیت صحیح زنجیره ارجاع میدهد، بلوکهای نامعتبر را به چالش بکشد.
زنجیرههای پلاسمای اتریوم عمدتاً دادههای تراکنش را با اپراتور ذخیره میکنند و هیچ دادهای را در Mainnet منتشر نمیکنند (یعنی علاوه بر تعهدات حالت دورهای). این بدان معناست که اگر کاربران نیاز به ایجاد مدارک تقلب برای به چالش کشیدن تراکنشهای نامعتبر دارند، باید به اپراتور برای ارائه دادههای بلوک اعتماد کنند. اگر این سیستم کار کند، کاربران همیشه میتوانند از شواهد تقلب برای تضمین وجوه استفاده کنند.
مشکل زمانی شروع می شود که اپراتور، (نه هر کاربر)، طرفی باشد که به طور مخرب عمل می کند. از آنجایی که اپراتور تنها کنترل بلاک چین را در دست دارد، آنها انگیزه بیشتری برای پیشبرد انتقال حالت نامعتبر در مقیاس بزرگتر دارند، مانند سرقت وجوه متعلق به کاربران در زنجیره پلاسما.
در این مورد، استفاده از سیستم کلاسیک ضد تقلب نمی تواند کار کند. اپراتور به راحتی می تواند یک تراکنش نامعتبر را انجام دهد و وجوه آلیس و باب را به کیف پول خود منتقل کند و داده های لازم برای ایجاد ضد تقلب را پنهان کند. این امکان پذیر است زیرا اپراتور لازم نیست داده ها را در دسترس کاربران یا Mainnet قرار دهد.
بنابراین، خوش بینانه ترین راه حل تلاش برای “خروج انبوه” کاربران از زنجیره پلاسمای اتریوم است. خروج انبوه برنامه اپراتور مخرب برای سرقت وجوه را کند می کند و مقداری محافظت برای کاربران فراهم می کند. درخواستهای برداشت بر اساس زمان ایجاد هر UTXO (یا توکن) سفارش داده میشوند و از اپراتورهای مخرب جلوگیری میکنند که کاربران صادق پیشرو باشند.
با این وجود، ما هنوز به راهی برای تأیید صحت درخواستهای برداشت در طول یک خروج انبوه نیاز داریم (برای جلوگیری از پول نقد افراد فرصتطلب از خروجهای نامعتبر پردازش آشوب). راه حل ساده است: از کاربران بخواهید که آخرین وضعیت معتبر زنجیره را برای خروج از پول خود ارسال کنند.
اما این رویکرد همچنان مشکلاتی دارد. به عنوان مثال، اگر همه کاربران در یک زنجیره پلاسما نیاز به خروج داشته باشند (که در مورد یک اپراتور مخرب امکان پذیر است)، کل وضعیت معتبر زنجیره پلاسما باید به یکباره روی لایه پایه اتریوم ریخته شود. با توجه به اندازه دلخواه زنجیره های پلاسما (بازده بالا = داده بیشتر) و محدودیت در سرعت پردازش اتریوم، این یک راه حل ایده آل نیست.
اگرچه بازیهای خروج از نظر تئوری خوب به نظر میرسند، خروجهای انبوه واقعی احتمالاً باعث ازدحام شبکه در خود اتریوم میشوند. علاوه بر آسیب رساندن به عملکرد اتریوم، یک خروج انبوه هماهنگ ضعیف به این معنی است که کاربران ممکن است نتوانند قبل از تخلیه هر حساب در زنجیره پلاسما توسط اپراتور، وجوه خود را برداشت کنند.
مزایا و معایب پلاسمای اتریوم
مزایا
توان عملیاتی بالا و هزینه کم در هر تراکنش را ارائه می دهد.
مناسب برای تراکنش بین کاربران دلخواه (اگر هر دو در زنجیره پلاسما ایجاد شده باشند بدون سربار برای هر جفت کاربر)
زنجیرههای پلاسما را میتوان با موارد استفاده خاص که به زنجیره اصلی مرتبط نیستند، تطبیق داد. هر کسی، از جمله مشاغل، میتواند قراردادهای هوشمند پلاسما را برای ارائه زیرساخت مقیاسپذیر که در زمینههای مختلف کار میکند، سفارشی کند.
با انتقال محاسبات و ذخیره سازی خارج از زنجیره، بار روی شبکه اصلی اتریوم را کاهش می دهد.
معایب
پلاسمای اتریوم از محاسبات عمومی پشتیبانی نمیکند (نمیتوان قراردادهای هوشمند را اجرا کرد. فقط انتقالهای رمز اولیه، مبادلهها و چند نوع تراکنش دیگر از طریق منطق محمول پشتیبانی میشوند).
برای اطمینان از امنیت وجوه خود، باید به طور دوره ای شبکه را تماشا کنید یا این مسئولیت را به شخص دیگری محول کنید.
به یک یا چند اپراتور برای ذخیره داده و ارائه آن در صورت درخواست متکی است.
برداشتها چند روز به تأخیر میافتد تا چالشها وجود داشته باشد. برای دارایی های قابل تعویض، این موضوع می تواند توسط ارائه دهندگان نقدینگی کاهش یابد، اما هزینه سرمایه مرتبطی وجود دارد.
اگر تعداد زیادی از کاربران به طور همزمان سعی کنند از آن خارج شوند، Ethereum Mainnet ممکن است شلوغ شود.
پروتکل های مقیاس بندی پلاسما در مقابل لایه 2
در حالی که زمانی پلاسمای اتریوم به عنوان یک راه حل مقیاس پذیر مفید برای اتریوم در نظر گرفته می شد، از آن زمان به نفع پروتکل های مقیاس بندی لایه 2 (L2) کنار گذاشته شد. راه حل های مقیاس بندی L2 چندین مشکل پلاسما را برطرف می کنند:
پشتیبانی از قراردادهای هوشمند
یکی دیگر از مشکلات چارچوب پلاسما عدم توانایی پشتیبانی از اجرای قراردادهای هوشمند اتریوم بود. در نتیجه، بیشتر پیادهسازیهای پلاسما عمدتاً برای پرداختهای ساده یا مبادله توکنهای ERC-20 ساخته شدهاند.
برعکس، optimistic rollups با ماشین مجازی اتریوم سازگار هستند و میتوانند قراردادهای هوشمند بومی اتریوم را اجرا کنند، و آنها را به یک راهحل مفید و امن برای مقیاسبندی برنامههای غیرمتمرکز تبدیل میکند. به طور مشابه، برنامههایی برای ایجاد یک پیادهسازی با دانش صفر از EVM (zkEVM) در حال انجام است که به ZK Rollup اجازه میدهد منطق دلخواه را پردازش کرده و قراردادهای هوشمند را اجرا کنند.
در دسترس نبودن داده ها
همانطور که قبلا توضیح داده شد، پلاسمای اتریوم از مشکل در دسترس بودن داده رنج می برد. اگر یک اپراتور مخرب یک انتقال نامعتبر را در زنجیره پلاسما ایجاد کند، کاربران نمی توانند آن را به چالش بکشند زیرا اپراتور می تواند داده های مورد نیاز برای ایجاد ضد تقلب را مخفی کند. رول آپ ها این مشکل را با مجبور کردن اپراتورها برای ارسال دادههای تراکنش در اتریوم حل میکنند و به هر کسی اجازه میدهد وضعیت زنجیره را تأیید کند و در صورت لزوم، اثبات تقلب ایجاد کند.
مشکل خروج انبوه
ZK-rollup ها و rollup های optimistic هر دو مشکل خروج انبوه پلاسما را به طرق مختلف حل می کنند. برای مثال، یک ZK-rollup بر مکانیزمهای رمزنگاری تکیه میکند که تضمین میکند اپراتورها تحت هیچ سناریویی نمیتوانند وجوه کاربران را سرقت کنند.
به طور مشابه، optimistic rollups یک دوره تاخیر را برای برداشتها تحمیل میکند که طی آن هر کسی میتواند یک چالش را آغاز کند و از درخواستهای برداشت مخرب جلوگیری کند. در حالی که این کار شبیه به پلاسما است، تفاوت این است که تأییدکنندگان به داده های مورد نیاز برای ایجاد اثبات تقلب دسترسی دارند.
پلاسما چه تفاوتی با زنجیره های جانبی و SHARDING دارد؟
پلاسمای اتریوم، زنجیرههای جانبی و شاردینگ تقریباً شبیه به هم هستند زیرا همگی به نوعی به شبکه اصلی اتریوم متصل میشوند. با این حال، سطح و قدرت این اتصالات متفاوت است، که بر ویژگیهای امنیتی هر راه حل مقیاسبندی تأثیر میگذارد.
پلاسما در مقابل زنجیره های جانبی
سایدچین یک بلاک چین مستقل است که از طریق یک پل دو طرفه به شبکه اصلی اتریوم متصل می شود. پلها به کاربران اجازه میدهند تا توکنهایی را بین دو بلاک چین مبادله کنند تا در زنجیره جانبی تراکنش کنند، ازدحام در شبکه اصلی اتریوم کاهش مییابد و مقیاسپذیری را بهبود میبخشد. زنجیره های جانبی از مکانیزم اجماع جداگانه استفاده می کنند و معمولاً بسیار کوچکتر از اتریوم Mainnet هستند. در نتیجه، پل زدن دارایی ها به این زنجیره ها مستلزم افزایش ریسک است. با توجه به فقدان ضمانتهای امنیتی به ارث رسیده از Ethereum Mainnet در مدل زنجیره جانبی، کاربران در حمله به زنجیره جانبی، سرمایه خود را از دست میدهند.
برعکس، زنجیره های پلاسمای اتریوم امنیت خود را از Mainnet می گیرند. این باعث می شود که آنها به طور قابل توجهی ایمن تر از زنجیره های جانبی باشند. هم زنجیرههای جانبی و هم زنجیرههای پلاسما میتوانند پروتکلهای اجماع متفاوتی داشته باشند، اما تفاوت این است که زنجیرههای پلاسمای اتریوم ریشههای Merkle را برای هر بلوک در اتریوم Mainnet منتشر میکنند. ریشههای بلوک قطعات کوچکی از اطلاعات هستند که میتوانیم از آنها برای تأیید اطلاعات مربوط به تراکنشهایی که در زنجیره پلاسما رخ میدهند استفاده کنیم. اگر حمله ای روی یک زنجیره پلاسما اتفاق بیفتد، کاربران می توانند با خیال راحت وجوه خود را با استفاده از شواهد مناسب به Mainnet برگردانند.
پلاسما در مقابل شاردینگ
هم زنجیرههای پلاسمای اتریوم و هم زنجیرههای شاردینگ بهطور دورهای مدارک رمزنگاریشده را در اتریوم Mainnet منتشر میکنند. با این حال، هر دو ویژگی های امنیتی متفاوتی دارند.
زنجیرههای Shard «هدرهای دستهبندی» را به Mainnet ارسال میکنند که حاوی اطلاعات دقیق در مورد هر قطعه داده است. گرهها در Mainnet اعتبار خردههای داده را تأیید و اجرا میکنند، احتمال انتقال خردههای نامعتبر را کاهش میدهند و از شبکه در برابر فعالیتهای مخرب محافظت میکنند.
پلاسمای اتریوم متفاوت است زیرا Mainnet فقط حداقل اطلاعات را در مورد وضعیت زنجیره های کودک دریافت می کند. این بدان معنی است که Mainnet نمی تواند به طور موثر تراکنش های انجام شده در زنجیره های کودک را تأیید کند و امنیت آنها را کاهش دهد.