مفهوم فرانت رانینگ (Front Running) تا به حال مورد توجه زیادی قرار گرفته و چه در حوزه مالی مدرن و چه سنتی، درباره آن مطالب مختلفی تهیه شده است. در یک توضیح ساده و کوتاه، فرانت رانینگ زمانی اتفاق میافتد که شما از قصد خرید یک فرد مطلع میشوید و این اطلاعات میتوانید دارایی مورد نظر را خریداری و آن را به خریدار با قیمت بالاتر بفروشید. اما مفهوم دیگری به نام بک رانینگ (Back Running) در حوزه مالی وجود دارد که قصد داریم به آن بپردازیم. با میهن بلاکچین همراه باشید تا مفهوم بک رانینگ چیست، چگونگی انجام این حمله، تفاوت آن با فرانت رانینگ، انواع و معایب آن برای شبکههای بلاکچینی را توضیح دهیم.
بک رانینگ چیست؟
بک رانینگ با فرانت رانینگ متفاوت است. همانطور که توضیح دادیم، در فرانت رانینگ تراکنش ما قبل از تراکنش هدف انجام میشود؛ اما در Back Running درست برعکس است و تراکنش ما بلافاصله بعد از ثبت تراکنش در بلاک شبکه باید انجام شود.
بک رانینگ به شکلهای مختلفی انجام میشود. این مفهوم ممکن است در زمان انجام یک تراکنش سواپ در یک استخر نقدینگی، انجام شود یا زمانی که یک حساب معاملاتی یا یک تراکنش لندینگ (که نیاز به وثیقهگذاری دارد) لیکویی میشود، رخ دهد.
در ابتدا بهتر است قبل از توضیح درباره اینکه بک رانینگ چیست، به مفهومی به نام Bonding Curve یا منحنی اتصال اشاره کنیم. این مفهوم زمانی جاری میشود که یک تراکنش سواپ یا خریدوفروش در حال انجام است.
منحنی اتصال چیست و چه ارتباطی با بک رانینگ دارد؟
منحنی اتصال یک مفهوم اقتصادی – ریاضی است و از آن برای توصیف رابطه میان قیمت و عرضه یک دارایی استفاده میشود. شرط لازم برای برقراری این رابطه، محدودیت در عرضه یک دارایی است. وقتی شخصی یک دارایی را خریداری میکند، با خرید هر واحد عرضهشده، عرضه کل در گردش کاهش مییابد؛ بنابراین با توجه به این موضوع که اکنون دارایی در تملک فرد مورد نظر است و او نیز بهدنبال کسب سود خواهد بود، قیمت افزایش پیدا میکند؛ زیرا خریدار بعدی که میخواهد آن دارایی را داشته باشد، باید قیمت بیشتری برای خرید پرداخت کند. برای درک بهتر این مساله و ارتباط آن با مفهوم بک رانینگ، بهتر است مثالی بزنیم.
فرض کنید آرن میخواهد در یک پلتفرم دیفای (Defi)، مقداری از ارز دیجیتال A را بفروشد و در ازای آن، مقداری رمز ارز B خریداری کند. با توجه به «منحنی اتصال» و با انجام خرید، ارزش A بالا رفته و با فروش ارزش B کاهش مییابد (با توجه به عرضه در تملک). در همین حال اگر علیرضا استخر تراکنشها یا M را رصد کند، با خرید دارایی A میتواند از فرصت آربیتراژ آن در پلتفرمهای دیگر استفاده کند؛ یعنی علیرضا دارایی A را در پلتفرم اول خریداری میکند و در پلتفرم دوم بهفروش میرساند.
چند نوع بک رانینگ وجود دارد؟
همانطور که در بخش «بک رانینگ چیست؟» بیان کردیم، انواع مختلفی از Back Running وجود دارد. در این قسمت میخواهیم به انواع آنها و نوع عملکردشان اشاره کنیم.
یکی از انواع بک رانینگ، سفارشگذاری پس از انجام یک تراکنش فروش است. نکته مهمی که در اینجا وجود دارد این است که سفارشگذاری حتما باید در زمان مشخص و بعد از انجام تراکنش هدف انجام شود. بک رانینگ و تراکنش هدف باید در یک بلاک ثبت شوند. این نکته تنها برای این مدل از Back Running نیست و در تمام روشها صدق میکند.
نوع دیگر از بک رانینگ، ثبت سفارش بعد از لیکویید شدن یک قرارداد است. زمانی که یک قرارداد در حال لیکویید شدن است، اوراکلهای قیمتی پلتفرمی که از قرارداد میزبانی میکند، با آپدیت کردن، اطلاعات لیکویید شدن قرارداد را اعلام میکنند. افرادی که میخواهند از فرصت استفاده کنند و وثیقههای آنها را بخرند، بهسرعت وارد عملشده و ثبت سفارش میکنند.
البته بیان این موضوع شاید خالی از لطف نباشد که در موقع لیکویید شدن یک قرارداد در پلتفرمهای وامدهی و قرضدهی، ممکن است پای یک فرانت رانر در میان باشد. این افراد با انجام تراکنش Front Running نسب وثیقه به وام را دستکاری کنند. شاید بتوان اینگونه در نظر گرفت که در برخی موارد، حملهکنندگان یک حمله ساندویچی که ترکیبی از بک رانینگ و فرانت رانینگ است را ترتیب میدهند.
در تصویر زیر نمونه یک بک رانینگ را مشاهده میکنید.
مستطیل مشکی، تراکنش آپدیت قیمت از طرف اوراکل کامپوند (Compound) است. است. پس از اینکه این تراکنش انجام شد، همانطور که از مستطیلهای قرمز بالاتر از آن مشخص است، آدرسهای مقصد یکسان هستند.
توجه به دو نکته در اینجا مهم است. اولین این که، ممکن است این یک حمله ساندویچی باشد؛ زیرا قبل از آپدیت Compound ، به آدرسهای مشابه گفتهشده، درخواست ارسال شده است. بهعبارت دیگر یک حمله فرانت ران برای لیکویید حساب انجام شده است. اگر چنین چیزی صادق نباشد، دو تراکنش قبل از اوراکل بدون فایده است؛ زیرا برای بک رانینگ، تراکنش حتما باید بعد از تراکنش هدف انجام شود.
نکته دوم، تعدد ثبت تراکنشها است. یکی از مواردی که احتمال موفقیت ثبت تراکنش را بالا میبرد، انجام تراکنشهای مختلف پس از تراکنش هدف است. در ادامه در بخش «چگونه شانس موفقیت در بک رانینگ افزایش مییابد؟» توضیح میدهیم.
از دیگر مدلهای Back Running، مربوط به ری بیس (Rebase) برخی از کوینها و توکنها است. از ری بیس برای ثابت نگه داشتن قیمت برخی از داراییها استفاده میشود. مکانیسم ری بیس به این شکل عمل میکند که در صورت تغییر قیمت، برای ثابت نگه داشتن قیمت، موجودی کیف پول و عرضه در گردش تغییر پیدا میکند. به فرض مثال اگر ۱۰۰ عدد از توکن J داشته باشیم و قیمت آن کم شود، مقدار موجودی ما به ۹۵ عدد کاهش مییابد. این کاهش در نهایت باعث افزایش قیمت و بازگشت دارایی ما به سطح قبلی خود میشود. زمانی که فرایند ری بیسینگ در حال انجام است، بک رانرها وارد عمل میشود و تراکنشهای خود را ارسال میکنند که از اختلاف قیمت بهوجود آمده، بهرهمند شوند.
چگونه شانس موفقیت در بک رانینگ افزایش مییابد؟
انجام تراکنش در یک شبکه و ثبت آن در بلاک، توسط ماینرها انجام میشود. ماینرها نیز بهدنبال منفعت خود هستند و هر تراکنشی که کارمزد بالاتری پرداخت کند، اول از همه مورد بررسی قرار میگیرد. از آنجایی که بک رانرها بهدنبال کسب سود هستند، اگر پس از انجام تراکنش هدف مدام تراکنشهایی را با گس بالاتر ثبت کنند، حاشیه سود آنها کم و کمتر میشود و دیگر برای آنها توجیهپذیر نیست. البته عدهای ممکن است با وجود متحمل شدن هزینه بالا، هنوز انجام بک رانینگ برای عدهای سودآور و ارزنده باشد؛ اما اگر کسی نخواهد به این روش کار کند، روش دیگر یعنی ثبت متعدد تراکنش میروند.
برای مثال فرض کنید که میخواهید در یک مسابقه بختآزمایی شرکت کنید. تمام بلیطهای آن یک قیمت دارند و تنها یک روش وجود دارد که شانس شما برای برنده شدن افزایش پیدا کند؛ آن هم خرید چندین بلیط بختآزمایی است.
اما حالا چگونه یک بازیکن میتواند چندین تراکنش همزمان ارسال کند؟ همانطور که میدانیم یک کاربر در اتریوم، توسط نانس (Nonce) محدود میشود. نانس تراکنشهای انجام شده توسط یک آدرس واحد را پیگیری می کند و اگر تمام تراکنشهای منتهی به یک Nonce مشخص هنوز توسط ماینرها استخراج نشده باشند، هیچ تراکنش دیگری نمیتواند با آن نانس ماین شود.
پس چه کاری میتوان انجام داد؟ برای انجام یک بک رانینگ موفق باید از چندین حساب مختلف با یک میزان گس مشخص اقدام کرد. البته شاید این کار بهینه نباشد. حالت بهینهتر این، فراخوانی قرارداد هوشمند از یک حساب است.
معایب و مشکلات بک رانینگ
شاید بک رانینگ در نگاه اول مانند فرانت مشکلی نداشته باشد و غیر اخلاقی به حساب نیاید. تنها مشکلی که پیش میآید این است که اگر افراد زیادی با این سیستم (بک رانینگ) وارد معامله و انجام تراکنش شوند، شبکه توسط تراکنشهای زیادی و بیهدف که سعی در انجام آربیتراژ دارند، شلوغ میشود و در نتیجه کارمزد تراکنش مدام افزایش خواهد یافت.
جمعبندی
در این مقاله به موضوع بک رانینگ چیست، پرداختیم. بک رانینگ جزو حملات دیفای قرار دارد و بهمعنای استفاده از فرصتهای بهوجود آمده بعد از یک تراکنش مشخص است. بک رانینگ ممکن است بعد از یک تراکنش خرید و فروش در یک دکس رخ دهد، ممکن است بعد از لیکویید شدن یک قرارداد وام دهی صورت بگیرد یا در اثر مکانیسم ری بیسینگ انجام شود.
آیا تا به حال با بک رانینگ روبهرو شدهاید؟ تجربیات خود را با ما در میان بگذارید.