Аудит контракта EasyInvest LONGLIFE
Разбор кода EasyInvest LONGLIFE
Контракт: 0xCFD2047eB61412E9B8dE511Dc2087e07003829EE
Исходный код: https://etherscan.io/address/0xcfd2047eb61412e9b8de511dc2087e07003829ee#code
Краткий вывод:
Код безопасен. Ошибок не обнаружено. Работает код так же как и заявлено. Разработчики не имеют доступа к средствам, находящимся на контракте.
Ну а теперь давайте разберём код контракте EasyInvest LONGLIFE более подробно
В строке 1 объявляется версия компилятора для solidity
В строке 2 идёт название контракта FifteenPlus
В строке 3 создаётся переменная типа address в которой хранится адрес владельца контракта для перечисления комиссии в размере 1%. По словам создателей контракта данные средства необходимы для рекламы. В любом случае 1% практически никак не влияет на общий фонд
В строке 4 создаётся переменная для обращения к самому контракту, которая используется для отправки комиссии в размере 1% на адрес владельца
В строке 5 создаётся маппинг, специальный массив, который будет хранить в себе общую сумму вклада каждого инвестора
В строке 6 создаётся маппинг для запоминания суммы, которая уже была выплачена каждому инвестору. Это необходимо для регулирования процентной ставки, которая изменится от 15 до 1,5%, когда инвестору будет выплачен полный депозит
В строках 8 и 9 создаются временные метки, которые необходимы для рассчета выплат
В строке 10 в маппинге хранится процентная ставка для каждого вкладчика(15% или 1,5%)
Теперь перейдем к основной логике контракта
В строке 12 находится конструктор, который запоминает адрес создателя контракта для выплаты комиссии
В строке 14 объявляется функция external payable, которая вызывается всякий раз при отправке любого количества(даже 0) эфира на адрес контракта
В строках 15-18 осуществляется отправка комиссии в размере 1% от средств, находящихся на балансе контракта. Комиссия отправляется владельцу не чаще раза в сутки при отправке средств на контракт любым инвестором. Очень необычная и интересная реализация, которая не отщипывает процент от каждого вклада и не нарушает стабильность работы контракта.
В строках 19-23 осуществляется выплата инвестору сделавшему вклад в проект. В случае если вклад первый, выплата не осуществляется. Если же инвестор уже вкладывал в проект и решил вложить ещё, или же запросил выплату путем отправки 0ETH, то контракт отправит инвестору сумму, которая рассчитывается по формуле: (общий размер вклада) x (процентная ставка) x (кол-во часов с момента последнего вклада/24). Здесь нет никаких отличий по сравнению с оригинальным кодом EasyInvest
В строках 24-25 запоминается время с момента последней выплаты, а также обновляется баланс вкладчика(в случае если вкладчик дополнил свой вклад)
И наконец, в строках 27-30 обновляется процентная ставка вкладчика в зависимости от того, вывел ли сумму, превышающую его депозит или нет
На этом код контракта заканчивается. Надеюсь, данный обзор был полезен. Спасибо за внимание