KL FC Bot 189 Опубликовано 16 апреля, 2020 Share Опубликовано 16 апреля, 2020 Если вы интересуетесь блокчейном и криптовалютами и даже разобрались в том, как работают смарт-контракты, то вам наверняка не помешает знать, что такое «целочисленное переполнение». И вот почему.Говоря простыми словами, если целое число без знака хранится в ячейке памяти длиной 1 байт, то оно может принимать только значения от 0 до 255. Это значит, что если не заданы дополнительные условия, то 255 + 1 = 0, но, что гораздо неприятнее, 0 – 1 = 255. Именно так процессоры обычно обрабатывают данные.В современных языках программирования (не во всех, конечно) программа сама контролирует, а не произошло ли переполнения во время арифметических действий. Если да, то, вероятнее всего, это совсем не то, что хотел программист, и чтобы проблемы не возникли намного позже, выполнение программы стоит прервать сразу же.При чем тут смарт-контракты? А при том, что в смарт-контрактах для Ethereum такого контроля не предусмотрено. То есть, если у вас ноль токенов, а вы переводите один другу, то у вас становится квинтиллион токенов. Куда логичнее было бы, чтобы программа прервала работу, а ошибочная транзакция отменилась.Почему разработчики Ethereum реализовали арифметику так, а не иначе — загадка. Однако для того, чтобы в смарт-контрактах работала привычная нам арифметика, каждый программист смарт-контрактов вынужден добавлять в свой код более 100 строчек с функциями сложения, умножения и так далее.В противном случае злоумышленник может получить квинтиллион токенов на своем счету, завести их на биржу криптовалют и купить на все токены биткойны или эфир. По любой цене.И это не теория, так уже неоднократно случалось с несколькими валютами. Вот пример описанной транзакции. Как правило, о проблеме в коде узнают, когда злоумышленник уже все провернул и наварился. На тот момент уже ничего нельзя сделать, ведь смарт-контракт высечен в камне — его нельзя менять или править в нем баги. Читать далее >> Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.