За бумом dYdX V4, глибинний аналіз класифікації, застосування та практики безпеки використання DeFi левереджу

Середній12/13/2023, 2:12:46 PM
Ця стаття досліджує різноманітність та сценарії застосування кредитного важеля DeFi через dYdX V4, аналізує вразливості на рівні коду та висуває ключові пункти безпеки протоколу кредитного важеля.

Вступ до кредитного ринку DeFi

Недавній запуск dYdX V4 зібрав багато уваги та участі на постійному біржовому обміні. dYdX успішно застосував приклади угод з використанням кредитного ринку, і ми повинні не лише очікувати великого потенціалу dYdX V4, але й приділяти більше уваги безпеці угод з використанням кредитного ринку. Наступним кроком буде використання конкретного аналізу коду та прикладів для наведення вас через різні стратегії використання кредитного ринку та врахування питань безпеки.

Що таке кредитне використання

У фінансах розрив - це стратегія, яка ґрунтується на позичанні грошей для збільшення потенційного доходу від інвестицій. Просто кажучи, інвестори або трейдери позичають гроші, щоб збільшити свою експозицію до конкретних типів активів, проектів або інструментів набагато більше, ніж вони можуть досягти, покладаючись лише на свій власний капітал. Часто, за допомогою розриву, інвестори можуть збільшити свою покупну силу на ринку.

Розрив у торгівлі DeFi з використанням кредитного ресурсу

Використання кредитного левереджу - одна з найважливіших та поширених функцій торгівлі криптовалютними активами. Незабаром після створення децентралізованих бірж торгівля з використанням кредитного левереджу стала все більш популярною, навіть якщо криптовалютний ринок вже виявляв високу волатильність.

Як і у випадку з традиційними фінансами, трейдери використовують кредитне плече або просто для позики капіталу для підвищення своєї купівельної спроможності, або для того, щоб скористатися різними похідними фінансовими інструментами, такими як ф'ючерси та опціони.

Коефіцієнт важеля також збільшився з 3x і 5x до понад 100x. Вищий рівень важеля означає вищий ризик, але, як бачимо на більшості централізованих біржах, це ризик, який агресивні трейдери, що прагнуть отримати вищі доходи, готові прийняти зі зростанням обсягу торгівлі з використанням важелів.

Детальний пояснення класифікації кредитного плеча

Щодо DeFi, розрахункові продукти головним чином поділяються на чотири типи, а механізми для створення плеча відрізняються: кредит з плечем, маржинальна торгівля з плечем, постійний контракт з плечем та токени з плечем.

Кредитний заставний

Утилка і кредитування DeFi - одне з перших і найбільших застосувань DeFi. Вже працюють гіганти, такі як MakerDAO, Compound, AAVE та Venus. Логіка отримання кредитного ресурсу шляхом позичання криптовалютних активів проста.

Наприклад, якщо у вас є $10 000 в Ether (ETH) і ви бульбашкові, ви можете заставити свій ETH як заставу в Compound, позичити $5 000 в USDC, а потім використовувати цю угоду на $5 000 USDC на обмін на інші $5 000 в ETH. Таким чином, ви отримаєте 1,5-кратний кредит на ETH, і порівняно з вашим початковим капіталом у $10 000, ви отримаєте $1,5 мільйона в експозиції ETH.

Так само, якщо ви маєте негативний настрій, ви можете вибрати депозит стабільних монет і позичити ETH. Якщо ціна ETH падає, ви можете купити ETH на ринку за нижчою ціною і погасити свої борги.

Зверніть увагу, що оскільки ви будете позичати з децентралізованого протоколу, вас можуть ліквідувати, якщо вартість застави впаде або якщо вартість активу, який ви позичаєте, перевищить певний поріг.

Маржинальна торгівля кредитного плеча

За допомогою кредитування DeFi ви можете робити з цими цифровими активами все, що завгодно. Маржинальна торгівля DeFi більше акцентується на збільшенні розміру позиції (збільшенні покупної потужності) і вважається справжньою «левередж позицією». Однак є одна важлива відмінність — коли маржинальні позиції ще відкриті, активи трейдерів виступають як застава за позичені кошти.

dYdX - це відома децентралізована платформа для маржинальної торгівлі, яка дозволяє використовувати до 5-кратного кредитного плеча. У маржинальній торгівлі на dYdX трейдери використовують власні кошти як заставу, збільшують свій початковий капітал кілька разів і використовують ці збільшені кошти для інвестування в більшому масштабі.

Торгівцям потрібно сплачувати відсоткові комісії та комісії, пов'язані з угодою. Ця позиція не є умисною; вона передбачає фактичне позичання та купівлю/продаж.

Якщо ринок рухатиметься в невигідному напрямку, активи трейдера можуть не мати змоги повністю погасити кредит. Щоб уникнути цього, угода ліквідує ваші позиції до досягнення певного рівня ліквідації.

Як змінюється кредитне використання в торгівлі на маржі——

Допустимо, ви були биком щодо ETH 3 рази в торгівлі з кредитним плечем, але вам не хочеться постійно коригувати свою експозицію.

Ви тримаєте $100 в USDC і позичаєте ще $200 в USDC, щоб торгувати $300 в ETH для встановлення потрібної довгої позиції в ETH. Рівень кредитного важеля складає $300/$100 = 3x.

Якщо ціна ETH зросте на 20%, ваш прибуток складатиме 300 (1 +20%) -300 = $60. Ризик ліквідації знижується, тоді як фактичний рівень кредитного плеча зменшується до 360/ (360-200) = 2.25x. Іншими словами, ви автоматично зменшуєте своє кредитне плече при зростанні ціни ETH.

Якщо ціна ETH падає на 20%, ваші збитки складуть 300 (1-20%) -300 = -60 доларів. Щодо ліквідації, ви опиняєтеся в більш небезпечному становищі, і фактичний рівень кредитного плеча автоматично збільшується до 240/ (240-200) = 6x. Іншими словами, ви перебалансовуєте своє кредитне плече, коли ціна ETH падає, що свідчить про те, що ви опиняєтеся в більш ризикованому становищі, ніж раніше.

Таким чином, хочеться думати, що ви можете підтримувати постійний рівень використання кредитного левера, торгуючи на фіксованому маржі 3x, реальний рівень використання кредитного левера постійно змінюється.Будь ласка, подивіться графік нижче, щоб побачити, як буде змінюватися кредитне плече в залежності від зміни ціни [1].

Постійний контракт з кредитним ризиком

Перманентні контракти схожі на традиційні фьючерсні контракти, але вони не мають дати закінчення. Перманентні контракти імітують ринок на маржі, тому торгівля близька до ціни базового індексу-посилання.

Існує багато проектів DeFi, які надають постійні контракти для трейдерів, такі як dYdX, MCDEX, Perpetual Protocol, Incomplete і т.д. Багато трейдерів можуть знайти важко відрізнити різницю між маржевою торгівлею та постійними контрактами — насправді, вони всі включають використання позик торговця.

Проте існують деякі відмінності в механізмах кредитного ризику, комісіях та рівнях кредитного ризику.

Передовий контракт - це похідний продукт, який торгує синтетичними активами та має властивість торгівлі на маржі. Ціна базового активу відстежується штучним способом, без необхідності торгувати фактичним базовим активом. Однак у торгівлі на маржі використовується фактичне позичання та торгівля фактичними криптовалютами.

З появою постійних контрактів з'явився концепт ставок фінансування. Мета полягає в тому, щоб утримувати ціну угоди постійного контракту на одному рівні з базовою референтною ціною. Якщо ціна контракту вища, ніж ринкова ціна, то бики заплатять ведмедям. Іншими словами, трейдерам потрібно постійно платити комісії за позику.

Ризик в постійних контрактах, як правило, вище, ніж в угоді з заставою, і може сягати 100 разів. Механізми ліквідації та фактичного ризику однакові, як у угоді з заставою.

Левереджовані токени

Левереджовані токени є похідними, які надають власникам левереджований експозиції на ринок криптовалют без необхідності активного управління левереджованими позиціями. Хоча вони надають власникам левереджовану експозицію, вони не вимагають від них управління маржин, ліквідацією, заставою або процентними ставками.

Найбільша відмінність між левереджованими токенами та маржинальним торгівельним/безстроковими контрактами полягає в тому, що левереджовані токени будуть перебалансовуватися періодично або коли буде досягнуто певний поріг, щоб зберегти певний рівень левереджу.

Це явно відрізняється від торгівлі маржами та постійних контрактів — фактичний рівень кредитного левериджу цих продуктів постійно змінюється залежно від коливань цін, навіть якщо трейдер спочатку може вказати рівень кредитного левериджу.

Давайте подивимося, як працює перебалансування в прикладі 3x ETH вище:

Ви утримуєте $100 у валюті USDC та купуєте левереджений токен ETHBULL (3x). Протокол автоматично позичить $200 у валюті USDC та здійснить угоду на суму $200 у валюті ETH.

Припустимо, що ціна ETH зросла на 20%, тоді ціна токена ETHBULL (3x) підвищується до 300* (1 +20%) -200 = $160 перед перебалансуванням. Ваш фактичний ризик становить зараз 2.25 (360/160), що нижче вашої цільової плеча.

У рамках процесу перебалансування протокол позичатиме більше доларів з пула стейблкоїнів і купуватиме додаткові токени ETH, щоб знову привести кредитне важіння до 3x. У нашому прикладі протокол позичив би додаткові 120 доларів і обміняв би їх на ETH. Таким чином, загальне кредитне важіння знову стане (360+120) /160 = 3 рази.

Припустимо, що ціна ETH впала на 20%, тоді ціна токена ETHBULL (3x) падає до 300* (1-20%) -200 = $40 до перебалансування. Ваш фактичний кредитний ризик зараз становить 6 (240/40), що перевищує ваш цільовий кредитний ризик.

У цьому випадку угода продаватиме токени ETH та погасить заборгованість для зменшення розриву. У цьому прикладі протокол продав би $ 120 в ETH, щоб оплатити пул. Заборгованість стане $ 80, і загальний розрив знову становитиме (240-120) / 40 = 3x.

Іншими словами, розривні токени будуть автоматично повторно розриватися в прибутках та зменшуватися в збитках, щоб відновити їх цільовий рівень розриву. Якщо цей механізм працює добре, навіть в умовах негативних ринкових тенденцій, власники розривних токенів не будуть ліквідовані, оскільки механізм розривання буде безперервно зменшувати ефективний рівень розриву користувачів.

В результаті пул кредитування в моделі левередж-токенів буде звільнений від ризику ліквідації і буде більш безпечним, ніж пул позик у маржинальній торгівлі.

Приклади застосування кредитного ринку

Тепер, коли ми дізнались про деякі загальні типи протоколів DeFi для використання кредитного плеча, давайте докладно обговоримо застосування кредитного плеча у зв'язку з конкретними протоколами DeFi.

GMX

GMX [2] - це децентралізована біржа на місцевому та постійному обміні, яка пропонує трейдерам можливість торгувати активами з використанням левереджу до 50 разів. Угода в даний час працює на Arbitrum та Avalanche. На GMX трейдери повністю осведомлені про ситуацію своєї контрагенти, що повністю відрізняється від торгівлі на CEX. На відміну від інших угод про постійні контракти, таких як dYdX, GMX працює повністю на ланцюжку та використовує функціонал AMM для забезпечення можливості угодування.

Те, що відрізняє GMX від інших сервісів, полягає в тому, що він є децентралізованою біржею, яка надає послуги з маржинальної торгівлі. У цьому відношенні він поєднує досвід, схожий на інші DeFi біржі, такі як Uniswap, з послугами з маржинальної торгівлі, що пропонується Binance та іншими.

GMX має ліквідний пул GLP, який є багатоактивним пулом, що забезпечує ліквідність для маржинальної торгівлі: користувачі можуть відкривати/закривати позиції та виконувати угоди, випускаючи та знищуючи токени GLP. Пул заробляє комісії LP з угод та угод з використанням кредитного левера, які розподіляються між власниками GMX та GLP.

Для торгівлі з використанням кредитного плеча трейдери вносять заставу в угоду. Трейдери можуть обирати кредитне плече до 50x. Чим вище кредитне плече, тим вища ціна ліквідації, яка поступово зростатиме разом із зростанням витрат на позику.

Наприклад, коли трейдери відкривають позицію на зростання ціни ETH, вони «орендують» простір для зростання ціни ETH з пулу GLP; коли трейдери відкривають позицію на падіння ціни ETH, вони «орендують» простір для зростання ціни стейблкоїнів проти ETH з пулу GLP. Однак активи в пулі GLP фактично не здаються в оренду.

При закритті позиції, якщо трейдер вгадав, прибуток буде виплачено у вигляді збільшення токенів з пулу GLP; в іншому випадку збитки будуть відраховані з застави та виплачені в пул. Прибуток GLP від збитків трейдерів та прибуток від прибутків трейдерів.

У процесі трейдери платять комісії за транзакції, відкриття/закриття угод, а також вибування за можливість укладення угод на зростання/падіння вказаних токенів (BTC, ETH, AVAX, UNI та LINK) проти долара США.

Merkle Торгівля

Торги Merkle[3] - це децентралізована торгова платформа, яка пропонує торгівлю криптовалютами, валютними парами та сировинними товарами з кредитним плечем до 1 000 разів та передовими функціями торгівлі, орієнтованими на користувача. Merkle Trade працює на блокчейні Aptos та має відмінні показники продуктивності та масштабованості. Порівняно з Gains Network, яка пропонує таке ж велике кредитне плече, у нього менші затримки та комісії за транзакції.

На відміну від більшості бірж, на Merkle Trade немає книги замовлень. Замість цього, Merkle LP діє як контрагент для кожної угоди, і коли трейдери втрачають гроші, вона бере заставу та виплачує прибуток з закритих угод з позитивними результатами.

  • Торгуйте криптовалютами, валютой и товарами з використанням кредитного плеча до 1 000x

Merkle Trade було розроблено з самого початку, щоб надавати широкий спектр торгівельних пар, включаючи криптовалюти, валютні пари та товари, а також один з найвищих плеч на ринку; до 150x на криптовалюту та до 1,000x на валютних ринках.

  • Виконання замовлення за справедливою ціною, латентність у мілісекундах, мінімальний проскальзування

Створення блокчейну з Aptos, який має найнижчу затримку на сьогоднішній день, може забезпечити найшвидший досвід транзакцій на ланцюжку. Для трейдерів це означає швидший досвід торгівлі та менші зміни цін через затримки виконання.

  • Децентралізовані, некастодіальні транзакції без контрагентного ризику

Торгівці торгують з ліквідним пулом (Merkle LP), який виступає як контрагент для кожної угоди. Усі угоди та розрахунки виконуються за допомогою смарт-контрактів, і в будь-який момент не проводиться розміщення коштів користувачів.

  • Найнижча комісія за обробку

Компанія Merkle Trade стверджує, що має одні з найнижчих комісій на сьогоднішній день на ринку. Під час запуску комісія за торгівельні пaри криптовалют була такою низькою, як 0,05%, а комісія за торгівельні пaри на ринку форекс була такою низькою, як 0,0075%.

DYDX

DYDX

dYdX[4] - це децентралізована біржа (DEX), яка дозволяє користувачам ефективно торгувати постійні контракти, маючи повний контроль над активами. З моменту запуску в 2021 році, dYdX V3 використовує унікальне некастодіальне рішення другого рівня для реалізації своєї біржі, проте його книга замовлень та двигун підбору все ще централізовано керуються.

Тепер, завдяки dYdX V4, протокол росте власним ланцюгом, і весь протокол повністю перебудовується для досягнення повної децентралізації, збільшуючи пропускну здатність. dYdX також включає три функції: кредитування, маржеву торгівлю та постійні контракти. Маржева торгівля супроводжується функцією позичання. Кошти, внесені користувачами, автоматично формують фонд. Якщо під час торгівлі є недостатньо капіталу, відсотки автоматично позичаються та сплачуються.

Аналіз безпеки кредитного ризику

Ми ввели загальні типи та застосування кредитного ризику в DeFi. Крім того, існує ще багато питань безпеки у дизайні кредитного ризику, які вимагають нашої уваги. Ми проаналізуємо питання безпеки та точки аудиту кредитного ризику в DeFi на основі конкретних випадків аудиту.

Відрізняйте лімітні замовлення від ринкових замовлень

У більшості застосунків для роботи з кредитними важелями є лімітні та ринкові заявки. Сувора різниця та перевірка лімітних та ринкових заявок є дуже необхідною.Наступного разу ми проведемо детальний аналіз проблем, які ми виявили під час аудиту Merkle Trade [5].

нехай зараз = відмітка часу: :теперішні_секунди (); якщо (зараз - order.created_timestamp > 30) {         cancel_order_internal(             _order_id,             order,             T_CANCEL_ORDER_EXPIRED         );         повернення     };

Ця частина коду виконує перевірки в функції порядку, де вона перевіряє, чи пройшло більше 30 секунд з моменту створення замовлення. Якщо умови виконуються, викликайте cancel_order_internal (), щоб скасувати замовлення. Однак, якщо замовлення є лімітним, це означає, що трейдер встановив конкретну ціну, за якою він готовий купити або продати актив за цією ціною. При виконанні лімітних замовлень не повинно бути такого судження; це може призвести до того, що більшість лімітних замовлень не будуть виконані. Тому важливо чітко відрізняти торгову логіку між лімітними та ринковими замовленнями.

Помилка обчислення кредитного плеча

Помилки обчислень завжди були дуже поширеною проблемою в DeFi, і вони також особливо поширені в роботі з кредитними ресурсами. Ми використаємо виявлені протоколом Нескорені [6] питання під час аудитів сторонніх учасників для ретельного вивчення проблем обчислень кредитних ресурсів.

Давайте розглянемо код для розрахунку кредитного плеча в Unstoppable:

def _calculate_calculation ( _position_value: uint256, _debt_value: uint256, _margin_value: uint256) - > uint256: if _position_value < = _debt_value: #bad debt Return max_value (uint256) Return ( precision * (_debt_value + _margin_value) /(_position_value - _debt_value) /PRECISION )

Функція _calculate_margin спричинила неправильний розрахунок кредитного плеча, використовуючи _debt_value + _margin_value як чисельник замість _position_value. Три вхідні параметри функції _position_value, _debt_value та _margin_value визначаються інформацією про ціни, наданою ланцюжковими оракулами Chainlink. Тут _debt_value позначає значення перетворення частки боргу позиції в суму боргу в доларах. _margin_value позначає поточне значення початкової маржі позиції (у доларах США). _position_value позначає поточне значення (у доларах США) початкової суми позиції.

Проблема з вищезазначеним обчисленням полягає в тому, що _debt_value + _margin_value не представляє вартість позиції. Маржа - це співвідношення між поточною вартістю позиції та поточною вартістю маржі. _position_value - _debt_value є правильним. Це показує поточну вартість маржі, але _debt_value + _margin_value не представляє поточну вартість позиції, оскільки немає гарантії, що цінність боргових токенів та токенів позиції мають відповідні коливання цін.

Наприклад, токен боргу - ETH, а токен позиції - BTC.

Аліса використовує 1 ETH як маржу, позичає 14 ETH ($2,000 кожен), та отримує 1 BTC ($30,000 кожен) у токенах позицій. Маржа - 14.

Наступного дня ціна ETH залишалася на рівні $2,000/ETH, але ціна BTC впала з $30,000/BTC до $29,000/BTC. На цей момент кредитне використання повинно бути (_позиційна_вартість == 29,000)/(_позиційна_вартість == 29,000 - _заборгованість == 28,000) = 29, а не значення, розраховане в контракті: (_заборгованість == 28,000 + _маржина_вартість == 2,000)/(_позиційна_вартість == 29,000 - _заборгованість == 28,000) = 30.

Отже, для усунення цієї проблеми слід використовувати правильну формулу, зазначену вище, для розрахунку кредитного ризику в смарт-контрактах. Неправильний розрахунок кредитного ризику може призвести до несправедливих ліквідацій або занадто ризикованих позицій у змінній ціновій ситуації.

У смарт-контрактах важливо враховувати належний розрахунок кредитного плеча для забезпечення надійності системи та інтересів користувачів. Правильний розрахунок кредитного плеча повинен ґрунтуватися на співвідношенні поточної вартості позиції та поточної вартості маржі. Якщо використовується неправильна формула розрахунку, це може призвести до неналежної реакції системи на зміни цін, ліквідації позицій, які не повинні бути ліквідовані, або дозволити існувати позиціям з надмірним кредитним плечем, тим самим збільшуючи ризики для системи та користувачів.

Логічні помилки

Логічна помилка

Помилки логіки вимагають особливої уваги під час аудитів смарт-контрактів, особливо в складній логіці, такій як DeFi з кредитним торгівлею.

Давайте обговоримо логічні проблеми, на які слід звернути увагу при використанні плеча DeFi, використовуючи проблеми, виявлені Тигром[7](Tigris, децентралізована синтетична платформа з плечовою торгівлею на основі Arbitrum та Polygon) в аудиті від сторонньої компанії.

Давайте розглянемо логіку функції закриття ліміту ціни в Тігріс:

Function limitClose ( uint _id, bool _tp, priceData calldata _priceData, Bytes calldata _signature) external{ _checkDelay(_id, false);   (uint _limitPrice, адреса _tigAsset) = tradingExtension._limitClose(_id, _tp, _priceData, _signature);   _closePosition(_id, DIVISION_CONSTANT, _limitPrice, адреса(0), _tigAsset, істина);}function _limitClose ( uint _id, bool _tp, priceData calldata _priceData, Bytes calldata _signature) зовнішнє представлення повертає (uint _limitPrice, address _TIGAsset) { _checkGas (); пам'ять iPosition.trade _trade = position.trades (_id);   _tigAsset = _trade.tigAsset;   getVerifiedPrice (_trade.asset, _priceData, _signature, 0); uint256 _price = _priceData.price;   if (_trade.orderType! = 0) revert (" 4 "); isLimit if (_tp) { if (_trade.tpPrice == 0) revert (" 7 "); limitNotSet if (_trade.direction) { if (_trade.tpPrice > _price) revert("6"); //LimitNotMet } else { if (_trade.tpPrice < _price) revert("6"); //LimitNotMet } _limitPrice = _trade.tpPrice;   } else { if (_trade.slprice == 0) revert (" 7 "); limitNotSet if (_trade.direction) { if (_trade.slPrice < _price) revert("6"); //LimitNotMet } else { if (_trade.slPrice > _price) revert("6"); //LimitNotMet } //@audit стоп-лосс закривається за вказаною користувачем ціною, а не ринковою ціною _limitPrice = _trade.slprice;   }}

При використанні зупинки втрат для закриття позиції ціна закриття користувача є ціною зупинки втрат, встановленою користувачем, а не поточною ціною активу. У разі напрямних ринків та великого кредитного ризику користувачі можуть зловживати цим, щоб досягти майже безрискових угод. Користувачі можуть відкрити довгу позицію і встановити ціну зупинки втрат, яка на $0.01 нижче поточної ціни.

Якщо ціна впаде негайно у наступному оновленні, вони закриють свою позицію за ціною входу і сплатять лише відкриті та закриті комісії. Якщо ціни піднімуться, вони, ймовірно, зароблять багато грошей. В результаті користувачі можуть зловживати методами цінового стоп-лоссу, щоб відкривати угоди з високим рівнем кредитного ризику, високим потенціалом доходу та низьким ризиком зниження.

Коливання цін

Price Tubs

Вплив коливань цін на рівень кредитного ризику DeFi дуже важливий. Тільки завжди беручи до уваги коливання цін, ми можемо забезпечити безпеку угод про кредитне використання. Давайте скористаємося DeFiner [8]протокол як приклад для глибокого аналізу виявлених проблем під час аудиту сторонньої сторони:

Протокол DeFiner проходить дві перевірки перед обробкою виведення коштів.

По-перше, метод перевіряє, чи сума, яку користувач просить вивести, перевищує баланс цього активу:

функція авторизації (адреса _accountAddr, адреса _token, uint256 _amount) зовнішня лише авторизована повертає (uint256) { // Перевірте, чи достатньо коштів менше, ніж баланс користувача вимагає (_amount < = getDepositBalanceCurrent (_token, _accountAddr), "Отриманий баланс.");   uint256 borrowLtv = globalConfig.tokenInfoLogistry () .getBorrowLtv (_token);

По-друге, метод перевіряє, чи виведення коштів не зробить показник плеча користувача занадто високим. Сума, виведена з рахунку, буде віднята від «потужності позики» поточної ціни користувача. Якщо загальна вартість позик користувача перевищує нову потужність позики, метод завершується невдачею, оскільки у користувача більше немає достатнього забезпечення для підтримки їхньої позики. Проте ця вимога буде перевірена лише у випадку, якщо користувач не має надмірного плеча:

if (getBorrowEth (_accountAddr) < = getBorrowPower (_accountAddr)) require ( getBorrowEth (_accountAddr) < = getBorrowPower (_accountAddr) .sub ( _amount.mul (globalConfig.tokenInfoRegistry () .priceFromAddress (_token)) .mul (borrowLtv) .div (utils.getDivisor (address (globalConfig), _token)) .div (100) ), " Колоквіум Коледж коли ");

Якщо користувачі позичили більше, ніж дозволяє їхній "кредитний потужність", вони все одно можуть зняти гроші. Це може трапитися в ряді ситуацій, найбільш поширеною з яких є коливання цін. Угода не враховувала вплив коливань цін на угоду, що спричинило цю проблему.

Інші

На додаток до наслідків нерозрізнення лімітних ордерів і ринкових ордерів, помилок розрахунку, логічних помилок і коливань цін, згаданих вище, існує багато моментів безпеки, пов'язаних з угодами з кредитним плечем, які вимагають нашої уваги. Це включає, але не обмежується ними, такі проблеми, як атаки на флеш-позики, маніпулювання цінами, безпека пророка, контроль влади, недостатня перевірка кредитного плеча або відсутність перевірок. Ці фактори необхідно ретельно враховувати при розробці та впровадженні угод про кредитне плече, щоб забезпечити надійність угоди та безпеку активів користувачів. Превентивні заходи, моніторинг у режимі реального часу та плани реагування на надзвичайні ситуації також є ключовими для зниження потенційних ризиків та захисту інтересів користувачів.

сумував

Висновок

Введення торгівлі за маржинальною торгівлею в протоколах DeFi дійсно надало ринку більшу маневреність, а також принесло більш складні торговельні механізми. Хоча маржинальна торгівля надає користувачам більше інвестиційних можливостей, її потенційні ризики та виклики для безпеки протоколу стали ще більш значущими.

Зі збільшенням кредитного ризику операції угод стають більш гнучкими, але внаслідок цього вони стають більш вразливими та піддаються різним загрозам безпеки. Це включає потенційну можливість невиконання строгого розмежування між лімітними та ринковими заявками, помилки в розрахунках, логічні помилки та високу чутливість до факторів, таких як коливання цін. У цьому випадку ми повинні приділити більше уваги безпеці протоколу, щоб забезпечити ефективний захист активів користувачів.

Як провідна команда з безпеки блокчейн в галузі Web3, ScaleBit розподілений у Силіконовій долині, Сінгапурі, Гонконзі, Тайвані та ін. Ми надали рішення з безпеки блокчейн для 200+ установ та проектів у глобальному секторі Web3, накопичивши 180 000+ рядків коду аудиту та захистили понад $8 мільярдів користувацьких активів. Зробіть безпеку доступною для всіх! Якщо у вас є потреби в аудиті безпеки, будь ласка, не соромтеся звертатися до нас. Ми розробимо для вас детальні, комплексні та професійні рішення з безпеки, щоб захистити вас та галузь Web3 безпечно!

Відмова від відповідальності:

  1. Цю статтю було перепечатано з [ScaleBit]і авторські права належать оригінальному авторові [Полярис]. Якщо у вас є які-небудь зауваження стосовно репринту, будь ласка, зв'яжіться з командою Gate Learn, і команда вирішить це якнайшвидше відповідно до відповідних процедур.

  2. Попередження: Погляди та думки, висловлені в цій статті, представляють лише особисті думки автора і не становлять жодних інвестиційних порад.

  3. Переклади статті на інші мови виконуються командою Gate Learn. Якщо не зазначено інше, копіювання, поширення або плагіатування перекладених статей заборонене.

За бумом dYdX V4, глибинний аналіз класифікації, застосування та практики безпеки використання DeFi левереджу

Середній12/13/2023, 2:12:46 PM
Ця стаття досліджує різноманітність та сценарії застосування кредитного важеля DeFi через dYdX V4, аналізує вразливості на рівні коду та висуває ключові пункти безпеки протоколу кредитного важеля.

Вступ до кредитного ринку DeFi

Недавній запуск dYdX V4 зібрав багато уваги та участі на постійному біржовому обміні. dYdX успішно застосував приклади угод з використанням кредитного ринку, і ми повинні не лише очікувати великого потенціалу dYdX V4, але й приділяти більше уваги безпеці угод з використанням кредитного ринку. Наступним кроком буде використання конкретного аналізу коду та прикладів для наведення вас через різні стратегії використання кредитного ринку та врахування питань безпеки.

Що таке кредитне використання

У фінансах розрив - це стратегія, яка ґрунтується на позичанні грошей для збільшення потенційного доходу від інвестицій. Просто кажучи, інвестори або трейдери позичають гроші, щоб збільшити свою експозицію до конкретних типів активів, проектів або інструментів набагато більше, ніж вони можуть досягти, покладаючись лише на свій власний капітал. Часто, за допомогою розриву, інвестори можуть збільшити свою покупну силу на ринку.

Розрив у торгівлі DeFi з використанням кредитного ресурсу

Використання кредитного левереджу - одна з найважливіших та поширених функцій торгівлі криптовалютними активами. Незабаром після створення децентралізованих бірж торгівля з використанням кредитного левереджу стала все більш популярною, навіть якщо криптовалютний ринок вже виявляв високу волатильність.

Як і у випадку з традиційними фінансами, трейдери використовують кредитне плече або просто для позики капіталу для підвищення своєї купівельної спроможності, або для того, щоб скористатися різними похідними фінансовими інструментами, такими як ф'ючерси та опціони.

Коефіцієнт важеля також збільшився з 3x і 5x до понад 100x. Вищий рівень важеля означає вищий ризик, але, як бачимо на більшості централізованих біржах, це ризик, який агресивні трейдери, що прагнуть отримати вищі доходи, готові прийняти зі зростанням обсягу торгівлі з використанням важелів.

Детальний пояснення класифікації кредитного плеча

Щодо DeFi, розрахункові продукти головним чином поділяються на чотири типи, а механізми для створення плеча відрізняються: кредит з плечем, маржинальна торгівля з плечем, постійний контракт з плечем та токени з плечем.

Кредитний заставний

Утилка і кредитування DeFi - одне з перших і найбільших застосувань DeFi. Вже працюють гіганти, такі як MakerDAO, Compound, AAVE та Venus. Логіка отримання кредитного ресурсу шляхом позичання криптовалютних активів проста.

Наприклад, якщо у вас є $10 000 в Ether (ETH) і ви бульбашкові, ви можете заставити свій ETH як заставу в Compound, позичити $5 000 в USDC, а потім використовувати цю угоду на $5 000 USDC на обмін на інші $5 000 в ETH. Таким чином, ви отримаєте 1,5-кратний кредит на ETH, і порівняно з вашим початковим капіталом у $10 000, ви отримаєте $1,5 мільйона в експозиції ETH.

Так само, якщо ви маєте негативний настрій, ви можете вибрати депозит стабільних монет і позичити ETH. Якщо ціна ETH падає, ви можете купити ETH на ринку за нижчою ціною і погасити свої борги.

Зверніть увагу, що оскільки ви будете позичати з децентралізованого протоколу, вас можуть ліквідувати, якщо вартість застави впаде або якщо вартість активу, який ви позичаєте, перевищить певний поріг.

Маржинальна торгівля кредитного плеча

За допомогою кредитування DeFi ви можете робити з цими цифровими активами все, що завгодно. Маржинальна торгівля DeFi більше акцентується на збільшенні розміру позиції (збільшенні покупної потужності) і вважається справжньою «левередж позицією». Однак є одна важлива відмінність — коли маржинальні позиції ще відкриті, активи трейдерів виступають як застава за позичені кошти.

dYdX - це відома децентралізована платформа для маржинальної торгівлі, яка дозволяє використовувати до 5-кратного кредитного плеча. У маржинальній торгівлі на dYdX трейдери використовують власні кошти як заставу, збільшують свій початковий капітал кілька разів і використовують ці збільшені кошти для інвестування в більшому масштабі.

Торгівцям потрібно сплачувати відсоткові комісії та комісії, пов'язані з угодою. Ця позиція не є умисною; вона передбачає фактичне позичання та купівлю/продаж.

Якщо ринок рухатиметься в невигідному напрямку, активи трейдера можуть не мати змоги повністю погасити кредит. Щоб уникнути цього, угода ліквідує ваші позиції до досягнення певного рівня ліквідації.

Як змінюється кредитне використання в торгівлі на маржі——

Допустимо, ви були биком щодо ETH 3 рази в торгівлі з кредитним плечем, але вам не хочеться постійно коригувати свою експозицію.

Ви тримаєте $100 в USDC і позичаєте ще $200 в USDC, щоб торгувати $300 в ETH для встановлення потрібної довгої позиції в ETH. Рівень кредитного важеля складає $300/$100 = 3x.

Якщо ціна ETH зросте на 20%, ваш прибуток складатиме 300 (1 +20%) -300 = $60. Ризик ліквідації знижується, тоді як фактичний рівень кредитного плеча зменшується до 360/ (360-200) = 2.25x. Іншими словами, ви автоматично зменшуєте своє кредитне плече при зростанні ціни ETH.

Якщо ціна ETH падає на 20%, ваші збитки складуть 300 (1-20%) -300 = -60 доларів. Щодо ліквідації, ви опиняєтеся в більш небезпечному становищі, і фактичний рівень кредитного плеча автоматично збільшується до 240/ (240-200) = 6x. Іншими словами, ви перебалансовуєте своє кредитне плече, коли ціна ETH падає, що свідчить про те, що ви опиняєтеся в більш ризикованому становищі, ніж раніше.

Таким чином, хочеться думати, що ви можете підтримувати постійний рівень використання кредитного левера, торгуючи на фіксованому маржі 3x, реальний рівень використання кредитного левера постійно змінюється.Будь ласка, подивіться графік нижче, щоб побачити, як буде змінюватися кредитне плече в залежності від зміни ціни [1].

Постійний контракт з кредитним ризиком

Перманентні контракти схожі на традиційні фьючерсні контракти, але вони не мають дати закінчення. Перманентні контракти імітують ринок на маржі, тому торгівля близька до ціни базового індексу-посилання.

Існує багато проектів DeFi, які надають постійні контракти для трейдерів, такі як dYdX, MCDEX, Perpetual Protocol, Incomplete і т.д. Багато трейдерів можуть знайти важко відрізнити різницю між маржевою торгівлею та постійними контрактами — насправді, вони всі включають використання позик торговця.

Проте існують деякі відмінності в механізмах кредитного ризику, комісіях та рівнях кредитного ризику.

Передовий контракт - це похідний продукт, який торгує синтетичними активами та має властивість торгівлі на маржі. Ціна базового активу відстежується штучним способом, без необхідності торгувати фактичним базовим активом. Однак у торгівлі на маржі використовується фактичне позичання та торгівля фактичними криптовалютами.

З появою постійних контрактів з'явився концепт ставок фінансування. Мета полягає в тому, щоб утримувати ціну угоди постійного контракту на одному рівні з базовою референтною ціною. Якщо ціна контракту вища, ніж ринкова ціна, то бики заплатять ведмедям. Іншими словами, трейдерам потрібно постійно платити комісії за позику.

Ризик в постійних контрактах, як правило, вище, ніж в угоді з заставою, і може сягати 100 разів. Механізми ліквідації та фактичного ризику однакові, як у угоді з заставою.

Левереджовані токени

Левереджовані токени є похідними, які надають власникам левереджований експозиції на ринок криптовалют без необхідності активного управління левереджованими позиціями. Хоча вони надають власникам левереджовану експозицію, вони не вимагають від них управління маржин, ліквідацією, заставою або процентними ставками.

Найбільша відмінність між левереджованими токенами та маржинальним торгівельним/безстроковими контрактами полягає в тому, що левереджовані токени будуть перебалансовуватися періодично або коли буде досягнуто певний поріг, щоб зберегти певний рівень левереджу.

Це явно відрізняється від торгівлі маржами та постійних контрактів — фактичний рівень кредитного левериджу цих продуктів постійно змінюється залежно від коливань цін, навіть якщо трейдер спочатку може вказати рівень кредитного левериджу.

Давайте подивимося, як працює перебалансування в прикладі 3x ETH вище:

Ви утримуєте $100 у валюті USDC та купуєте левереджений токен ETHBULL (3x). Протокол автоматично позичить $200 у валюті USDC та здійснить угоду на суму $200 у валюті ETH.

Припустимо, що ціна ETH зросла на 20%, тоді ціна токена ETHBULL (3x) підвищується до 300* (1 +20%) -200 = $160 перед перебалансуванням. Ваш фактичний ризик становить зараз 2.25 (360/160), що нижче вашої цільової плеча.

У рамках процесу перебалансування протокол позичатиме більше доларів з пула стейблкоїнів і купуватиме додаткові токени ETH, щоб знову привести кредитне важіння до 3x. У нашому прикладі протокол позичив би додаткові 120 доларів і обміняв би їх на ETH. Таким чином, загальне кредитне важіння знову стане (360+120) /160 = 3 рази.

Припустимо, що ціна ETH впала на 20%, тоді ціна токена ETHBULL (3x) падає до 300* (1-20%) -200 = $40 до перебалансування. Ваш фактичний кредитний ризик зараз становить 6 (240/40), що перевищує ваш цільовий кредитний ризик.

У цьому випадку угода продаватиме токени ETH та погасить заборгованість для зменшення розриву. У цьому прикладі протокол продав би $ 120 в ETH, щоб оплатити пул. Заборгованість стане $ 80, і загальний розрив знову становитиме (240-120) / 40 = 3x.

Іншими словами, розривні токени будуть автоматично повторно розриватися в прибутках та зменшуватися в збитках, щоб відновити їх цільовий рівень розриву. Якщо цей механізм працює добре, навіть в умовах негативних ринкових тенденцій, власники розривних токенів не будуть ліквідовані, оскільки механізм розривання буде безперервно зменшувати ефективний рівень розриву користувачів.

В результаті пул кредитування в моделі левередж-токенів буде звільнений від ризику ліквідації і буде більш безпечним, ніж пул позик у маржинальній торгівлі.

Приклади застосування кредитного ринку

Тепер, коли ми дізнались про деякі загальні типи протоколів DeFi для використання кредитного плеча, давайте докладно обговоримо застосування кредитного плеча у зв'язку з конкретними протоколами DeFi.

GMX

GMX [2] - це децентралізована біржа на місцевому та постійному обміні, яка пропонує трейдерам можливість торгувати активами з використанням левереджу до 50 разів. Угода в даний час працює на Arbitrum та Avalanche. На GMX трейдери повністю осведомлені про ситуацію своєї контрагенти, що повністю відрізняється від торгівлі на CEX. На відміну від інших угод про постійні контракти, таких як dYdX, GMX працює повністю на ланцюжку та використовує функціонал AMM для забезпечення можливості угодування.

Те, що відрізняє GMX від інших сервісів, полягає в тому, що він є децентралізованою біржею, яка надає послуги з маржинальної торгівлі. У цьому відношенні він поєднує досвід, схожий на інші DeFi біржі, такі як Uniswap, з послугами з маржинальної торгівлі, що пропонується Binance та іншими.

GMX має ліквідний пул GLP, який є багатоактивним пулом, що забезпечує ліквідність для маржинальної торгівлі: користувачі можуть відкривати/закривати позиції та виконувати угоди, випускаючи та знищуючи токени GLP. Пул заробляє комісії LP з угод та угод з використанням кредитного левера, які розподіляються між власниками GMX та GLP.

Для торгівлі з використанням кредитного плеча трейдери вносять заставу в угоду. Трейдери можуть обирати кредитне плече до 50x. Чим вище кредитне плече, тим вища ціна ліквідації, яка поступово зростатиме разом із зростанням витрат на позику.

Наприклад, коли трейдери відкривають позицію на зростання ціни ETH, вони «орендують» простір для зростання ціни ETH з пулу GLP; коли трейдери відкривають позицію на падіння ціни ETH, вони «орендують» простір для зростання ціни стейблкоїнів проти ETH з пулу GLP. Однак активи в пулі GLP фактично не здаються в оренду.

При закритті позиції, якщо трейдер вгадав, прибуток буде виплачено у вигляді збільшення токенів з пулу GLP; в іншому випадку збитки будуть відраховані з застави та виплачені в пул. Прибуток GLP від збитків трейдерів та прибуток від прибутків трейдерів.

У процесі трейдери платять комісії за транзакції, відкриття/закриття угод, а також вибування за можливість укладення угод на зростання/падіння вказаних токенів (BTC, ETH, AVAX, UNI та LINK) проти долара США.

Merkle Торгівля

Торги Merkle[3] - це децентралізована торгова платформа, яка пропонує торгівлю криптовалютами, валютними парами та сировинними товарами з кредитним плечем до 1 000 разів та передовими функціями торгівлі, орієнтованими на користувача. Merkle Trade працює на блокчейні Aptos та має відмінні показники продуктивності та масштабованості. Порівняно з Gains Network, яка пропонує таке ж велике кредитне плече, у нього менші затримки та комісії за транзакції.

На відміну від більшості бірж, на Merkle Trade немає книги замовлень. Замість цього, Merkle LP діє як контрагент для кожної угоди, і коли трейдери втрачають гроші, вона бере заставу та виплачує прибуток з закритих угод з позитивними результатами.

  • Торгуйте криптовалютами, валютой и товарами з використанням кредитного плеча до 1 000x

Merkle Trade було розроблено з самого початку, щоб надавати широкий спектр торгівельних пар, включаючи криптовалюти, валютні пари та товари, а також один з найвищих плеч на ринку; до 150x на криптовалюту та до 1,000x на валютних ринках.

  • Виконання замовлення за справедливою ціною, латентність у мілісекундах, мінімальний проскальзування

Створення блокчейну з Aptos, який має найнижчу затримку на сьогоднішній день, може забезпечити найшвидший досвід транзакцій на ланцюжку. Для трейдерів це означає швидший досвід торгівлі та менші зміни цін через затримки виконання.

  • Децентралізовані, некастодіальні транзакції без контрагентного ризику

Торгівці торгують з ліквідним пулом (Merkle LP), який виступає як контрагент для кожної угоди. Усі угоди та розрахунки виконуються за допомогою смарт-контрактів, і в будь-який момент не проводиться розміщення коштів користувачів.

  • Найнижча комісія за обробку

Компанія Merkle Trade стверджує, що має одні з найнижчих комісій на сьогоднішній день на ринку. Під час запуску комісія за торгівельні пaри криптовалют була такою низькою, як 0,05%, а комісія за торгівельні пaри на ринку форекс була такою низькою, як 0,0075%.

DYDX

DYDX

dYdX[4] - це децентралізована біржа (DEX), яка дозволяє користувачам ефективно торгувати постійні контракти, маючи повний контроль над активами. З моменту запуску в 2021 році, dYdX V3 використовує унікальне некастодіальне рішення другого рівня для реалізації своєї біржі, проте його книга замовлень та двигун підбору все ще централізовано керуються.

Тепер, завдяки dYdX V4, протокол росте власним ланцюгом, і весь протокол повністю перебудовується для досягнення повної децентралізації, збільшуючи пропускну здатність. dYdX також включає три функції: кредитування, маржеву торгівлю та постійні контракти. Маржева торгівля супроводжується функцією позичання. Кошти, внесені користувачами, автоматично формують фонд. Якщо під час торгівлі є недостатньо капіталу, відсотки автоматично позичаються та сплачуються.

Аналіз безпеки кредитного ризику

Ми ввели загальні типи та застосування кредитного ризику в DeFi. Крім того, існує ще багато питань безпеки у дизайні кредитного ризику, які вимагають нашої уваги. Ми проаналізуємо питання безпеки та точки аудиту кредитного ризику в DeFi на основі конкретних випадків аудиту.

Відрізняйте лімітні замовлення від ринкових замовлень

У більшості застосунків для роботи з кредитними важелями є лімітні та ринкові заявки. Сувора різниця та перевірка лімітних та ринкових заявок є дуже необхідною.Наступного разу ми проведемо детальний аналіз проблем, які ми виявили під час аудиту Merkle Trade [5].

нехай зараз = відмітка часу: :теперішні_секунди (); якщо (зараз - order.created_timestamp > 30) {         cancel_order_internal(             _order_id,             order,             T_CANCEL_ORDER_EXPIRED         );         повернення     };

Ця частина коду виконує перевірки в функції порядку, де вона перевіряє, чи пройшло більше 30 секунд з моменту створення замовлення. Якщо умови виконуються, викликайте cancel_order_internal (), щоб скасувати замовлення. Однак, якщо замовлення є лімітним, це означає, що трейдер встановив конкретну ціну, за якою він готовий купити або продати актив за цією ціною. При виконанні лімітних замовлень не повинно бути такого судження; це може призвести до того, що більшість лімітних замовлень не будуть виконані. Тому важливо чітко відрізняти торгову логіку між лімітними та ринковими замовленнями.

Помилка обчислення кредитного плеча

Помилки обчислень завжди були дуже поширеною проблемою в DeFi, і вони також особливо поширені в роботі з кредитними ресурсами. Ми використаємо виявлені протоколом Нескорені [6] питання під час аудитів сторонніх учасників для ретельного вивчення проблем обчислень кредитних ресурсів.

Давайте розглянемо код для розрахунку кредитного плеча в Unstoppable:

def _calculate_calculation ( _position_value: uint256, _debt_value: uint256, _margin_value: uint256) - > uint256: if _position_value < = _debt_value: #bad debt Return max_value (uint256) Return ( precision * (_debt_value + _margin_value) /(_position_value - _debt_value) /PRECISION )

Функція _calculate_margin спричинила неправильний розрахунок кредитного плеча, використовуючи _debt_value + _margin_value як чисельник замість _position_value. Три вхідні параметри функції _position_value, _debt_value та _margin_value визначаються інформацією про ціни, наданою ланцюжковими оракулами Chainlink. Тут _debt_value позначає значення перетворення частки боргу позиції в суму боргу в доларах. _margin_value позначає поточне значення початкової маржі позиції (у доларах США). _position_value позначає поточне значення (у доларах США) початкової суми позиції.

Проблема з вищезазначеним обчисленням полягає в тому, що _debt_value + _margin_value не представляє вартість позиції. Маржа - це співвідношення між поточною вартістю позиції та поточною вартістю маржі. _position_value - _debt_value є правильним. Це показує поточну вартість маржі, але _debt_value + _margin_value не представляє поточну вартість позиції, оскільки немає гарантії, що цінність боргових токенів та токенів позиції мають відповідні коливання цін.

Наприклад, токен боргу - ETH, а токен позиції - BTC.

Аліса використовує 1 ETH як маржу, позичає 14 ETH ($2,000 кожен), та отримує 1 BTC ($30,000 кожен) у токенах позицій. Маржа - 14.

Наступного дня ціна ETH залишалася на рівні $2,000/ETH, але ціна BTC впала з $30,000/BTC до $29,000/BTC. На цей момент кредитне використання повинно бути (_позиційна_вартість == 29,000)/(_позиційна_вартість == 29,000 - _заборгованість == 28,000) = 29, а не значення, розраховане в контракті: (_заборгованість == 28,000 + _маржина_вартість == 2,000)/(_позиційна_вартість == 29,000 - _заборгованість == 28,000) = 30.

Отже, для усунення цієї проблеми слід використовувати правильну формулу, зазначену вище, для розрахунку кредитного ризику в смарт-контрактах. Неправильний розрахунок кредитного ризику може призвести до несправедливих ліквідацій або занадто ризикованих позицій у змінній ціновій ситуації.

У смарт-контрактах важливо враховувати належний розрахунок кредитного плеча для забезпечення надійності системи та інтересів користувачів. Правильний розрахунок кредитного плеча повинен ґрунтуватися на співвідношенні поточної вартості позиції та поточної вартості маржі. Якщо використовується неправильна формула розрахунку, це може призвести до неналежної реакції системи на зміни цін, ліквідації позицій, які не повинні бути ліквідовані, або дозволити існувати позиціям з надмірним кредитним плечем, тим самим збільшуючи ризики для системи та користувачів.

Логічні помилки

Логічна помилка

Помилки логіки вимагають особливої уваги під час аудитів смарт-контрактів, особливо в складній логіці, такій як DeFi з кредитним торгівлею.

Давайте обговоримо логічні проблеми, на які слід звернути увагу при використанні плеча DeFi, використовуючи проблеми, виявлені Тигром[7](Tigris, децентралізована синтетична платформа з плечовою торгівлею на основі Arbitrum та Polygon) в аудиті від сторонньої компанії.

Давайте розглянемо логіку функції закриття ліміту ціни в Тігріс:

Function limitClose ( uint _id, bool _tp, priceData calldata _priceData, Bytes calldata _signature) external{ _checkDelay(_id, false);   (uint _limitPrice, адреса _tigAsset) = tradingExtension._limitClose(_id, _tp, _priceData, _signature);   _closePosition(_id, DIVISION_CONSTANT, _limitPrice, адреса(0), _tigAsset, істина);}function _limitClose ( uint _id, bool _tp, priceData calldata _priceData, Bytes calldata _signature) зовнішнє представлення повертає (uint _limitPrice, address _TIGAsset) { _checkGas (); пам'ять iPosition.trade _trade = position.trades (_id);   _tigAsset = _trade.tigAsset;   getVerifiedPrice (_trade.asset, _priceData, _signature, 0); uint256 _price = _priceData.price;   if (_trade.orderType! = 0) revert (" 4 "); isLimit if (_tp) { if (_trade.tpPrice == 0) revert (" 7 "); limitNotSet if (_trade.direction) { if (_trade.tpPrice > _price) revert("6"); //LimitNotMet } else { if (_trade.tpPrice < _price) revert("6"); //LimitNotMet } _limitPrice = _trade.tpPrice;   } else { if (_trade.slprice == 0) revert (" 7 "); limitNotSet if (_trade.direction) { if (_trade.slPrice < _price) revert("6"); //LimitNotMet } else { if (_trade.slPrice > _price) revert("6"); //LimitNotMet } //@audit стоп-лосс закривається за вказаною користувачем ціною, а не ринковою ціною _limitPrice = _trade.slprice;   }}

При використанні зупинки втрат для закриття позиції ціна закриття користувача є ціною зупинки втрат, встановленою користувачем, а не поточною ціною активу. У разі напрямних ринків та великого кредитного ризику користувачі можуть зловживати цим, щоб досягти майже безрискових угод. Користувачі можуть відкрити довгу позицію і встановити ціну зупинки втрат, яка на $0.01 нижче поточної ціни.

Якщо ціна впаде негайно у наступному оновленні, вони закриють свою позицію за ціною входу і сплатять лише відкриті та закриті комісії. Якщо ціни піднімуться, вони, ймовірно, зароблять багато грошей. В результаті користувачі можуть зловживати методами цінового стоп-лоссу, щоб відкривати угоди з високим рівнем кредитного ризику, високим потенціалом доходу та низьким ризиком зниження.

Коливання цін

Price Tubs

Вплив коливань цін на рівень кредитного ризику DeFi дуже важливий. Тільки завжди беручи до уваги коливання цін, ми можемо забезпечити безпеку угод про кредитне використання. Давайте скористаємося DeFiner [8]протокол як приклад для глибокого аналізу виявлених проблем під час аудиту сторонньої сторони:

Протокол DeFiner проходить дві перевірки перед обробкою виведення коштів.

По-перше, метод перевіряє, чи сума, яку користувач просить вивести, перевищує баланс цього активу:

функція авторизації (адреса _accountAddr, адреса _token, uint256 _amount) зовнішня лише авторизована повертає (uint256) { // Перевірте, чи достатньо коштів менше, ніж баланс користувача вимагає (_amount < = getDepositBalanceCurrent (_token, _accountAddr), "Отриманий баланс.");   uint256 borrowLtv = globalConfig.tokenInfoLogistry () .getBorrowLtv (_token);

По-друге, метод перевіряє, чи виведення коштів не зробить показник плеча користувача занадто високим. Сума, виведена з рахунку, буде віднята від «потужності позики» поточної ціни користувача. Якщо загальна вартість позик користувача перевищує нову потужність позики, метод завершується невдачею, оскільки у користувача більше немає достатнього забезпечення для підтримки їхньої позики. Проте ця вимога буде перевірена лише у випадку, якщо користувач не має надмірного плеча:

if (getBorrowEth (_accountAddr) < = getBorrowPower (_accountAddr)) require ( getBorrowEth (_accountAddr) < = getBorrowPower (_accountAddr) .sub ( _amount.mul (globalConfig.tokenInfoRegistry () .priceFromAddress (_token)) .mul (borrowLtv) .div (utils.getDivisor (address (globalConfig), _token)) .div (100) ), " Колоквіум Коледж коли ");

Якщо користувачі позичили більше, ніж дозволяє їхній "кредитний потужність", вони все одно можуть зняти гроші. Це може трапитися в ряді ситуацій, найбільш поширеною з яких є коливання цін. Угода не враховувала вплив коливань цін на угоду, що спричинило цю проблему.

Інші

На додаток до наслідків нерозрізнення лімітних ордерів і ринкових ордерів, помилок розрахунку, логічних помилок і коливань цін, згаданих вище, існує багато моментів безпеки, пов'язаних з угодами з кредитним плечем, які вимагають нашої уваги. Це включає, але не обмежується ними, такі проблеми, як атаки на флеш-позики, маніпулювання цінами, безпека пророка, контроль влади, недостатня перевірка кредитного плеча або відсутність перевірок. Ці фактори необхідно ретельно враховувати при розробці та впровадженні угод про кредитне плече, щоб забезпечити надійність угоди та безпеку активів користувачів. Превентивні заходи, моніторинг у режимі реального часу та плани реагування на надзвичайні ситуації також є ключовими для зниження потенційних ризиків та захисту інтересів користувачів.

сумував

Висновок

Введення торгівлі за маржинальною торгівлею в протоколах DeFi дійсно надало ринку більшу маневреність, а також принесло більш складні торговельні механізми. Хоча маржинальна торгівля надає користувачам більше інвестиційних можливостей, її потенційні ризики та виклики для безпеки протоколу стали ще більш значущими.

Зі збільшенням кредитного ризику операції угод стають більш гнучкими, але внаслідок цього вони стають більш вразливими та піддаються різним загрозам безпеки. Це включає потенційну можливість невиконання строгого розмежування між лімітними та ринковими заявками, помилки в розрахунках, логічні помилки та високу чутливість до факторів, таких як коливання цін. У цьому випадку ми повинні приділити більше уваги безпеці протоколу, щоб забезпечити ефективний захист активів користувачів.

Як провідна команда з безпеки блокчейн в галузі Web3, ScaleBit розподілений у Силіконовій долині, Сінгапурі, Гонконзі, Тайвані та ін. Ми надали рішення з безпеки блокчейн для 200+ установ та проектів у глобальному секторі Web3, накопичивши 180 000+ рядків коду аудиту та захистили понад $8 мільярдів користувацьких активів. Зробіть безпеку доступною для всіх! Якщо у вас є потреби в аудиті безпеки, будь ласка, не соромтеся звертатися до нас. Ми розробимо для вас детальні, комплексні та професійні рішення з безпеки, щоб захистити вас та галузь Web3 безпечно!

Відмова від відповідальності:

  1. Цю статтю було перепечатано з [ScaleBit]і авторські права належать оригінальному авторові [Полярис]. Якщо у вас є які-небудь зауваження стосовно репринту, будь ласка, зв'яжіться з командою Gate Learn, і команда вирішить це якнайшвидше відповідно до відповідних процедур.

  2. Попередження: Погляди та думки, висловлені в цій статті, представляють лише особисті думки автора і не становлять жодних інвестиційних порад.

  3. Переклади статті на інші мови виконуються командою Gate Learn. Якщо не зазначено інше, копіювання, поширення або плагіатування перекладених статей заборонене.

Comece agora
Registe-se e ganhe um cupão de
100 USD
!