پیشرفته مقالات

اثر مرج بر MEV؛ آپدیت مرج اتریوم چه تاثیری بر مفهوم حداکثر ارزش قابل استخراج دارد؟

دلایل زیادی وجود دارد که باعث می‌شود پایان یافتن امکان استخراج اتر هیجان‌انگیز شود؛ فرایندی که به انرژی فراوانی نیاز دارد و البته می‌تواند خیلی چیزها را تغییر بدهد. یکی از معضلاتی که کاربران اتریوم با آن دست و پنجه نرم می‌کنند، به حداکثر ارزش قابل استخراج (Maximal Extractable Value) و هم‌چنین ربات‌های Mempool مربوط است؛ ربات‌هایی که می‌توانند با شناسایی تراکنش‌های قابل توجه حاضر در اتاق انتظار (همان ممپول)، آن‌ها را کپی و زودتر از تراکنش اصلی اجرا کنند. بررسی اثر مرج بر MEV، نشان می‌دهد که انتقال این شبکه به گواه اثبات سهام (Proof of Stake)، می‌تواند راه‌حلی را برای این مشکل فراهم کند؛ این همان موضوعی است که در این مقاله از میهن بلاکچین، می‌خواهیم آن را پوشش بدهیم. برای درک بهتر این مسئله، ابتدا توضیحی کوتاه در مورد ساختار ممپول خواهیم داد و سپس مفهوم حداکثر ارزش قابل استخراج را با یک مثال بررسی خواهیم کرد. با ما همراه باشید. 

نگاهی به سازوکار Mempool

مفهوم mempool در ارز دیجیتال
منبع: lcx

سرانجام در ۱۴ و ۱۵ سپتامبر ۲۰۲۲ (۲۳ و ۲۴ شهریور ۱۴۰۱) سال‌ها تحقیق و توسعه در قالب رویداد مرج (Merge) اتریوم  به ایستگاه پایانی‌اش خواهد رسید. طی این رویداد، بلاکچین اتریوم رویکرد مکانیزم اجماع PoS را در پیش می‌گیرد. 

شاید پدیده ادغام بتواند روی معضلی که سال‌هاست بلاکچین اتریوم با آن مواجه است، اثر بگذارد؛ یعنی حداکثر ارزش قابل استخراج که البته پیش‌تر به عنوان ارزش قابل استخراج ماینر یا Miner Extractable Value شناخته می‌شد. این فرایند که به اختصار به صورت MEV نمایش داده می‌شود، اساس صنعت پر رمز و رازی را تشکیل می‌دهد که بر پایه ارزش قابل استخراج ناشی از تولید بلوک ساخته می‌شود و از سال ۲۰۲۰ بیش از نیم میلیارد دلار سود برای ماینرها تولید کرده است. حداکثر ارزش قابل استخراج، فرایندی هزینه‌بر است که از معماری بدون نیاز به اعتماد اتریوم ناشی می‌شود.

در اینجا بهتر است برای درک اثر رویداد مرج بر MEV، ابتدا پا در جهان مرموز استخر حافظه (Memory Pool) یا به اختصار Mempool بگذاریم. زمانی که تراکنشی را در بلاکچین اتریوم ایجاد می‌کنید، آن تراکنش در جایی به اسم ممپول به سایر تراکنش‌ها ملحق می‌شود؛ چیزی شبیه به اتاق انتظار در مطب پزشک. تراکنش‌ها آن‌جا منتظر می‌مانند تا وقتی که یک ماینر در بلوک بعدی قرارشان بدهد. زمانی که یک بلاک پر می‌شود، در صورت پیدا شدن نانس، به زنجیره ارسال می‌شود. 

تا اینجا که همه‌چیز خیلی خوب به نظر می‌رسد؛ اما Mempool آن چیزی نیست که بخواهید روی آن برچسب «یک فضای ایمن» بزنید؛ چرا که ربات‌های پیچیده‌ای در آن‌جا پنهان شده‌اند که به دنبال کسب سود از فرصت‌های آربیتراژ هستند. 

حداکثر ارزش قابل استخراج (MEV) چیست؟

نگاهی به مفهوم MEV
منبع: chainalysis

یکی از شیوه‌های بدخواهانه‌ای که ربات‌های ممپول به کار می‌بندند، با عنوان حمله ساندویچی (Sandwich Attack) شناخته می‌شود؛ یعنی زمانی که ربات، معامله‌ای کلان را تشخیص می‌دهد و سپس تراکنش را کپی می‌کند و مبلغ بیشتری (نسبت به ایجادکننده تراکنش) به ماینر می‌دهد تا تراکنش‌های آن را زودتر از موعد پردازش کند.

بیایید با یک مثال این مسئله را بهتر بررسی کنیم. در نظر بگیرید که ۱۰ عدد اتر دارید و می‌خواهید ۲ هزار توکن فرضی با نام EC بخرید؛ پس به یک صرافی غیرمتمرکز (DEX) مراجعه می‌کنید و معامله‌تان را انجام می‌دهید. تراکنش شما وارد ممپول می‌شود و یک ربات آن را شناسایی می‌کند. سپس آن را عینا کپی می‌کند و کارمزد بیشتری را به ماینر پرداخت می‌کند. ربات این کار را انجام می‌دهد تا تراکنش موردنظرش زودتر پردازش شود. به این ترتیب ربات ۲ هزار توکن EC را خریداری می‌کند؛ یعنی۲۰۰ توکن EC به ازای هر اتر. 

حالا نوبت شماست. شما انتظار دارید در ازای هر اتری که در اختیارتان است، ۲۰۰ توکن EC دریافت کنید؛ اما ربات با فرانت رانینگ (Front Running) از شما پیشی گرفته و تراکنش را زودتر انجام داده است. این کار موجب تغییر قیمت EC می‌شود؛ در نتیجه این امر، شما تنها ۱۹۹ EC به ازای هر اتر دریافت خواهید کرد. یعنی در مجموع، با ۱۰ اتری که در ابتدا داشتید، ۱,۹۹۰ توکن EC دریافت می‌کنید، نه ۲,۰۰۰ توکن. 

زمانی که تراکنش شما انجام می‌شود، قیمت EC دوباره تغییر می‌کند و این بار هر یک عدد ETH، معادل ۱۹۸ EC خواهد بود؛ این به آن معناست که ربات می‌تواند ۲,۰۰۰ EC خود را با قیمت ۱۰.۱ اتر بفروشد و ظرف مدت یک دقیقه، ۰.۱ اتر سود کند. 

ممکن است این رقم چندان هم زیاد به نظر نیاید؛ اما این ربات‌ها به طور پیوسته اجرا می‌شوند و تراکنش‌های فرانت رانینگ با گذشت زمان می‌توانند بسیار سودده باشند.

استراتژی‌های فراوان دیگری هم وجود دارند که این ربات‌ها از آن‌ها استفاده می‌کنند و حتی پیچیده‌تر هم هستند. روی هم رفته این اقدامات را با نام حداکثر ارزش قابل استخراج می‌شناسند که بسیاری از آن‌ها، به اندازه‌ همین مثال فرانت رانینگ، کار  و تلاش زیادی را می‌طلبند. 

MEV به یک مشکل عمده برای کاربران واقعی اتریوم تبدیل شده است که هیچ راه‌کار مشخصی ندارد. این الگوریتم‌ها، به سادگی کدگذاری می‌شوند و بسیار هم سودده هستند. در واقع، کاوش‌گر MEV داشبوردی دارد که این حرکت را دنبال می‌کند و نشان می‌دهد که این قبیل سودجویی‌ها، از زمان ثبت سوابق در اولین روز ژانویه ۲۰۲۰ (دی و بهمن ۱۳۹۹)، چیزی نزدیک به ۷۰۰ میلیون دلار سود خالص را برای این ربات‌ها رقم زده‌اند.

کنترل چنین موقعیتی بسیار دشوار است. دلیل این امر آن است که این کنترل کردن، وظیفه یک سازمان متمرکز است؛ در حالی‌که اتریوم ویژگی غیرمتمرکز بودن دارد و این دو مسئله با هم در تضاد هستند. هرچند اشخاص ثالث راه‌هایی را برای حفاظت کاربران در برابر چنین مداخلات فریب‌کارانه‌ای یافته‌اند.

روش‌های جلوگیری از فرانت رانینگ در MEV

مقابله با فرانت رانینگ در MEV
منبع: cointelegraph

با توجه به آنچه گفته شد، می‌توان دریافت که Front Running معضلی در دنیای رمزارزهاست که البته برای حل آن، راهکارهایی هم ارائه شده است. به عنوان مثال، Flashbots Protect چیزی را ارائه می‌کند که موسوم به فراخوانی رویه از راه دور یا Remote Procedure Call یا به اختصار RPC است؛ این امکان، تراکنش‌ها را از طریق سروری خصوصی ارسال می‌کند تا از ورود آن به ممپول عمومی جلوگیری کند. به طور مشابه، شبکه ادن (Eden Network) هم به استیک‌کنندگان اجازه می‌دهد که از دسترسی به خدمات خود استفاده کنند و  به شبکه‌ای دسترسی پیدا کنند که تراکنش‌ها در آن به صورت خصوصی پردازش می‌شوند. 

اثر مرج بر MEV چیست و چه تغییراتی در شبکه رخ خواهد داد؟

تغییر ماهیت MEV با رویداد مرج اتفاق خواهد افتاد. بسیاری از اتفاقات به گونه‌ای دیگر رخ خواهند داد و عوامل جدیدی در شبکه فعالیت خودشان را آغاز خواهند کرد. در ادامه این تغییرات را در قالب چند مسئله، بررسی می‌کنیم.

تولیدکنندگان بلوک:‌ بازیگران جدید شبکه پس از انتقال به PoS

سیستم اثبات سهام اتریوم پس از Merge، پای بازیگر و عامل جدیدی را به ماجرا باز می‌کند: یعنی سازنده بلوک یا Block Builder. سازنده بلاک کسی است که تراکنش‌ها را مرتب و آن‌ها را برای تایید نهایی ارسال می‌کند. نکته قابل توجه در Proof of Stake‌‌ این است که در اینجا این ماینرها نیستند که شانس استفاده از حداکثر ارزش قابل استخراج را دارند؛ بلکه این کار توسط  ولیدیتور (Validator) یا اعتبارسنج انجام می‌شود. مطالعات حاکی از آن است که انجام MEV می‌تواند سودآوری استیکینگ را ۲ تا ۳ برابر بیشتر کند. این امر نشان می‌دهد که Stakerهایی که از انجام این کار پرهیز می‌کنند، در واقع از کسب سودی که می‌توانند به راحتی آن را به دست بیاورند، چشم می‌پوشند. 

افزایش پاداش‌های استیکینگ از طریق MEV
منبع: integral.link

در سیستم گواه اثبات کار (Proof of Work)، استخراج‌کنندگان در مورد ترتیبی که تراکنش‌ها مطابق آن از Mempool خارج می‌شوند، تصمیم‌گیری می‌کنند. به دلیل آنکه تراکنش‌ها، بلوک‌ها را می‌سازند و هر تراکنش کارمزدها و هزینه اولویت متفاوتی دارد، ارزش هر Block به میزان زیادی به تراکنش‌های داخل آن بستگی دارد. این امر موجب ایجاد انگیزه برای سازندگان بلوک می‌شود تا سودآورترین بلاک‌ها را ایجاد کنند؛ چرا که بلوک‌ها در درجه اول توسط سازندگان بلاک‌ها، اولویت‌بندی و تایید می‌شوند. 

همین حالا هم چندین پروتکل وجود دارند که تلاش می‌کنند سهم خود را از بازار سازندگان جدید بلوک بگیرند و این امر می‌تواند به یک صنعت سودآور تبدیل شود. پس از آن، MEV Boost را داریم که هدفش فراهم کردن استخراج MEV به شکلی دسترس‌پذیرتر و عادلانه‌تر است. MEV Boost نرم‌افزاری است که تیم Flashbots آن را منتشر کرده است تا کسب سود از MEV را آسان‌تر کند. این نرم‌افزار، وظیفه‌ تغذیه تراکنش‌های MEV را برای تولیدکنندگان Block به عهده دارد؛ اما با چند تفاوت اساسی در اینجا روبرو هستیم.

مهم‌ترین تفاوت این است که MEV Boost فقط بلوک‌های کامل را بررسی می‌کند. تیم سازنده این نرم‌افزار گفته است که این امر به منظور جلوگیری از حملات Front-Running‌ یا تولیدکننده بلاک است تا مبادا سود جستجوگران را به سرقت ببرند. جستجوگران (Searcher) فرصت‌های سودمند MEV را جستجو می‌کنند و ما نمی‌خواهیم که سازندگان بلاک، محتوای بلوک‌ها را بخوانند. آنها می‌توانند Blockها را از نو ایجاد و ثبت کنند و هیچ سهمی هم به جستجوگران نمی‌دهند. پس این ابهام به نظر دلیل منصفانه‌ای دارد و البته پیامدهایی نیز به همراه دارد.

یکی از این پیامدها این است که MEV Boost ریسک متمرکز شدن را به دنبال دارد. این مسئله به شکل بازاری برای بلوک‌ها عمل می‌کند. Searcherها تراکنش‌ها را با هم جمع می‌کنند، سپس بلوک‌های کامل را به یک رله API که Flashbots آن‌ها را اجرا می‌کند، ارسال می‌کنند. پس از آن است که رله، بلاک‌ها را بررسی می‌کند و آن‌ها را در اختیار یک تولیدکننده بلوک قرار می‌دهد. 

Block Producer‌ (که بعد از رویداد مرج به اعتبارسنج تبدیل خواهد شد) تمام فول بلاک‌ها را به زنجیره اضافه می‌کند که البته قابل رویت نیستند. این رله (Relay) به احتمال فراوان با مقررات و قوانین دفتر کل دارایی‌های خارجی یا Office of Foreign Assets Control (OFAC)‌ سازگار است و تراکنش‌ها را کنار می‌گذارد (یا بسته به نقطه‌نظر شما آن‌ها را سانسور می‌کند). این تنها رله‌ای است که قرار است بعد از Merge هم اجرا شود. 

رله API Flashbots
منبع: twitter.com

این امر موجب ایجاد سوالاتی در شبکه اتریوم می‌شود. برای مثال، چرا شبکه تولید Block‌ را در اختیار یک نهاد متمرکز قرار داده بود که می‌توانست تراکنش‌ها را با توجه به ریسک سیاسی رد کند یا بپذیرد؟

گزینه‌های ولیدیتورها پس از مرج
منبع: twitter.com

دست‌کم این‌ها سوالاتی هستند که در نشست تیم‌های مختلف اتریوم به وجود آمده‌اند. 

سهم اعتبارسنج‌ها از MEV

اثبات کار در اتریوم به ماینرها تکیه می‌‌کند تا بر این اساس، امنیت شبکه را تامین کنند. در سمت دیگر اثبات سهام بر اعتبارسنج‌ها یا همان Validatorها تکیه دارد. برای اینکه شخصی به عنوان اعتبارسنج بخواهد در این شبکه ایفای نقش کند، لازم است که ۳۲ اتر را استیک کند. هم‌چنین به سه بخش جداگانه نرم‌افزاری نیز مورد نیاز است که عبارت‌اند از: 

  • یک کلاینت برای اجرا
  • یک کلاینت برای اجماع
  • یک اعتبارسنج

Validatorها بلوک‌های جدید را ارائه می‌کنند، ارسال رای را به عهده دارند و هر قانون‌شکنی و ناهنجاری را در سیستم رصد می‌کنند” اما این نقش مهم و کلیدی نیازمند مشوق‌هایی است. در حالیکه بخشی از این مشوق‌ها از طریق اتری که اعتباسنج‌ها استیک می‌کنند فراهم می‌شود، پاداش‌هایی نیز برای Validatorها وجود دارد. این‌طور تخمین زده می‌شود که اعتبارسنج‌ها به صورت روزانه چیزی در حدود ۱,۶۰۰ اتر دریافت می‌کنند که در میان آن‌ها تقسیم می‌شود؛ البته این رقم با توجه به مجموع کل اترهایی که اعتبارسنج‌ها استیک کرده‌اند، می‌تواند متفاوت باشد. هم‌چنین Validatorها به لطف طرح EIP-1559 کارمزدهای اولویت (Priority Fee) را نیز دریافت می‌کنند. در پروپوزال EIP1559 کارمزدهای دوگانه به نام Priority Fee و Base Fee معرفی شد، که کارمزد اولویت برای ماینر و کارمزد پایه برای سوزاندن در نظر گرفته شده است.

اما مسئله اینجاست که این مشوق‌‌ها در مقایسه با میزان پاداشی که ماینرها از طریق اثبات کار به دست می‌آورند، بسیار ناچیز است. پاداش ماینینگ قبل از مرج، حدودا برابر ۱۳,۰۰۰ اتر به صورت روزانه است؛ این به آن معناست که پس از Merge، ولیدیتورها چیزی در حدود ۸۵ درصد کمتر از آنچه که ماینرها قبل از مرج به دست می‌آورند، کسب خواهند کرد. البته این مسئله را نیز به خاطر بسپارید که اعتبارسنج‌ها در مقایسه با استخراج‌گران، هزینه‌های سربار (مثل هزینه برق) کمتری خواهند داشت.

این همان نقطه‌ای است که پای MEV به ماجرا باز می‌شود. سهم عمده MEV در حال حاضر نصیب ماینرهایی می‌‌شود که از طریق اثبات کار در شبکه فعالیت می‌کنند. پس از رویداد ادغام، حداکثر ارزش قابل استخراج احتمالا نصیب اعتبارسنج‌ها خواهد شد. هنوز کسی نمی‌داند که این میزان چقدر خواهد بود؛ اما برخی تخمین‌ها حاکی از آن است که این اتفاق می‌تواند بازده Validatorها را تا بیش از ۵۰ درصد افزایش دهد. البته این مسئله به این امر بستگی دارد که ولیدیتورها بخواهند مثل ماینرهای فعلی عمل کنند یا نه. 

نقش سازندگان و پیشنهاددهندگان (Proposer) بلوک پس از Merge

رویدادی که طی آن مشخص می‌شود کدام تراکنش‌ها باید در یک بلوک قرار بگیرند و این کار با چه ترتیبی انجام می‌شود، فرایندی است که از آن با نام Block Building یا ساخت بلاک یاد می‌شود.‌ زمانی که با اثبات کار سروکار داریم، ساخت بلوک و عملیات ماینینگ (یعنی پیشنهاد و تایید یک Block)، هر دو توسط یک بازیگر در شبکه صورت می‌پذیرد. از آنجایی که استخراج نیازمند دانش و ابزارهای ویژه‌ای است، مجموعه کوچکی از اپراتورهای استخر Mining، مسئول بخش اعظمی از ساخت بلوک‌ها در اثبات کار اتریوم هستند؛‌ اتفاقی که پس از Merge دستخوش تغییر خواهد شد.

پس از ادغام اتریوم، ایجاد بلاک و پیشنهاد آن هم‌چنان توسط یک نفر انجام خواهد شد؛‌ یعنی همان ولیدیتور. اما مسئله اینجاست که تعداد زیادی از Validatorهای جدید احتمالا به مشارکت‌کنندگانی تبدیل خواهند شد که مهارت ماینرها را در تولید Blockهایی بهینه و سودمند ندارند.

در نتیجه همین امر است که مرج شرایطی را برای ظهور کلاس جدیدی از بازیگران اقتصادی شبکه اصلی فراهم می‌کند، که همان سازندگان بلوک هستند. این بازیگران متخصصانی هستند که در یک بازار زمان‌ واقعی، با هم به رقابت می‌پردازند تا ساخت بلوک را از طرف اعتبارسنج‌ها انجام بدهند. سرانجام، این جدایی میان Block Builderها و پیشنهاددهندگان بلاک در شبکه، تحت آنچه که به عنوان جداسازی سازنده/ پیشنهاددهنده Proposer/Builder Separation (PBS) شناخته می‌شود، تدوین خواهد شد. 

MEV در دنیای پس از مرج

تیم بیکو (Tim Beiko)،یکی از توسعه‌دهندگان اصلی اتریوم، در تاریخ ۱۸ آگوست ۲۰۲۲ (۲۷ مرداد ۱۴۰۱) این توییت را منتشر کرده است:

مرج و MEV
منبع: twitter.com

حالا سوال اینجاست که در چنین شرایطی باید چه کنیم؟ برخی از پیشنهادها به حذف Mev-Boost از شبکه اشاره دارد. مطابق این پیشنهاد، باید مدتی از انتقال شبکه به اثبات سهام بگذرد و تا آن موقع Mev-Boost باید حذف شود. حتی یک نفر هم پیشنهاد داده بود که ادغام به تعویق بیفتد.

چنین پیشنهادی شاید زیاده‌روی باشد؛‌ اما بقیه در حال فکر کردن بر روی راه‌ حل این مسئله هستند. به همین خاطر تیم Flashbots هم کد متن‌ باز Mev-Boost را در اختیارشان گذاشته‌ است. اما این ممکن است کافی نباشد. 

اجرا کردن Relayerها و جستجوگران برای یافتن فرصت‌های MEV، کار سختی است. اینکه از Stakerهایی که قبلا از مشتریان خود مراقبت می‌کردند بخواهیم نرم‌افزارهایی پیچیده را اجرا کنند، خواسته‌ای بزرگ است. 

فارغ از این مسئله، ما از ولیدیتورها انتظار داریم که از مزایای فرصت‌های MEV‌، بدون کمک گرفتن از Flashbots یا با کمک گرفتن از آ‌نها، بهره‌مند شوند. پاداش‌های به دست آمده هم‌چنان کاملا سودساز خواهند بود. به‌علاوه، MEV تنها بازده حاصل از استیکینگ ETH را اضافه می‌کند.

شماری از سایر رله‌کنندگان نیز در پاسخ به این مسئله در حال ظهور هستند و هم‌چنان باید ببینیم جامعه‌ اتریوم چگونه می‌خواهد با MEV در دنیای پس از مرج مواجه شود. 

این مسئله را هم در نظر بگیرید که اگر پروتکل بتواند سودمندترین بلوک‌ها را ایجاد کند، تولیدکنندگان بلوک، Block خود را در همان ابتدا نهایی می‌کنند. این امر می‌تواند کاربران بیشتری را به سرویس‌های آن‌ها جذب کند؛ اتفاقی که استخر خصوصی بزرگ‌تری را برای تراکنش‌های آن‌ها فراهم می‌کند تا از میان آن‌ها انتخاب کنند و توانایی ایجاد بلوک‌هایی به مراتب بهتر را نیز داشته باشند؛ اتفاقی که در نهایت به ایجاد یک چرخه‌ بی‌عیب و نقص منتهی می‌شود. 

شاید به این فکر کنید که راه حل مقابله با ربات‌هایی که از سیستم باز و بدون نیاز به اعتماد اتریوم سوءاستفاده می‌کنند، در دستان تیم‌های حرفه‌ای به سبک رابین هود است؛ همان‌هایی که خودشان بهتر از هرکس دیگری از این مسئله سودجویی می‌کنند و مزایای آن را هم به کاربران بازمی‌گردانند؛ چنین نگرشی، واقعا عجیب است. 

به سختی می‌توان این مسئله را با اصل اوکام (Occam’s Razor) یا تیغ اوکام مرتبط دانست؛ اما شاید واقعا هم در این مورد کار کند. منظور از این اصطلاح آن است که وقتی در مورد مسئله‌ای، با توضیحات متفاوتی مواجه می‌شویم، بهتر است توضیح ساده‌تر را به عنوان راه‌کاری صحیح‌تر بپذیریم یا به بیان دیگر، حذف اطلاعات اضافی، سریع‌ترین راه برای رسیدن به حقیقت و توضیح بهتر مسئله است.

جمع‌بندی

رویداد ادغام می‌تواند بسیاری از مشکلات فعلی بلاکچین اتریوم را رفع کند و افراد بیشتری را به دومین اکوسیستم بزرگ کریپتو جذب کند. بر همین اساس، در این مطلب نگاهی به تاثیر Merge بر MEV و راه‌کار آن در مقابله با مشکل فرانت رانینگ پرداختیم. در استخرهای حافظه، ربات‌ها در کمین تراکنش‌های بزرگ می‌نشینند تا با کپی کردن آن‌ها، آن تراکنش‌ها را زودتر از تراکنش اصلی اجرا کنند و از این طریق به سود برسند. با انتقال اتریوم به گواه اثبات سهام، بازیگری به اسم سازنده بلوک وارد بازی می‌شود که وظیفه اولویت‌بندی و ترتیب خروج تراکنش‌ها از ممپول را به عهده دارد. این همان مسئله‌ای است که می‌تواند به رفع مشکل مذکور کمک کند. نظر شما در این باره چیست؟ آیا اثر مرج بر MEV مثبت خواهد بود؟

منبع
IntegralCoinDeskBlocknative

نوشته های مشابه

0 دیدگاه
Inline Feedbacks
View all comments
دکمه بازگشت به بالا