Рекомендации по аудиту протоколов ставок

Рекомендации по аудиту протоколов ставок

Время Читать: 6 минут

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

Что такое стейкинг ликвидности?

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

Рекомендации по аудиту протоколов ставок PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Например, у вас есть 100 ETH, которые вы хотите поставить в сети Ethereum. Вместо того, чтобы блокировать свой ETH на фиксированный период, вы можете использовать службу стейкинга ликвидности, такую ​​как Lido, чтобы поставить свой ETH и получить взамен ликвидный токен под названием stETH. С помощью stETH вы по-прежнему можете торговать или использовать поставленный ETH, получая вознаграждение за стекинг.

Давайте начнем с аудита контрактов на стейкинг:

Изучите все доступные спецификации аудита, прежде чем начинать с кода контракта. Это может быть официальный документ, файлы README или что-то еще. Это даст вам представление о том, что будет содержать код контракта.

При просмотре документа спецификации аудита для контракта на стейкинг обратите внимание на следующие моменты:

  • Виды сборов и их расчет.
  • Механизм вознаграждения за поставленные токены
  • Полномочия владельца
  • Будет ли контракт содержать ETH?
  • Какие токены будут храниться в контракте?
  • Первоначальный контракт, из которого он разветвлен

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

Уязвимые места искать?

1. Механизм вывода вознаграждения:

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

  • Проверьте, может ли какой-либо пользователь снять больше, чем его вознаграждение + сумма ставок.
  • Проверка переполнения/недополнения при расчете суммы
  • Проверьте, могут ли определенные параметры негативно повлиять на вознаграждение во время расчета.
  • Если в этой функции используется block.timestamp или block.number. Проверьте, можно ли его использовать каким-либо образом.

2. Платная логика:

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

3. Механизм чеканки/сжигания токенов LP:

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

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

4. Ошибки округления:

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

Чтобы определить, могут ли ошибки округления существенно увеличиться в течение длительного периода времени, мы можем математически рассчитать диапазон возможных ошибок округления.

5. Продолжительность ставок:

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

6. Внешние вызовы и обработка токенов:

Большая часть внешних вызовов будет направлена ​​на токен-контракты. Итак, мы должны определить, с какими типами токенов будет работать контракт стейкинга. Важно проверять внешние вызовы на наличие ошибок и повторных атак. Дефляционные токены или токены с комиссией за перевод, такие как Safemoon, могут создавать проблемы, если их логика реализована неправильно.

7. Проверка ценовых манипуляций:

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

8. Некоторые дополнительные проверки:

  • петли: Если логика контракта включает в себя циклическое перебор массивов, важно убедиться, что лимит блочного газа не превышен. Это может произойти, когда размер массива очень велик, поэтому вам следует выяснить, какие функции могут увеличить размер массива и не может ли какой-либо пользователь использовать его для проведения DoS-атаки. Проверьте это отчету.
  • Структуры: Контракты ставок используют тип структуры для хранения данных пользователя или пула. При объявлении или доступе к структуре внутри функции важно указать, использовать ли «память» или «хранилище». Это может помочь нам сэкономить немного газа. Для получения дополнительной информации см. к этой статье.
  • Передний ход: ищите любые сценарии, в которых злоумышленники могут опережать любую транзакцию в своих интересах.
  • Проверка функции видимости/контроля доступа: Любая функция, объявленная как внешняя или общедоступная, может быть доступна любому. Поэтому важно убедиться, что никакая публичная функция не может выполнять какие-либо конфиденциальные действия. Крайне важно убедиться, что в протоколе ставок реализованы соответствующие средства контроля для предотвращения несанкционированного доступа как к поставленным монетам, так и к инфраструктуре системы.
  • Риски централизации: Важно не давать хозяину чрезмерных полномочий. Если адрес администратора скомпрометирован, это может привести к значительному повреждению протокола. Убедитесь, что привилегии владельца или администратора соответствуют требованиям, и убедитесь, что в протоколе есть план обработки ситуаций, когда происходит утечка закрытых ключей администратора.
  • Обработка ETH/WETH: Контракты часто включают определенную логику для обработки ETH. Например, когда msg.value > 0, контракт может конвертировать ETH в WETH, при этом позволяя получать WETH напрямую. Когда пользователь указывает WETH в качестве валюты, но отправляет ETH вместе с вызовом, это может нарушить определенные инварианты и привести к некорректному поведению.

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

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


11 Просмотры

Отметка времени:

Больше от Квиллхэш