Перейти к содержанию

Смарт-контракты: как достать монетку из пустого кармана


Рекомендуемые сообщения

Если вы интересуетесь блокчейном и криптовалютами и даже разобрались в том, как работают смарт-контракты, то вам наверняка не помешает знать, что такое «целочисленное переполнение». И вот почему.
Говоря простыми словами, если целое число без знака хранится в ячейке памяти длиной 1 байт, то оно может принимать только значения от 0 до 255. Это значит, что если не заданы дополнительные условия, то 255 + 1 = 0, но, что гораздо неприятнее, 0 – 1 = 255. Именно так процессоры обычно обрабатывают данные.
В современных языках программирования (не во всех, конечно) программа сама контролирует, а не произошло ли переполнения во время арифметических действий. Если да, то, вероятнее всего, это совсем не то, что хотел программист, и чтобы проблемы не возникли намного позже, выполнение программы стоит прервать сразу же.

При чем тут смарт-контракты?

 

А при том, что в смарт-контрактах для Ethereum такого контроля не предусмотрено. То есть, если у вас ноль токенов, а вы переводите один другу, то у вас становится квинтиллион токенов. Куда логичнее было бы, чтобы программа прервала работу, а ошибочная транзакция отменилась.
Почему разработчики Ethereum реализовали арифметику так, а не иначе — загадка. Однако для того, чтобы в смарт-контрактах работала привычная нам арифметика, каждый программист смарт-контрактов вынужден добавлять в свой код более 100 строчек с функциями сложения, умножения и так далее.
В противном случае злоумышленник может получить квинтиллион токенов на своем счету, завести их на биржу криптовалют и купить на все токены биткойны или эфир. По любой цене.
И это не теория, так уже неоднократно случалось с несколькими валютами. Вот пример описанной транзакции. Как правило, о проблеме в коде узнают, когда злоумышленник уже все провернул и наварился. На тот момент уже ничего нельзя сделать, ведь смарт-контракт высечен в камне — его нельзя менять или править в нем баги.
 
Читать далее >>

Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...