وام فوری در سالیدیتی، نوعی وام بین قراردادهای هوشمند به شمار می روند که باید در همان تراکنش بازپرداخت شوند. در این مقاله، علاوه بر استاندارد ERC3156 و ساختار وام های فوری، راهکارهایی بررسی می شوند که ارائه دهندگان وام و وام گیرندگان در آن ها ممکن است هدف حمله قرار بگیرند، نکاتی که دانستن آن ها برای توسعه دهندگان قراردادهای هوشمند و علاقه مندان به آموزش برنامه نویسی در حوزه دیفای اهمیت زیادی دارد.
ابتدا، یک مثال بسیار ساده از نحوه عملکرد وام فوری ارائه می کنیم:
اگر وام گیرنده، وام را بازپرداخت نکند، دستور require
با پیام “flash not paid back” باعث می شود کل تراکنش بازگردانده شود (revert).
فقط قراردادهای هوشمند می توانند از وام های فوری استفاده کنند
یک کیف پول معمولی (EOA) نمی تواند تابعی را فراخوانی کند که وام فوری دریافت کند و در همان تراکنش، توکن ها را بازگرداند. برای استفاده از وام های فوری، باید از یک قرارداد هوشمند جداگانه استفاده کرد.
وام های فوری نیازی به وثیقه ندارند
اگر یک وام فوری به درستی پیاده سازی شده باشد (که این موضوع بسیار مهم است)، هیچ ریسکی برای عدم بازپرداخت وام وجود ندارد، زیرا اگر شرط require
برقرار نباشد یا تراکنش با خطا مواجه شود، کل تراکنش لغو می شود و اتر منتقل نخواهد شد.
کاربردهای وام های فوری چیست؟
آربیتراژ
رایج ترین کاربرد وام فوری، انجام معاملات آربیتراژ است. به عنوان مثال، فرض کنید قیمت اتریوم (Ether) در یک استخر معاملاتی 1200 دلار باشد و در یک پلتفرم دیفای (DeFi) دیگر 1300 دلار معامله شود. در این شرایط، فرصت مناسبی برای خرید اتریوم از استخر اول و فروش آن در پلتفرم دوم با 100 دلار سود ایجاد می شود. اما برای انجام این معامله ابتدا به سرمایه نیاز دارید تا بتوانید اتریوم را خریداری کنید. در اینجا وام فوری بهترین راه حل است، زیرا نیازی نیست 1200 دلار از پیش در اختیار داشته باشید. می توانید 1200 دلار اتریوم وام بگیرید، آن را به قیمت 1300 دلار بفروشید، 1200 دلار وام را بازپرداخت کنید و 100 دلار سود (پس از کسر کارمزدها) برای خود نگه دارید.
بازپرداخت وام ها با نرخ بهتر
در وام های معمولی دیفای، معمولا باید وثیقه ای ارائه دهید. به عنوان مثال، اگر بخواهید 10 هزار دلار استیبل کوین وام بگیرید، باید معادل 15 هزار دلار اتریوم به عنوان وثیقه سپرده کنید.
حالا فرض کنید نرخ بهره وام فعلی شما 5 درصد است و قصد دارید آن را با یک قرارداد وام دهی دیگر که نرخ بهره 4 درصد دارد جایگزین کنید. برای این کار باید مراحل زیر را انجام دهید:
-
بازپرداخت 10 هزار دلار استیبل کوین
-
برداشت 15 هزار دلار اتریوم وثیقه
-
واریز 15 هزار دلار اتریوم به قرارداد جدید
-
دریافت مجدد وام 10 هزار دلاری با نرخ بهره کمتر
اگر 10 هزار دلار استیبل کوین شما در حال حاضر در یک برنامه دیگر قفل شده باشد، انجام این فرآیند دشوار می شود. اما با استفاده از یک وام فوری، می توانید تمام این مراحل را بدون نیاز به استفاده از استیبل کوین های شخصی خود انجام دهید.
تعویض وثیقه
در مثال قبلی، وام گیرنده 15 هزار دلار اتریوم را به عنوان وثیقه استفاده می کرد. حال فرض کنید پروتکل دیگری نسبت وثیقه بهتری را در ازای wBTC (بیت کوین رپ شده) ارائه دهد. در این حالت، وام گیرنده می تواند با استفاده از یک وام فوری و مجموعه مراحلی مشابه آنچه در بالا توضیح داده شد، وثیقه خود را از اتریوم به wBTC تغییر دهد، بدون آنکه نیازی به بازپرداخت اصل وام داشته باشد.
تسویه وام گیرندگان (Liquidation)
در حوزه وام های دیفای، اگر ارزش وثیقه به زیر یک سطح مشخص برسد، پروتکل می تواند آن را تسویه کند، یعنی به اجبار بفروشد تا بدهی وام را پوشش دهد. برای مثال، اگر ارزش اتریوم به 12 هزار دلار کاهش پیدا کند، ممکن است پروتکل به یک فرد اجازه دهد این اتریوم را به قیمت 11,500 دلار خریداری کند، به شرط آنکه ابتدا وام 10 هزار دلاری را بازپرداخت کند.
در این سناریو، یک تسویه کننده (Liquidator) می تواند با استفاده از وام فوری، 10 هزار دلار استیبل کوین وام بگیرد، وام را بازپرداخت کند و در ازای آن 11,500 دلار اتریوم دریافت کند. سپس این اتریوم را در یک صرافی دیگر به استیبل کوین تبدیل می کند و وام فوری را تسویه می کند.
افزایش بازدهی برای سایر برنامه های دیفای
پروتکل هایی مانند یونی سواپ (Uniswap) و آوه (AAVE) از طریق کارمزد معاملات یا سود وام دهی، درآمد کسب می کنند. اما از آنجایی که این پروتکل ها سرمایه بسیار زیادی در اختیار دارند، می توانند با ارائه وام های فوری، درآمد اضافی نیز ایجاد کنند. این موضوع باعث افزایش بهره وری سرمایه می شود، چرا که اکنون یک منبع سرمایه می تواند برای چندین هدف مورد استفاده قرار گیرد.
ایجاد یک چرخه اهرمی (Leverage Loop) در یک تراکنش واحد
با استفاده از پروتکل های وام دهی، می توان موقعیت های لانگ و شورت اهرمی (leveraged longs and shorts) ایجاد کرد. به عنوان مثال، برای باز کردن یک موقعیت لانگ اهرمی روی ETH، کاربر می تواند مقدار مشخصی ETH را به عنوان وثیقه در یک استخر وام دهی واریز کند، سپس یک استیبل کوین وام بگیرد، استیبل کوین را به ETH تبدیل کند و مجددا ETH جدید را به استخر وام دهی واریز کند. این فرآیند می تواند چندین بار تکرار شود. در نهایت، مجموع ارزش وثیقه و مقدار ETH وام گرفته شده، از مقدار اولیه بیشتر خواهد بود و در نتیجه کاربر در برابر تغییرات قیمت ETH، اهرم بیشتری به دست می آورد.
برای باز کردن یک موقعیت شورت اهرمی روی ETH، کاربر می تواند ابتدا استیبل کوین ها را به عنوان وثیقه در یک استخر وام دهی واریز کند، سپس ETH وام بگیرد، ETH را به استیبل کوین تبدیل کند و استیبل کوین های جدید را مجددا به استخر واریز کند. این چرخه نیز می تواند تکرار شود. در این حالت، کاربر بدهی بزرگی از ETH خواهد داشت که در صورت کاهش قیمت ETH، بازپرداخت آن آسان تر خواهد شد.
مجموع دارایی هایی که به این روش می توان وام گرفت، عبارت است از:
در اینجا LTV (نسبت وام به ارزش وثیقه یا Loan-to-Value) حداکثر نسبتی است که پروتکل اجازه می دهد وام دریافت کنید. برای مثال، اگر پروتکل برای دریافت 800 دلار ETH نیاز به سپرده گذاری 1000 دلار استیبل کوین داشته باشد، در این صورت LTV برابر است با 0.8 = 1000/800.
بنابراین کاربر می تواند تا سقف 5 برابر مقدار سپرده اولیه خود، در معرض تغییرات قیمت ETH قرار بگیرد، یعنی 1 / (1 – 0.8) = 5. به عبارتی، با یک سپرده 1000 دلاری می تواند معادل 5000 دلار ETH در اختیار داشته باشد.
روش بهتر
به جای انجام همه این مراحل به صورت حلقه ای (که می تواند هزینه گس بالایی داشته باشد)، می توان از روش زیر استفاده کرد:
-
ابتدا با استفاده از یک وام فوری، 5000 دلار استیبل کوین وام بگیرد
-
استیبل کوین ها را به معادل 5000 دلار ETH تبدیل کند
-
ETH را به عنوان وثیقه در استخر وام دهی سپرده گذاری کند
-
4000 دلار استیبل کوین از همان استخر وام بگیرد
-
1000 دلار استیبل کوین شخصی خود را به 4000 دلار استیبل کوین وام گرفته شده اضافه کند و وام فوری را تسویه کند
در نتیجه، اکنون کاربر 5000 دلار ETH به عنوان وثیقه در اختیار دارد و 4000 دلار استیبل کوین از استخر وام گرفته است.
راستی! برای دریافت مطالب جدید در کانال تلگرام یا پیج اینستاگرام سورس باران عضو شوید.
- انتشار: ۱۲ خرداد ۱۴۰۴
دسته بندی موضوعات
- آموزش ارز دیجیتال
- آموزش برنامه نویسی
- آموزش متنی برنامه نویسی
- اطلاعیه و سایر مطالب
- پروژه برنامه نویسی
- دوره های تخصصی برنامه نویسی
- رپورتاژ
- فیلم های آموزشی
- ++C
- ADO.NET
- Adobe Flash
- Ajax
- AngularJS
- apache
- ARM
- Asp.Net
- ASP.NET MVC
- AVR
- Bootstrap
- CCNA
- CCNP
- CMD
- CSS
- Dreameaver
- EntityFramework
- HTML
- IOS
- jquery
- Linq
- Mysql
- Oracle
- PHP
- PHPMyAdmin
- Rational Rose
- silver light
- SQL Server
- Stimulsoft Reports
- Telerik
- UML
- VB.NET&VB6
- WPF
- Xml
- آموزش های پروژه محور
- اتوکد
- الگوریتم تقریبی
- امنیت
- اندروید
- اندروید استودیو
- بک ترک
- بیسیک فور اندروید
- پایتون
- جاوا
- جاوا اسکریپت
- جوملا
- دلفی
- دوره آموزش Go
- دوره های رایگان پیشنهادی
- زامارین
- سئو
- ساخت CMS
- سی شارپ
- شبکه و مجازی سازی
- طراحی الگوریتم
- طراحی بازی
- طراحی وب
- فتوشاپ
- فریم ورک codeigniter
- فلاتر
- کانستراکت
- کریستال ریپورت
- لاراول
- معماری کامپیوتر
- مهندسی اینترنت
- هوش مصنوعی
- یونیتی
- کتاب های آموزشی
- Android
- ASP.NET
- AVR
- LINQ
- php
- Workflow
- اچ تی ام ال
- بانک اطلاعاتی
- برنامه نویسی سوکت
- برنامه نویسی موبایل
- پاسکال
- پایان نامه
- پایتون
- جاوا
- جاوا اسکریپت
- جی کوئری
- داده کاوی
- دلفی
- رباتیک
- سئو
- سایر کتاب ها
- سخت افزار
- سی اس اس
- سی پلاس پلاس
- سی شارپ
- طراحی الگوریتم
- فتوشاپ
- مقاله
- مهندسی نرم افزار
- هک و امنیت
- هوش مصنوعی
- ویژوال بیسیک
- نرم افزار و ابزار برنامه نویسی
- وردپرس