Атака, при которой контракт вызывает внешний адрес, а тот успевает вызвать его обратно до того, как первый вызов обновил балансы, — и вывод повторяется по устаревшему состоянию.
Так в 2016 году опустошили The DAO, и такие места до сих пор находят на аудитах: уязвимый порядок — сначала отправить средства, потом записать баланс — выглядит совершенно обычным кодом.
Мы обновляем состояние до внешних вызовов, ставим защиту от повторного входа на функции, двигающие средства, и просим независимых аудиторов отдельно проверить именно этот класс ошибок до выхода в mainnet.