Реентранси атака в Solidity происходит, когда атакующий может вызвать функцию контракта повторно, до того как первый вызов функции завершен, что позволяет атакующему извлекать средства или изменять состояние контракта. В случае с DAO, атакующий использовал эту уязвимость для многократного изъятия Ether из фонда. Этот инцидент подчеркнул необходимость тщательного аудита и тестирования смарт-контрактов, чтобы предотвратить подобные атаки в будущем. Это, возможно, самый известный инцидент, связанный с reentrancy attack, результатом которой стала потеря более 3,6 миллионов ETH.
а как избежать реентранси? на что обратить внимание во время разработки?