فرانت رانینگ (Front running) و حمله ساندویچی (sandwich attack) در ارز دیجیتال

در چند سال اخیر با رشد چشمگیر امور مالی غیرمتمرکز (DeFi) و افزایش مجموع سرمایه انباشته شده در این حوزه، تمایل و انگیزه برای سو استفاده از آسیب پذیری‌ها و ایجاد اختلال در آن نیز بیشتر شده است؛ به طوریکه هر عضوی از ارائه دهندگان خدمات در هر سطحی به بوته محک گذاشته می‌شود. Front Running  یکی از مهم‌ترین و رایج‌ترین این حملات است که در این مقاله به توضیح کامل آن خواهیم پرداخت .

مقدار بیشینه قابل استخراج (MEV) چیست؟

هدف اصلی ماینرها، اعتبارسنج‌ها و هر گره‌ای که مسئولیت تایید تراکنش‌ها و اضافه کردن بلاک‌های جدید به زنجیره را در هر شبکه بلاک‌چین برعهده دارد، کسب درآمد از طریق انجام فعالیت صادقانه در شبکه است. با این اوصاف هریک از گره‌ها (node) در تلاش هستند تا با تایید تراکنش‌ها و کسب پاداش حاصل از ساخت بلاک در شبکه، بیشترین درآمد را به دست آورند.

اما درآمد مهم دیگری نیز به نام maximal extractable value (MEV) وجود دارد. MEV به معنای مقدار بیشینه قابل استخراج است. در واقع ماینرها / اعتبارسنج‌ها ترجیح می‌دهند تراکنش‌هایی را تایید کنند که کارمزد بیشتری دارند؛ به همین جهت معمولا تراکنش‌ها در بلاک به ترتیب کارمزدها قرار می‌گیرند و شیوه قرارگیری آن‌ها مانند تصویر بالا و براساس زمان ارسال نیست.  البته طبق آمار، بیشتر درآمد حاصل از این موضوع عاید گردانندگان بات‌ها و تریدرهای دیفای می‌شود و درآمد ماینرها/اعتبارسنج ها از MEV به مراتب کمتر است .

Mempool  چیست؟

برای درک بهتر MEV نیاز است ابتدا با مفهوم mempool آشنا شویم؛ بطور خلاصه mempool اتاق انتظاری برای تراکنش های تایید نشده محسوب می‌شود و فضایی است که نودهای کامل (Full Nodes) شبکه به ذخیره تراکنش‌های تایید نشده اختصاص می‌دهند.

پس از ثبت هر تراکنش در بلاک، بقیه نودها آن را از mempool خود حذف می‌کنند و آن بخش از حافظه با انتشار تراکنش جدید مجددا پر می‌شود. در شبکه هایی مانند بیت کوین و اتریوم که مشکل سرعت و مقیاس پذیری وجود دارد، حجم mempool در هنگام شلوغی شبکه ممکن است از حجم بلاک بیشتر شود؛ این امر منجر به تایید نشدن تراکنش‌ها در بلاک مورد نظر و نیاز به زمان انتظار بیشتر برای ثبت در بلاک‌های بعدی می‌شود.

ماینرها برای انتخاب تراکنش از بین تراکنش‌های تایید نشده موجود در فضای Mempool کامل مختار هستند. از آنجاییکه هدف ماینرها کسب سود بیشتر از توان محاسباتی خرج شده است، اولویت آنها با تراکنش‌هایی است که کارمزد بیشتری را به ماینرها پیشنهاد می‌دهند و مقدار زمانی که تراکنش‌ها در انتظار تایید بوده‌اند در اولویت قرار ندارد. به همین دلیل با افزایش میزان کارمزد پرداختی، سرعت تایید تراکنش و ثبت آن در بلاک‌چین افزایش می‌یابد و تراکنش‌های دارای کارمزد خیلی کم ممکن است مدت زمان زیادی در صف انتظار Mempool باقی بمانند.

مفهوم فرانت رانینگ و حمله ساندویچی

از آنجایی که با دو مفهوم مرتبط MEV و mempool آشنا شدیم اکنون می‌توانیم به سراغ موضوع اصلی یعنی front running  و attack sandwichبرویم. فرانت رانینگ به معنی انجام تراکنشی قبل از یک تراکنش خاص و با آگاهی قبلی است و معمولا با تراکنشی دیگر بعد از آن تراکنش خاص همراه می‌شود که running back نام دارد. به حملهrunning front  و به دنبال آن حمله running back در مجموع attack sandwich گفته می‌شود.

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

از طرف دیگر در فضای بلاک‌چین به دلیل شفافیت موجود و دسترسی عمومی به اطلاعات تراکنش‌ها، فرانت رانینگ به سیاهی بازار های سنتی نیست و درباره اخلاقی یا غیراخلاقی بودن آن اتفاق نظری وجود ندارد.  از attack sandwich و running front بیشتر جهت بر هم زدن توازن جفت ارز‌ها در استخرهای نقدینگی صرافی‌های غیرمتمرکز مانند UniSwap V2 که از مدل بازارساز خودکار (AMM) استفاده می‌کنند، برای قیمت نسبت جفت ارز مورد نظر استفاده می‌شود.

صرافی های غیرمتمرکز بر پایه مدل AMM ، از فرمول X *Y=k (که در آن XوY دو ارز مورد نظر و k عدد ثابتی است) استفاده می‌کنند.

Attackerها با مشاهده تراکنشی بزرگ از سوی یک کاربر، تراکنشی هم جهت با تراکنش مورد نظر برای سواپ کردن در استخر نقدینیگی ارسال کرده و ماینر/اعتبارسنج با ثبت fee بیشتر، تراکنش attacker را قبل از تراکنش قربانی ثبت می‌کند.

با ثبت تراکنش attacker و انجام شدن معامله، نسبت قیمت ارز مورد نظر به هم خورده و قیمت آن در استخر نقدینگی بالا می‌رود (اندازه نوسان به وجود آمده با حجم استخر رابطه عکس دارد) و پس از آن معامله کاربر قربانی با قیمت جدید انجام می‌شود. قیمت پس از انجام معامله دوباره بالا می‌رود و در نهایت attacker  باید تراکنشی مشابه در جهت عکس (running back) انجام دهد تا به سود مورد نظر دست یابد که به آن attack sandwich  گفته می‌شود .

چالش‌های موجود چیست؟

البته این سود به راحتی به دست نمی‌آید و چالش‌هایی را به همراه دارد؛ از جمله این چالش‌ها می‌توان به انبوهی از رقبا برای این کار اشاره کرد. در واقع وقتی چنین سفارش بزرگی در mempool ثبت می‌شود، تنها شما نیستید که از آن با خبر می‌شوید و این موضوع ممکن است باعث شود که که در مزایده قیمت گس (gas price auction) وارد نشوید و با لغو کردن تراکنش صرفا باید هزینه گس تراکنش را پرداخت کنید. درواقع انتخاب کردن مقدار کارمزد خود موضوعی چالش برانگیز است .

علاوه بر آن اکنون اکثر صرافی های غیر متمرکز از قابلیت slippage بهره می‌برند که بات‌ها با وجود آن صرفا می‌توانند حجم معامله خود را تا حداکثر میزان ثبت شده توسط کاربر در تنظیمات slippage تعیین کنند؛ زیرا در غیر این صورت معامله کاربر بصورت خودکار لغو خواهد شد و خبری از فرصت آربیتراژ نخواهد بود.

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