За бумом 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, вы получите экспозицию в ETH на $1.5 миллиона.

Точно так же, если вы медвежьи, вы можете выбрать депонирование стейблкоинов и предоставление взаймы 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 и т. д. Многие трейдеры могут испытывать трудности в различении между маржинальной торговлей и постоянными контрактами — на самом деле, все они включают использование кредитного плеча.

Однако существуют различия в механизмах кредитного плеча, комиссиях и уровнях кредитного плеча.

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

С появлением постоянных контрактов возникло понятие ставок финансирования. Цель состоит в том, чтобы сохранить цену сделки по постоянному контракту постоянной по сравнению с базовой опорной ценой. Если цена контракта выше, чем рыночная цена, то быки будут платить медведям. Другими словами, трейдеры должны постоянно платить комиссии за заем денег.

Плечо в постоянных контрактах обычно выше, чем в маржинальной торговле, и может достигать 100x. Механизм ликвидации и фактическое плечо такие же, как в маржинальной торговле.

Маржинальные токены

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

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

Это явно отличается от маржинальной торговли и перманентных контрактов — фактическое плечо этих продуктов постоянно меняется в соответствии с ценовыми колебаниями, даже если трейдер изначально может указать уровень плеча.

Давайте посмотрим, как работает балансировка в приведенном выше примере 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]GMX - это децентрализованная биржа с опцией перманентного обмена, которая предоставляет трейдерам возможность торговать активами с плечом до 50 раз. В настоящее время соглашение работает на Arbitrum и Avalanche. На GMX трейдеры полностью осведомлены о ситуации контрагента, что полностью отличается от торговли на CEX. В отличие от других соглашений о перманентных контрактах, таких как dYdX, GMX полностью работает on-chain и использует функционал 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

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

В отличие от большинства бирж, на Merkle Trade нет стакана ордеров. Вместо этого Merkle LP выступает контрагентом по каждой сделке, и когда трейдеры теряют деньги, он берет залог и выплачивает прибыль по закрытым сделкам с положительным доходом.

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

Merkle Trade был разработан с самого начала для предоставления широкого спектра торговых пар, включая криптовалюты, форекс и товары, а также одного из самых высоких плеч на рынке; до 150x на криптовалюты и до 1,000x на форекс.

  • Выполнение заказа по справедливой цене, задержка в миллисекундах, минимальное скольжение

Создание блокчейна с Aptos, который обладает наименьшей задержкой на сегодняшний день, может обеспечить самый быстрый опыт транзакций on-chain. Для трейдеров это означает более быстрый опыт торговли и меньшее скольжение цен из-за задержек в исполнении.

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

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

  • Самая низкая комиссия за обработку

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

DYDX

DYDX

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

Теперь, с dYdX V4, протокол развивается в свою собственную цепь, и весь протокол полностью перестраивается для достижения полной децентрализации при увеличении пропускной способности. dYdX также включает три функции: кредитование, маржинальная торговля и перманентные контракты. Маржинальная торговля идет в комплекте с функцией заимствования. Средства, внесенные пользователями, автоматически формируют фонд. Если во время торговли недостаточно капитала, происходит автоматическое заимствование процентов.

Анализ безопасности

Мы рассмотрели общие типы и применения маржинальной торговли в DeFi. Кроме того, существует множество проблем безопасности в конструкции маржинальной торговли, на которые следует обратить внимание. Мы проанализируем проблемы безопасности и точки аудита маржинальной торговли DeFi на основе конкретных случаев аудита.

Различие между лимитными ордерами и рыночными ордерами

В большинстве приложений для маржинальной торговли есть лимитные ордера и рыночные ордера. Строгая дифференциация и верификация лимитных ордеров и рыночных ордеров очень необходимы.Далее мы проведем детальный анализ проблем, которые мы обнаружили в аудите Merkle Trade [5].

let now = timestamp: :now_seconds (); if (now - order.created_timestamp > 30) {         cancel_order_internal(             _order_id,             order,             T_CANCEL_ORDER_EXPIRED         );         return     };

Этот фрагмент кода выполняет проверки в функции ордера, где он проверяет, прошло ли более 30 секунд с момента создания ордера. Если условия выполнены, вызывается функция отмены ордера cancel_order_internal(). Однако, если ордер является лимитным, это означает, что цена ордера установлена трейдером, и они готовы купить или продать актив по этой цене. При выполнении лимитных ордеров не должно быть подобного суждения; это может привести к тому, что большинство лимитных ордеров не будут исполнены. Поэтому важно строго различать торговую логику между лимитными и рыночными ордерами.

Ошибка расчета плеча

Ошибки в расчетах всегда были очень распространенной проблемой в DeFi, и они также особенно часто встречаются при использовании маржи. Мы будем использовать проблемы, выявленные протоколом Unstoppable [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. В этот момент привлекательным должен быть (_position_value == 29,000)/(_position_value == 29,000 - _debt_value == 28,000) = 29, а не значение, рассчитанное в контракте: (_debt_value == 28,000 + _margin_value == 2,000)/(_position_value == 29,000 - _debt_value == 28,000) = 30.

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

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

Логические ошибки

Ошибка логики

Логические ошибки требуют особого внимания при аудите смарт-контрактов, особенно в сложной логике, такой как маржинальная торговля DeFi.

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

Давайте рассмотрим логику функции закрытия предела цены в Tigris:

function limitClose ( uint _id, bool _tp, priceData calldata _priceData, Bytes calldata _signature) external{   _checkDelay(_id, false);   (uint _limitPrice, address _tigAsset) = tradingExtension._limitClose(_id, _tp, _priceData, _signature);   _closePosition(_id, DIVISION_CONSTANT, _limitPrice, address(0), _tigAsset, true);}function _limitClose ( uint _id, bool _tp, priceData calldata _priceData, Bytes calldata _signature) external view returns (uint _limitPrice, address _TIGAsset) { _checkGas (); iPosition.trade memory _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 stop loss is closed at user specified price NOT market price _limitPrice = _trade.slprice;   }}

При использовании стоп-лимита для закрытия позиции цена закрытия пользователя - это цена стоп-лимита, установленная пользователем, а не текущая цена актива. В случае направленных рынков и высокого плеча пользователи могут злоупотреблять этим, чтобы добиться практически безрисковых сделок. Пользователи могут открыть длинную позицию и установить цену стоп-лимита, которая на $0.01 ниже текущей цены.

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

Колебания цен

Цены ванны

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

Протокол DeFiner проходит две проверки перед обработкой выводов.

Сначала метод проверяет, превышает ли запрошенная пользователем сумма для вывода баланс этого актива:

function authorization (address _accountAddr, address _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)       ), " Colloquium Collège when ");

Если пользователи заняли больше, чем позволяет их "заемная мощность", они могут снять деньги в любом случае. Это может произойти в ряде ситуаций, наиболее распространенной из которых являются колебания цен. Соглашение не учитывало влияние колебаний цен на соглашение, что вызвало данную проблему.

Другие

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

суммированный

Заключение

Введение маржинальной торговли в протоколах 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, вы получите экспозицию в ETH на $1.5 миллиона.

Точно так же, если вы медвежьи, вы можете выбрать депонирование стейблкоинов и предоставление взаймы 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 и т. д. Многие трейдеры могут испытывать трудности в различении между маржинальной торговлей и постоянными контрактами — на самом деле, все они включают использование кредитного плеча.

Однако существуют различия в механизмах кредитного плеча, комиссиях и уровнях кредитного плеча.

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

С появлением постоянных контрактов возникло понятие ставок финансирования. Цель состоит в том, чтобы сохранить цену сделки по постоянному контракту постоянной по сравнению с базовой опорной ценой. Если цена контракта выше, чем рыночная цена, то быки будут платить медведям. Другими словами, трейдеры должны постоянно платить комиссии за заем денег.

Плечо в постоянных контрактах обычно выше, чем в маржинальной торговле, и может достигать 100x. Механизм ликвидации и фактическое плечо такие же, как в маржинальной торговле.

Маржинальные токены

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

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

Это явно отличается от маржинальной торговли и перманентных контрактов — фактическое плечо этих продуктов постоянно меняется в соответствии с ценовыми колебаниями, даже если трейдер изначально может указать уровень плеча.

Давайте посмотрим, как работает балансировка в приведенном выше примере 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]GMX - это децентрализованная биржа с опцией перманентного обмена, которая предоставляет трейдерам возможность торговать активами с плечом до 50 раз. В настоящее время соглашение работает на Arbitrum и Avalanche. На GMX трейдеры полностью осведомлены о ситуации контрагента, что полностью отличается от торговли на CEX. В отличие от других соглашений о перманентных контрактах, таких как dYdX, GMX полностью работает on-chain и использует функционал 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

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

В отличие от большинства бирж, на Merkle Trade нет стакана ордеров. Вместо этого Merkle LP выступает контрагентом по каждой сделке, и когда трейдеры теряют деньги, он берет залог и выплачивает прибыль по закрытым сделкам с положительным доходом.

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

Merkle Trade был разработан с самого начала для предоставления широкого спектра торговых пар, включая криптовалюты, форекс и товары, а также одного из самых высоких плеч на рынке; до 150x на криптовалюты и до 1,000x на форекс.

  • Выполнение заказа по справедливой цене, задержка в миллисекундах, минимальное скольжение

Создание блокчейна с Aptos, который обладает наименьшей задержкой на сегодняшний день, может обеспечить самый быстрый опыт транзакций on-chain. Для трейдеров это означает более быстрый опыт торговли и меньшее скольжение цен из-за задержек в исполнении.

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

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

  • Самая низкая комиссия за обработку

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

DYDX

DYDX

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

Теперь, с dYdX V4, протокол развивается в свою собственную цепь, и весь протокол полностью перестраивается для достижения полной децентрализации при увеличении пропускной способности. dYdX также включает три функции: кредитование, маржинальная торговля и перманентные контракты. Маржинальная торговля идет в комплекте с функцией заимствования. Средства, внесенные пользователями, автоматически формируют фонд. Если во время торговли недостаточно капитала, происходит автоматическое заимствование процентов.

Анализ безопасности

Мы рассмотрели общие типы и применения маржинальной торговли в DeFi. Кроме того, существует множество проблем безопасности в конструкции маржинальной торговли, на которые следует обратить внимание. Мы проанализируем проблемы безопасности и точки аудита маржинальной торговли DeFi на основе конкретных случаев аудита.

Различие между лимитными ордерами и рыночными ордерами

В большинстве приложений для маржинальной торговли есть лимитные ордера и рыночные ордера. Строгая дифференциация и верификация лимитных ордеров и рыночных ордеров очень необходимы.Далее мы проведем детальный анализ проблем, которые мы обнаружили в аудите Merkle Trade [5].

let now = timestamp: :now_seconds (); if (now - order.created_timestamp > 30) {         cancel_order_internal(             _order_id,             order,             T_CANCEL_ORDER_EXPIRED         );         return     };

Этот фрагмент кода выполняет проверки в функции ордера, где он проверяет, прошло ли более 30 секунд с момента создания ордера. Если условия выполнены, вызывается функция отмены ордера cancel_order_internal(). Однако, если ордер является лимитным, это означает, что цена ордера установлена трейдером, и они готовы купить или продать актив по этой цене. При выполнении лимитных ордеров не должно быть подобного суждения; это может привести к тому, что большинство лимитных ордеров не будут исполнены. Поэтому важно строго различать торговую логику между лимитными и рыночными ордерами.

Ошибка расчета плеча

Ошибки в расчетах всегда были очень распространенной проблемой в DeFi, и они также особенно часто встречаются при использовании маржи. Мы будем использовать проблемы, выявленные протоколом Unstoppable [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. В этот момент привлекательным должен быть (_position_value == 29,000)/(_position_value == 29,000 - _debt_value == 28,000) = 29, а не значение, рассчитанное в контракте: (_debt_value == 28,000 + _margin_value == 2,000)/(_position_value == 29,000 - _debt_value == 28,000) = 30.

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

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

Логические ошибки

Ошибка логики

Логические ошибки требуют особого внимания при аудите смарт-контрактов, особенно в сложной логике, такой как маржинальная торговля DeFi.

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

Давайте рассмотрим логику функции закрытия предела цены в Tigris:

function limitClose ( uint _id, bool _tp, priceData calldata _priceData, Bytes calldata _signature) external{   _checkDelay(_id, false);   (uint _limitPrice, address _tigAsset) = tradingExtension._limitClose(_id, _tp, _priceData, _signature);   _closePosition(_id, DIVISION_CONSTANT, _limitPrice, address(0), _tigAsset, true);}function _limitClose ( uint _id, bool _tp, priceData calldata _priceData, Bytes calldata _signature) external view returns (uint _limitPrice, address _TIGAsset) { _checkGas (); iPosition.trade memory _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 stop loss is closed at user specified price NOT market price _limitPrice = _trade.slprice;   }}

При использовании стоп-лимита для закрытия позиции цена закрытия пользователя - это цена стоп-лимита, установленная пользователем, а не текущая цена актива. В случае направленных рынков и высокого плеча пользователи могут злоупотреблять этим, чтобы добиться практически безрисковых сделок. Пользователи могут открыть длинную позицию и установить цену стоп-лимита, которая на $0.01 ниже текущей цены.

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

Колебания цен

Цены ванны

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

Протокол DeFiner проходит две проверки перед обработкой выводов.

Сначала метод проверяет, превышает ли запрошенная пользователем сумма для вывода баланс этого актива:

function authorization (address _accountAddr, address _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)       ), " Colloquium Collège when ");

Если пользователи заняли больше, чем позволяет их "заемная мощность", они могут снять деньги в любом случае. Это может произойти в ряде ситуаций, наиболее распространенной из которых являются колебания цен. Соглашение не учитывало влияние колебаний цен на соглашение, что вызвало данную проблему.

Другие

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

суммированный

Заключение

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

По мере увеличения плеча работа соглашений становится более гибкой, но в результате они становятся более уязвимыми и подверженными различным угрозам безопасности. Сюда входит потенциальная ошибка в строгом разграничении лимитных ордеров и рыночных ордеров, ошибки в расчетах, логические ошибки и чрезмерная чувствительность к факторам, таким как колебания цен. В этом случае нам необходимо уделить больше внимания безопасности протокола, чтобы обеспечить эффективную защиту активов пользователей.

В качестве ведущей команды по безопасности блокчейнов в области Web3 ScaleBit распределен в Силиконовой долине, Сингапуре, Гонконге, Тайване и т. д. Мы предоставили решения по безопасности блокчейнов для 200+ учреждений и проектов в глобальном секторе Web3, накопили 180 000+ строк кода аудита и защитили более $8 миллиардов пользовательских активов. Обеспечиваем доступ к безопасности для всех! Если у вас есть потребности в аудите безопасности, пожалуйста, не стесняйтесь связаться с нами. Мы разработаем для вас детальные, комплексные и профессиональные решения по безопасности, чтобы обеспечить безопасность вас и области Web3!

Отказ от ответственности:

  1. Эта статья была взята из [ScaleBit]и авторские права принадлежат оригинальному автору [Полярис]. Если у вас есть возражения к перепечатке, пожалуйста, свяжитесь с командой Gate Learn, и команда решит этот вопрос как можно скорее в соответствии с соответствующими процедурами.

  2. Отказ от ответственности: Взгляды и мнения, выраженные в этой статье, представляют только личные мнения автора и не являются инвестиционными советами.

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

Lancez-vous
Inscrivez-vous et obtenez un bon de
100$
!