یک zkRollup معادل EVM برای مقیاس دهی به Ethereum است. از نظر فنی، Scroll براساس دو قطعه اصلی ساخته شده است. قطعه اصلی zkEVM است که برای اثبات درستی اجرای EVM در لایه ۲ استفاده می شود. ما بیش از یک سال است که آن را در اختیار گروه کاوش های حریم خصوصی و مقیاس گذاری در بنیاد اتریوم قرار داده ایم. اما برای تبدیل zkEVM به یک zkRollup کامل در Ethereum، باید یک معماری کامل L۲ نیز در اطراف آن بسازیم.
در این پست، مروری بر معماری کلی Scroll خواهیم داشت. به طور خاص تر، ما نسخه اولیه Scroll را پوشش خواهیم داد که از یک نود توالی متمرکز و شبکه اثبات غیر متمرکز تشکیل شده است. ما متعهد به غیر متمرکز کردن مجموعه گره های توالی در آینده هستیم و طرح خود را برای این کار در مقالات آینده به اشتراک خواهیم گذاشت.
معماری اسکرول
معماری فعلی از سه جز زیرساختی تشکیل شده است (شکل ۱ را ببینید):
Scroll Node: بلوک های L۲ را از تراکنش های کاربر جدا می کند، آن ها را به لایه پایه Ethereum متعهد می کند و پیام ها را بین L۱ و L۲ منتقل می کند.
Roller Network: اثبات های اعتبار zkEVM را تولید می کند تا ثابت کند که تراکنش ها به درستی اجرا می شوند.
Rollup and Bridge Contracts: دسترسی به داده ها را برای تراکنش های Scroll فراهم می کند، اثبات های اعتبار zkEVM را تایید می کند و به کاربران اجازه می دهد دارایی ها را بین Ethereum و Scroll جابه جا کنند.
در ادامه، نقش هر یک از این اجزا را شرح می دهیم.
گره اسکرول
گره Scroll اصلی ترین راه برای تعامل اپلیکیشن ها و کاربران با Scroll است. این ماژول از سه ماژول Coordinator ،Sequencer و Relayer تشکیل شده است.
. Sequencer رابط JSON - RPC را فراهم می کند و تراکنش های L۲ را می پذیرد. هر چند ثانیه، یک دسته از تراکنش ها را از حافظه L۲ بازیابی می کند و آن ها را برای تولید یک بلوک L۲ جدید و یک ریشه حالت جدید اجرا می کند. پیاده سازی دنباله دار ما براساس Go - Ethereum (Geth)، یکی از محبوب ترین پیاده سازی گره Ethereum است. با استفاده از Geth می توانیم به بهترین سازگاری دست یابیم و امنیت را به ارث ببریم که در آزمون زمان قرار گرفته است.
هنگامی که یک بلوک جدید ایجاد می شود، هماهنگ کننده (Coordinator) مطلع می شود و اثر اجرایی این بلوک را از Sequencer دریافت می کند. سپس اثر اجرا را به یک Roller انتخاب شده تصادفی از مخزن Roller برای تولید اثبات ارسال می کند.
. Relayer قراردادهای بریج و رول را که در هر دو Ethereum و Scroll به کار گرفته شده اند را تماشا می کند. این سازمان دو مسئولیت اصلی دارد. ابتدا، قرارداد رولینگ را برای پیگیری وضعیت بلوک های L۲ از جمله در دسترس بودن داده ها و اثبات اعتبار آن ها نظارت می کند. دوم، ذخیره و برداشت رویدادها را از قراردادهای پل مستقر در Ethereum و Scroll تماشا می کند و پیام ها را از یک طرف به طرف دیگر منتقل می کند.
Roller Networ
Rollers به عنوان اثبات کننده در شبکه عمل می کنند که مسئول ایجاد اثبات های روایی برای zkRollup هستند. انتظار می رود رولرها از شتاب دهنده هایی مانند GPU ها، FPGA ها و ASIC ها برای کاهش زمان اثبات و هزینه اثبات استفاده کنند. شکل ۲ نشان می دهد که چگونه یک Roller برای هر بلوک اثبات اعتبار تولید می کند. این فرآیند شامل مراحل زیر است:
. Roller ابتدا رد اجرایی دریافت شده از هماهنگ کننده را به شاهدان مدار تبدیل می کند.
. این روش برای هر یک از مدارهای zkEVM اثبات تولید می کند.
. در نهایت، از تجمع اثبات (proof aggregation)برای ترکیب اثبات ها از چندین مدار zkEVM به یک اثبات تک بلوکی استفاده می کند.
قراردادهای جمع و پل
الف-Scroll از طریق قراردادهای هوشمند Rollup و Bridge به لایه پایه اتریوم متصل می شود. این ها با هم دسترسی به داده ها برای تراکنش های L۲ را تضمین می کنند و به کاربران اجازه می دهند تا دارایی ها و پیام ها را بین L۱ و L۲ منتقل کنند.
قرارداد Rollup ریشه ها و بلوک های حالت L۲ را از Sequencer دریافت می کند. ریشه های حالت را در حالت Ethereum و داده های بلوک L۲ را به صورت Ethereum Calldata ذخیره می کند. این کار دسترسی به داده ها را برای بلوک های Scroll فراهم می کند و از امنیت Ethereum استفاده می کند تا اطمینان حاصل شود که نمایه سازها از جمله Scroll Relayer می توانند بلوک های L۲ را بازسازی کنند. هنگامی که یک اثبات بلوکی اثبات کننده اعتبار یک بلوک L۲ توسط قرارداد Rollup تایید شد، بلوک مربوطه در Scroll نهایی می شود.
قراردادهای Bridge مستقر در Ethereum و Scroll به کاربران اجازه می دهد پیام های دل خواه را بین L۱ و L۲ رد و بدل کنند. در بالای این پروتکل انتقال پیام، ما همچنین یک پروتکل پل زنی بدون اعتماد ساخته ایم که به کاربران اجازه می دهد دارایی های ERC - ۲۰ را در هر دو جهت پل بزنند.
کاربران برای ارسال یک پیام یا سرمایه از Ethereum به Scroll، با یک تراکنش SendMessage در قرارداد Bridge تماس می گیرند. Relayer این تراکنش را روی L۱ فهرست می کند و آن را برای درج در بلوک L۲ به Sequencer می فرستد. ارسال پیام از Scroll به Ethereum از فرآیند مشابهی در قرارداد L۲ Bridge استفاده می کند.
اسکرول چطور کار می کنه؟
با کنار هم قرار دادن این سه قطعه معماری، اکنون می توانیم جریان کار Scroll's zkRollup را توضیح دهیم که در شکل ۳ در زیر خلاصه شده است.
بلوک های L۲ در Scroll تولید می شوند، به لایه پایه Ethereum متعهد می شوند، و در دنباله مراحل زیر نهایی می شوند:
الف-Sequencer دنباله ای از بلوک ها را تولید می کند. برای بلوک i - th، Sequencer یک مسیر اجرایی T ایجاد می کند و آن را به هماهنگ کننده می فرستد. در همین حال، داده های تراکنشی D را به عنوان داده های فراخوانی شده به قرارداد Rollup در Ethereum برای دسترسی به داده ها و ریشه های حالت حاصل و تعهدات به داده های تراکنشی را به عنوان حالت به قرارداد Rollup ارسال می کند.
هماهنگ کننده به طور تصادفی یک Roller را انتخاب می کند تا یک اثبات اعتبار برای هر رد بلوک ایجاد کند. برای سرعت بخشیدن به فرآیند تولید اثبات، اثبات برای بلوک های مختلف می تواند به صورت موازی در Rollers مختلف تولید شود.
پس از ایجاد اثبات بلوک P برای بلوک i - th، رولر آن را به هماهنگ کننده می فرستد. هر k بلوک، هماهنگ کننده یک وظیفه تجمع را به یک Roller دیگر ارسال می کند تا k اثبات بلوک را در یک اثبات تجمعی واحد A جمع کند.
در نهایت، هماهنگ کننده اثبات کل A را به قرارداد Rollup ارسال می کند تا بلوک های L۲ i ⁇ ۱ تا i ⁇ k را با تایید اثبات کل در برابر ریشه های دولتی و تعهدات داده های تراکنشی که قبلا به قرارداد Rollup ارائه شده اند، نهایی کند.
شکل ۳ نشان می دهد که بلوک های Scroll در یک فرآیند چند مرحله ای در L۱ نهایی خواهند شد. هر بلوک L۲ تا زمان نهایی شدن، سه مرحله زیر را طی خواهد کرد.
پیش بینی ها نشان می دهد که یک بلوک توسط یک Sequencer پیشنهاد شده و به Rollers فرستاده شده است. اگرچه بلاک های پیشفرض هنوز بخشی از زنجیره Scroll L۲ نیستند؛ زیرا روی لایه پایه اتریوم قرار نگرفته اند، کاربرانی که به Sequencer اعتماد دارند، می توانند با پیش بینی آن ها اقدام کنند.
شنیده ها نشان از این دارد که داده های تراکنشی این بلوک در قرارداد اتریوم منتشر شده است. این تضمین می کند که داده بلوک در دسترس است، اما ثابت نمی کند که به روش معتبری اجرا شده است.
نهایی سازی نشان می دهد که اجرای صحیح ترانس ها در این بلوک با تایید یک اثبات روایی روی زنجیره در Ethereum اثبات شده است. بلوک های نهایی شده بخش های اساسی زنجیره Scroll L۲ محسوب می شوند.
با کنار هم قرار دادن تمام این موارد، Scroll قادر است بایت کد EVM بومی را روی L۲ اجرا کند در حالی که تضمین های امنیتی قوی را از لایه پایه Ethereum به ارث می برد. در پست بعدی این مجموعه، جریان کاری توسعه دهندگان برای استقرار اپلیکیشن ها در Scroll و نحوه تعامل کاربران با آن ها را توضیح خواهیم داد.
بیشتر بدانید
ما معماری اسکرول را طوری طراحی کرده ایم که با چشم انداز و ارزش ها و اصول فنی ما همخوانی داشته باشد. در مقالات پیش رو توضیح می دهیم که چگونه Scroll از این معماری برای ارائه تجربه مقیاس پذیرتر کاربر و توسعه دهنده در Ethereum استفاده خواهد کرد. برای کسب اطلاعات بیشتر با ما همراه باشید و برای امتحان کردن تست پیش از آلفا در سایت Signup.scroll.io ثبت نام کنید!
اگر دیدگاه ما در مورد مقیاس دهی Ethereum به روشی باز و جامعه محور با شما هماهنگ است، ما به دنبال افراد همسو با ارزش ها هستیم تا به Scroll کمک کنیم به توسعه دهنده ترین و کاربرپسندترین راه حل مقیاس دهی برای Ethereum تبدیل شود.
اگر شما یک محقق ZK، ZKP، توسعه دهنده Go یا Solidity یا یک مهندس GPU هستید، ما در حال کار بر روی بسیاری از چالش های فنی جالب در حد امکان هستیم. با ما همراه باشید تا راه حل هایی برای این مشکلات ارائه دهیم!
این ترجمه شده مقاله اصلی است.