TGViewer
Из Solidity в AI и дальше Из Solidity в AI и дальше @solidityset · 2.48K subscribers
Post #735 442
Аудит вне рамок - 6

Отличный пример, когда деление и умножение может привести к багу в расчетах, как это было в протоколе Ajna.

Все мы привыкли к стандартным математическим функциям со знаками -, +, *, /. Также мы уже знаем, что деление перед умножением может привести к ошибке практически в каждом случае. Однако, есть не совсем очевидные моменты с математическими операциями.

Обращаем внимание при аудите

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

Деление, в некоторых случаях, может выполняться перед умножением, даже, если функции умножения идут впереди. Сложно представить? Посмотрите на пример ниже:

newRewards_ = Maths.wmul(
REWARD_FACTOR,
Maths.wmul(
   Maths.wdiv (
     interestEarned_, totalInterestEarnedInPeriod
    ), totalBurnedInPeriod
)
);

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

#audit #outofbox
  • ❤ 2
  • 👍 2
More from @solidityset
  1. Oct 2, 2026Вторая сложность — как доказать, что установилось именно опубликованное. В первом варианте…
  2. Oct 2, 2026Задача с полуоткрытым кодом На днях, в процессе создания одного приложения, столкнулся с и…
  3. Sep 22, 2026Какой язык программирования учить сейчас? На днях в Твиттере увидел небольшой пост о разви…
  4. Sep 18, 2026Интересная модель Jev Буквально пару дней назад в Твиттере многие начали обсуждение новой…
  5. Sep 14, 2026Графы повсюду Если вы также следите за новостями в мире ИИ, то наверняка уже все чаще встр…
  6. Sep 10, 2026GTA6, Cyberleek, блокчейн и безопасность Увидел несколько постов (тут и тут) про Cyberleek…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →