
پروژه Scroll یک zkRollup معادل EVM برای مقیاسبندی اتریوم است. از نظر فنی Scroll بر دو قطعه اصلی ساخته شده است. قطعه اصلی zkEVM است که برای اثبات درستی اجرای EVM در لایه 2 استفاده میشود. بیش از یک سال است که در فضای باز با گروه Privacy and Scaling Explorations در بنیاد اتریوم ساخته شده است. برای تبدیل zkEVM به یک zkRollup کامل در اتریوم همچنین باید یک معماری L2 کامل پیرامون آن ساخته شود.
در این پست، یک نمای کلی از معماری کلی اسکرول ارائه می دهیم. به طور خاص، ما نسخه اولیه اسکرول را پوشش خواهیم داد که از یک گره توالی متمرکز و شبکه اثبات غیرمتمرکز تشکیل شده است. این پروژه متعهد به غیرمتمرکز کردن مجموعه گره های توالی یابی در آینده است. در ادامه با ساختار و راه حل این مروژه برای اتریوم آشنا خواهیم شد. با ما همراه باشید
معماری اسکرول
معماری فعلی از سه جزء زیرساخت تشکیل شده است (تصویر را ببینید)

اسکرول نود (scroll node) بلوک های L2 را از تراکنش های کاربر می سازد، آنها را به لایه پایه اتریوم پیوست می کند و پیام هایی را بین L1 و L2 ارسال می کند.
Roller Network
جمع کننده شبکه اثبات اعتبار zkEVM را ایجاد می کند تا ثابت کند که تراکنش ها به درستی اجرا شده اند.
قراردادهای جمعآوری و پل: در دسترس بودن دادهها را برای تراکنشهای Scroll فراهم میکند، اثبات اعتبار zkEVM را تأیید میکند و به کاربران اجازه میدهد داراییها را بین اتریوم و اسکرول جابجا کنند.
در ادامه به جزئیات نقش هر یک از این اجزا می پردازیم.

اسکرول گره
گره Scroll راه اصلی برای برنامه ها و کاربران برای تعامل با Scroll است. این شامل سه ماژول، Sequencer ، Coordinator و Relayer است.
Sequencer
ابتدا Sequencer یک رابط JSON-RPC ارائه می دهد و تراکنش های L2 را می پذیرد. در هر چند ثانیه، دستهای از تراکنشها را از ممپول L2 بازیابی میکند و آنها را اجرا میکند تا یک بلوک L2 جدید و یک ریشه حالت جدید ایجاد کند. پیاده سازی sequencer ما بر اساس Go-Ethereum (Geth)، یکی از محبوب ترین پیاده سازی گره اتریوم است. با فورک کردن Geth، میتوانیم به بهترین سازگاری دست پیدا کنیم و امنیت را به ارث ببریم که آزمون زمان خود را پس داده است.
Coordinator
هنگامی که یک بلوک جدید ایجاد می شود، Coordinator مطلع می شود و رد اجرای این بلوک را از Sequencer دریافت می کند. سپس رد اجرا را به یک غلتک انتخاب شده به طور تصادفی از استخر غلتکی برای تولید اثبات ارسال می کند.
Relayer
رله بریج و قراردادهای جمعآوری شده در اتریوم و اسکرول را تماشا میکند. دو مسئولیت اصلی دارد. ابتدا قرارداد جمعآوری را نظارت میکند تا وضعیت بلوکهای L2 از جمله در دسترس بودن دادهها و اثبات اعتبار آنها را پیگیری کند. دوم رویدادهای سپرده و برداشت را از قراردادهای پل مستقر در اتریوم و اسکرول مشاهده می کند و پیام ها را از یک طرف به طرف دیگر منتقل می کند.

شبکه غلتکی
یا Rollers به عنوان اثبات کننده در شبکه عمل می کنند که مسئول تولید اثبات اعتبار برای zkRollup هستند. انتظار میرود که غلتکها از شتابدهندههایی مانند GPU FPGA و ASIC برای کاهش زمان اثبات و هزینه اثبات استفاده کنند. تصویر نشان می دهد که چگونه یک غلتک برای هر بلوک اثبات اعتبار تولید می کند. فرآیند شامل مراحل زیر است:
یک غلتک ابتدا رد اجرای دریافتی از Coordinator را به شاهدان مدار تبدیل می کند.
برای هر یک از مدارهای zkEVM اثبات تولید می کند.
در نهایت از تجمیع اثبات برای ترکیب اثباتهای چند مدار zkEVM در یک بلوک اثبات استفاده میکند.
قرارداد جمع و پل

قراردادهای جمع و پل
اسکرول از طریق قراردادهای هوشمند Rollup و Bridge به لایه پایه اتریوم متصل می شود . اینها با هم، در دسترس بودن داده ها را برای تراکنش های L2 تضمین می کنند و به کاربران اجازه می دهند دارایی ها و پیام ها را بین L1 و L2 ارسال کنند.
Rollup
قرارداد Rollup ریشه ها و بلوک های حالت L2 را از Sequencer دریافت می کند. ریشه های حالت را در حالت اتریوم و داده های بلوک L2 را به عنوان calldata اتریوم ذخیره می کند. این در دسترس بودن دادهها را برای بلوکهای اسکرول فراهم میکند و از امنیت اتریوم استفاده میکند تا اطمینان حاصل شود که فهرستکنندهها از جمله Scroll Relayer میتوانند بلوکهای L2 را بازسازی کنند. هنگامی که یک اثبات بلوکی که اعتبار یک بلوک L2 را تأیید می کند توسط قرارداد جمع آوری تأیید شد، بلوک مربوطه در اسکرول نهایی شده در نظر گرفته می شود
Bridge
قراردادهای Bridge مستقر در اتریوم و اسکرول به کاربران اجازه می دهد پیام های دلخواه را بین L1 و L2 ارسال کنند. در بالای این پروتکل ارسال پیام، ما همچنین یک پروتکل پل زدن غیرقابل اعتماد ایجاد کردهایم که به کاربران اجازه میدهد داراییهای ERC-20 را در هر دو جهت پل بزنند. برای ارسال پیام یا وجوه از اتریوم به اسکرول، کاربران یک sendMessageتراکنش را در قرارداد Bridge فراخوانی میکنند. Relayer این تراکنش را در L1 ایندکس می کند و آن را برای گنجاندن در یک بلوک L2 به Sequencer ارسال می کند. ارسال پیامها از اسکرول به اتریوم از فرآیند مشابهی در قرارداد L2 Bridge استفاده میکند..
نقشه ی راه

