فناوریهای لایه دوم به دنبال کاهش قابل توجه هزینه و زمان تراکنشها بر روی شبکه اتریوماند. در این یادداشت به دنبال پیشنهاد چارچوبی برای کمک به کاربران اتریوم در تحلیل پروژههای لایه دوم هستیم. با ما همراه باشید.
رول آپها (rollups) [رول آپها راهکارهایی هستند که تراکنشها را خارج از شبکه اصلی اتریوم (مین نت یا لایه اول) اجرا میکنند اما دادههای تراکنشها را بر روی شبکه اصلی میفرستند.] و دیگر فناوریهای لایه دومی (L2) به دنبال حل مشکلات مربوط به هزینه گس و وضعیت (state) در شبکه اتریوم هستند. اگر بخواهیم کمی سادهتر بگوییم: فناوریهای لایه دو به دنبال کاهش قابل توجه کارمزد و زمان تراکنشها بر روی شبکه اتریوماند.
راهحلهای مقیاسپذیر این روزها توجه زیادی را به خود معطوف کردهاند. بنابر گزارش L2BEAT، ارزش کلی قفل شده بر روی رول آپهای مختلف در تاریخ ۲۹ آوریل ۲۰۲۱ (۹ اردیبهشت ۱۴۰۰) حدود ۱.۱۶ میلیارد دلار است. برای کسانی که به دقت پیشرفت این حوزه، پروژهها و فناوریهای مربوط به آن را دنبال نمیکنند، بسیار مشکل – اگر نگوییم ناممکن – است که تشخیص دهند کدام پروژه برای برآوردن نیاز مدنظر آنان، امنترین و بهترین گزینه ممکن است.
این یادداشت چارچوبی برای کمک به کاربران اتریوم در تحلیل پروژههای لایه دوم پیشنهاد میکند. به شکل به خصوص، جامعه هدف این یادداشت خوانندگانی است که به شکل نسبی با لایه دو آشنا هستند با این همه در مواجهه با بخشهای فنی احساس غریبی میکنند. این چارچوب به شما کمک خواهد کرد تا مدلی ذهنی برای تحلیل راهکارهای مبتنی بر لایه دوم داشته باشید.
ارائه چارچوبی برای بررسی پروژههای لایه دوم
هنگام خرید یک اتوموبیل، چند پرسش است که باید درباره هر گزینه به آن پاسخ دهیم. چند کیلومتر کار کرده است؟ تصادفی داشته است؟ بنزینی است، برقی و یا هیبرید؟ چقدر جادار است؟ پاسخ به این پرسشها شاید منجر به اتخاذ یک تصمیم واضح از جانب شما نشود، اما به شما کمک میکند تا تصویر بهتری از اتوموبیل موردنظر و چگونگی برآورده کردن نیازتان به دست دهد.
به همین ترتیب، پاسخ به چهار سوال زیر، هنگام بررسی یک پروژه لایه دو به شما ذهنیت روشنتری در مورد آن خواهد داد. تاکید میکنم که این موضوع، یک فرایند نمرهدهی سختگیرانه نیست و صرفا برای داشتن یک مدل ذهنی روشنتر نسبت به یک پروژه طراحی شده است؛ اینکه یک پروژه چگونه ممکن است به کاربران کمک کند و چگونه ممکن است شکست بخورد.
چهار سوال اشاره شده در مورد پروژههای نو، در ادامه آورده شدند:
- چه کسی آن را اجرا میکند؟
- وضعیت دادهها چگونه است؟
- پشته (Stack) به چه شکل است؟
- آمادگی در برابر شرایط ناگوار در چه حد است؟
چه کسی آن را اجرا میکند؟
گرههای (nodes) ماینر بر روی مین نت (mainnet) اتریوم با حل کردن گواه اثبات کار و ایجاد بلاکهای جدید شبکه را به جلو میرانند یا «اجرا» میکنند. این بلاکها را میتوان همچون یک زوپراکسی اسکوپ (zoopraxiscope) پشت یکدیگر به هم متصل کرد تا نشانگر فعالیت شبکه باشد.
یکی از راههایی که راهکارهای مبتنی بر لایه دوم با آن جریان تراکنشها را افزایش میدهند، متمرکز کردن فعالیت شبکه در یک بلاک مین نت است. این فعالیت شبکه اگر بر روی شبکه اصلی انجام میپذیرفت، به تعداد بیشتری بلاک احتیاج میداشت و هزینه گس چشمگیر و زمان زیادی میطلبید. راهکارهای لایه دو این فعالیت را بر روی شبکه خود انجام میدهند و سپس خلاصه آن را بر روی یک بلاک شبکه اصلی ثبت میکنند.
بنابراین راهکارهای لایه دو نیز به مجریانی بر روی شبکه خود احتیاج دارند – که معادل با ماینرهای مین نت اتریوم هستند – تا شبکه خود را پیش برانند. چند تفاوت در این بین در میان است. برای مثال، در کنار بررسی و تایید تراکنشها همچون یک ماینر، یک عامل مجری در لایه دو ممکن است مسئول فراهم کردن زمینه ورود و خروج کاربران به خود لایه نیز باشد.
چند سوال که ممکن است به شما کمک کند تا بیشتر از مجریان لایه دوم بدانید در ادامه لیست میشوند:
- به چه کس/یا چیزی برای اجرای شبکه لایه دو احتیاج است؟
- اگر موجود است، چگونه بدل به اجرا کنندگان شبکه لایه دو میشوند؟ از چه قوانینی تبعیت میکنند؟
- کاربر شبکه لایه دو چه فرضیاتی در مورد اعتماد به مجری باید داشته باشد؟
- مجریان در قبال چه چیزی مسئول هستند؟ چه قدرتی دارند؟
- انگیزههای مجریان این راهکار لایه دومی چیست؟
به شکل کلی، چیزی که ما به دنبال دریافتن آن در این مرحله هستیم، اعتماد است و به شکل مشخصتر، چقدر یک کاربر باید به یک عامل اجرا اعتماد داشته باشد؟ بر روی مین نت اتریوم، پاسخ این سوال «نه چندان» است. چرا که هر گره در شبکه اصلی، صحت هر بلاک جدید استخراج شده را کنترل میکند. بر روی لایه دوم، ما بخشی از آن اعتماد را قربانی مزایایی همچون سرعت و یا هزینه مبادله میکنیم.
سوالات بالا به منظور یافتن مقادیر اعتمادی که یک کاربر در شبکه لایه دو از دست میدهد، طرح شدهاند. وقتی در مورد آن موضوع به نتیجه رسیدیم، دید بهتری در مورد آسیبپذیریمان در برابر ریسک مجریان لایه دومی به دست میآوریم.
وضعیت دادهها چگونه است؟
مبحث دیگری که آن را بررسی خواهیم کرد، داده است. بنابر تعاریف، یک فناوری لایه دوم باید به شکل پلهای نقاطی برای تطبیق و ثبت داده بر روی لایه اول (شبکه اصلی اتریوم) ایجاد کند. این نقاط تطبیق همانند زمانی است که کودکی خردسال که مشغول بازی و جستوخیز و کشف محیط اطراف خود است، نگاهی به مادر برای کسب اطمینان میاندازد. یک فناوری لایه دو نیز چنین است. به شکل مجزا از مین نت، به فعالیت و ایجاد داده شبکه خود اقدام میورزد لیکن به شکل منظم با شبکه اصلی خود را چک میکند و دادههایش را تطبیق میدهد.
نگرانی ما در خصوص فواصل زمانی کوتاه مابین این کنترل ادواری است. به خصوص اینکه چگونه لایه دوم دادهها را به دور از مأمن امن مین نت ایجاد، ذخیره و نگهداری میکند؟ این موضوع از آنجا مایه نگرانی ماست که [دادههای] کاربر در دورترین حالت ممکن از امنیت شبکه عمومی قرار دارند.
منظور ما از دادهها در اینجا تراکنشها خواهند بود. همانند شبکه اصلی اتریوم، عصاره فعالیتهای شبکه لایه دوم را میتوان تراکنشهایی که یک کاربر مبادرت به اقدام آن میکند، دانست. چیزی که میخواهیم بدانیم آن است که چگونه اطلاعات تراکنشها توسط اپراتورهای لایه دومی ضبط میشود و در نهایت به چه شکل بر روی مین نت قرار میگیرد.
مقدار ارزی که کاربران در یک شبکه لایه دومی میتوانند با آن تراکنش انجام دهند، عموما طبق یک فرایند «قفل شدن» مشخص میشود. قفل شدن اشاره به مقداری دارد که کاربر شبکه اصلی، موافقت خود را برای انتقال اولیه آن به شبکه لایه دو ابراز میدارد. کاربری که قصد وارد شدن به شبکه لایه دو دارد، توافقی با شبکه لایه دو صورت میدهد که مطابق با آخرین وضعیت کاربر در شبکه لایه یک است. همچنین شامل شرایطی است که کاربر میتواند از شبکه لایه دوم خارج شود. با توجه به پارامترهای اضافی و منطق لازم برای پوشش دادن همه این عوامل، مکانیزمهای «قفل شدن» در قراردادهای هوشمندی (smart contract) بر روی لایه یک ثبت میشوند.
استثناء مهمی در اینجا در میان است. راهکارهای موثر لایه دومی هزینه گس و زمان بسیار کمی برای تراکنشها در بر دارند. این برای جذب مشتریان، خصوصا مشتریان غیرفنی ایدهآل است. گاهی آنها حتی ممکن است متوجه نشوند که بر روی شبکه لایه دوم یا شاید حتی بلاک چین قرار دارند. در این حالت، آنها «قفل شدن» اولیه را بر روی لایه اول انجام نمیدهند اما ممکن است زمانی بخواهند از لایه دوم خارج و به مین نت بازگردند.
برای مثال، صرافی غیرمتمرکز اوپن سی (OpenSea) که بازاری برای مبادله همتا به همتای NFT است، اعلام کرد که برای کاهش هزینه کاربرانش یک راهکار لایه دومی اتخاذ کرده است. این بدین معنی است که کاربر میتواند یک NFT را بر روی راهکار لایه دومی اوپن سی خریداری کند بدون اینکه بداند بر روی لایه دو است. تنها وقتی آن کاربر بخواهد پلتفرم اوپن سی را با دارایی NFTاش ترک کند، لایه دوم مقدمات خروج او را فراهم میکند.
شاید بدیهی به نظر برسد، اما این مساله بینهایت مهم است. برای مثال، کاربران بازار NFT انبیای تاپ شات (NBA TopShot) از عدم توانایی خود برای بیرون کشیدن مبالغ بعضا هنگفت حساب کاربریشان که بر روی پلتفرمی لایه دومی قرار دارد، شکایت دارند.
- شرایط «قفل شدن» برای لایه دو چیست؟
- پس از چه مدت آن مبالغ قفل شده، بر روی لایه دوم آماده هستند؟
- لایه دوم چه شرایطی برای کاربرانی دارد که بدون «قفل شدن» وارد میشوند؟
وقتی یک کاربر تراکنش «قفل شدن» خود را ارسال کرد و وارد لایه دو شد، میتواند تراکنشهای خود را بر روی لایه دو انجام دهد. حال باید بدانیم تراکنشهای متعاقب آنان بر روی لایه دو چگونه ضبط میشود. این نحوه ضبط تراکنشها خصوصا هنگام به وجود آمدن مناقشه بسیار اهمیت دارد. چگونه میتوانید ثابت کنید که تراکنشهای لایه دوم صحیح یا نادرست هستند؟ برخی از راهکارهای لایه دومی، از نوعی از امضاهای دیجیتال استفاده میکنند که میتواند در قرارداد «قفل شدن» لایه اول به کار گرفته شود. برخی دیگر ممکن است از مشوقهای اقتصادی استفاده کنند تا سبب مراقبت مجریان لایه دومی از یکدیگر شوند. راهکار هرچه که باشد، صحت و امنیت هر فعالیتی بر روی شبکه لایه دو به اینگونه تصمیمات بستگی دارد.
- یک کاربر چگونه میتواند به یک تراکنش نامعتبر در لایه دو اعتراض کند؟ چگونه میتواند ثابت کند تراکنشی در لایه دوم معتبر و صحیح است؟
مکانیزم خروج در یک سیستم لایه دومی، نقطه مبهم مهم دیگری است. باید بدانیم که پس از چه مدت مبالغ «قفل شده» بر روی لایه اول (به علاوه یا منهای تراکنشهای انجام شده بر روی آن در لایه دوم) دوباره در اختیار کاربر قرار خواهد گرفت. به برخی از این مسایل با جواب به سوالات بالا، پاسخ داده خواهد شد اما اگر خروج دستهجمعی کاربران رخ دهد، یک سیستم لایه دو چگونه برای آن مهیا شده است؟ این نقطهای کلیدی برای یک سیستم است.
- یک سیستم لایه دو چگونه برای خروج دستهجمعی کاربران آماده شده است؟
احتمال جالب دیگر، در دسترس بودن تامینکنندگان نقدینگی (liquidity providers) لایه اولی برای کاهش زمان انتظار هنگام خروج از لایه دوم است. این موسسات، در صورت اطمینان از مکانیزم خروج لایه دوم در قبال دریافت هزینه، به شکل آنی به شما در لایه اول معادل مبلغ «قفل شده» شما نقدینگی تحویل میدهند.
- در صورت قصد یک کاربر برای خروج از لایه دو، مبالغ قفل شده لایه اول (به علاوه یا منهای تغییرات در لایه دوم) پس از گذشت چه زمانی برای او آزاد میشوند؟
- آیا تامینکنندگان نقدینگی بر روی لایه اول وجود دارند تا حاضر باشند نقدینگی آنی برای کاربران در لایه اول فراهم کنند؟
پشته به چه شکل است؟
در زبان برنامهنویسی، «پُشتِه» به قطعات متفاوتی از نرمافزار که تشکیلدهنده یک پروژه هستند، اشاره دارد. البته این لفظ وسیعتر از این تعریف است. برای مثال در اتریوم، پشته یا استک (stack) شامل همهچیز از نحوه اجرای کدها توسط گرهها در یک قرارداد هوشمند تا قوانین عمل ماینرها میشود.
اما نگران نباشید! چرا که این راهنما قرار نیست چندان فنی باشد. لازم نیست که از جزییات پشته اتریوم یا راهکار لایه دومی مطلع باشید. میخواهیم درباره برخی از ویژگیهای پشته باخبر شویم. به طور مشخص:
- چقدر از پشته راهکار لایه دومی موردنظر ما، با پشته اتریوم مشترک است؟
این مساله به دو دلیل مهم است. نخست اینکه پشته اتریوم چندین سال است که فعالیت میکند و امتحان خود را پس داده است. رشد شبکه و مساله هزینه گس چشمگیر آن عموما به عنوان یک مشکل ذکر میشود (که البته چنین است) اما شاهدی بر صحت و توانایی پشته اتریوم نیز محسوب میشود. رشد شبکه، تکنولوژی شبکه را تحت فشار میگذارد، بخشهای ضعیفتر را از کار میاندازد و نقاط قوت را برجسته میکند. در نتیجه، هر بخشی از اتریوم که در لایه دوم به کار رود، آزموده شده است. طبیعتا مهم است که کدام بخش به عاریه گرفته میشود و چگونه از آن استفاده میشود اما نشانه ابتدایی خوبی است.
مزیت دوم اشتراک اجزا، بهره بردن از جامعه فعال توسعهدهندگان اتریوم و ابزارهای آنان است. برای مثال اگر یک راهکار لایه دومی، سالیدیتی (Soldidity) را به عنوان زبان توسعه قراردادهای هوشمند خود برگزیند، میتواند از تمامی سرمایههای انسانی و فنی جامعه موجود توسعهدهندگان آن استفاده کند. اگر از برخی از المانهای رمزنگاری اتریوم استفاده کند – بر فرض مثال الگوریتم گواه اثبات کار – آنگاه از تحقیقات دامنهدار توسعهدهندگان اتریوم کور (Ethereum core) سود برده است.
البته استفاده از پشته متفاوتی از مین نت اتریوم لزوما چیز بدی نیست. حتی اگر به درستی صورت پذیرد، بسیار خوب است! تنوع ابزارها قدرت زیادی با خود به همراه میآورد. نوآوریهای لایه دو میتواند ارزش بسیاری با امتحان ایدههای جدید به لایه اول بیافزاید. اثبات دانایی صفر (Zero-knowledge proof) مثال بسیار خوبی از این مساله است. اگرچه این اثباتها از دهه هشتاد میلادی وجود داشتهاند اما فعالیتهای صورت گرفته شده توسط توسعهدهندگان اتریوم سبب رشد شدید آن حوزه شده است. اما استفاده از تکنولوژیها نو همواره خطرات خود را به دنبال دارد، خصوصا اگر به اندازه کافی در شرایط واقعی تست نشده باشند.
مقایسه پشتهها برای فهم آنچه شبکه لایه دوم را متفاوت ساخته است، اهمیت دارد. به خاطر داشته باشید که هدف ما از پرسیدن این سوالات، کمک به شناسایی تغییرات شبکه لایه دوم نسبت به مین نت و بده بستانهایی است که در جریان این تغییرات رخ میدهد.
آمادگی در برابر شرایط ناگوار در چه حد است؟
هر چند سوال گستردهای است اما توضیح آن کوتاه خواهد بود.
در کلاسهای آموزش ایمنی، مدرس دوره برای آشنایی دانشآموزان با خطر از آنان میپرسد: «چه چیزی مرا در این شرایط خواهد کشت؟» شاید بیش از حد دراماتیک به نظر رسد اما بسیار روشن است. در محیطی پیوسته در حال تغییر و پر از متغیرهای گمراهکننده، حیاتی است که بتوانیم نقاط احتمالی شکست و خطرات پیشرو را شناسایی کنیم. از آن نقطه، میتوان گام به گام به عقب بازگشت تا از خود محافظت نمود.
مزایای لایه دوم باید روشن باشد، اگر نیست، آنها را بررسی نمیکردیم. اما مهمتر است که متوجه شویم چگونه یک راهکار لایه دو مشخص ممکن است شکست بخورد. سه سوال قبلی راههایی برای کشف این نقاط ضعف بودند. در سوال واپسین، ما نحوه پاسخ دادن یک شبکه لایه دو به این نقاط ضعف را بررسی میکنیم.
در ادامه نمونه کوچکی از بدترین حالت ممکن برای یک راهکار لایه دوم فرضی آورده شده است:
- یک شبکه لایه دوم چگونه برای موارد زیر خود را مهیا کرده است؟
- خروج گسترده کاربران به دلیل تقلب احتمالی یک عضو شبکه.
- همدستی چندی از اعضای شبکه برای تحت تاثیر قرار دادن فرایند اجماع (برای مثال با تشکیل یک کارتل).
- کشف باگ یا اکسپلویتی (exploit) در بخش حساس سیستم.
امیدواریم چنین وضعیتهای ناگواری هیچگاه پیش نیایند اما در نظر نگرفتن آنها کاری بس اشتباه خواهد بود.
نتیجهگیری
چهار سوال ذکر شده را در مورد هر پروژه لایه دومی بپرسید و ما تضمین میکنیم که شناخت شما از آن پروژه افزایش پیدا خواهد کرد.
اما در نظر داشته باشید که این سوالات جامع و کامل نیستند. برای مثال ما اصلا صحبتی از هزینههای شبکه یا هزینههای کاربر به میان نیاوردیم بلکه هدف این بود که با طرح و پاسخ به این سوالات، بهتر متوجه نقاط ضعف و قدرت پروژهها شوید. در قدمهای بعدی میتوانید تیم توسعهدهنده، سرمایهگذاران و رد پول را دنبال کنید، با رقبا و اکوسیستم آن راهکار بیشتر آشنا شوید و جامعه مجازی توسعهدهندگان و طرفداران آن را رصد کنید. امیدواریم که توانسته باشیم به شما، خواننده غیر فنی، راههایی نشان دهیم که بتوانید با اطمینان بیشتری پروژههای مناسب برای خود را انتخاب کنید.