Главная / Криптовалюты и биткоин / Аудит смарт контракта Rocket.Cash от BitStat
Электронные обменные пункты

Аудит смарт контракта Rocket.Cash от BitStat

Аудит смарт контракта Rocket.Cash от BitStat

Исходный код смарт-контракта Аудит смарт контракта Rocket.Cash от BitStatRocket Cash сопровождается огромным количеством комментариев на английском языке. Несомненно, это сделано из добрых и светлых побуждений, но чтение после этого становится немного затруднительным. Код написан внятно и понятно, поэтому комментарий в каждой строке немного избыточен, а иногда даже сбивает с толку.

Аудит смарт контракта Rocket.Cash от BitStat

Разберём используемые переменные и константы.

start = 1541678400 — константа, которая хранит в себе дату и время запуска проекта (8 ноября 2018). Вводить средства раньше этой даты допустимо, так как они замораживаются ждут своего часа. Работать вклад начнёт только в 12.00 UTC 8 ноября 2018.

Invested – хранилище суммы вклада;

lastInvestmentTime – хранилище начальной точки отсчёта для каждого вклада;

collected – хранилище суммы для выплаты от предыдущих вкладов в случае реинвеста;

investedTotal – общая сумма всех депозитов;

investorsCount – общее число всех инвесторов. Данный счётчик увеличивается даже в том случае, если инвестор вывел депозит, а потом снова сделал вклад. Соответственно, счётчик считает количество вкладов, а не инвесторов. Проблема не критичная, так как счётчик используется только для сбора статистики.

administrationFund = 0x97a121027a529B96f1a71135457Ab8e353060811 – адрес администрации;

Используемые события:

Аудит смарт контракта Rocket.Cash от BitStat

investment – отлавливается момент инвестирования;

withdraw – отлавливается момент снятия депозита;

Далее идёт безымянная функция, которая отвечает за приём всех транзакций. Функция довольно длинная и содержит в себе большое количество условий. Разберём их по отдельности.

Основные 2 условия и ветвления зависят от присланной суммы. Если прислали сумму отличную от нуля – инвестор хочет сделать вклад (строка 25). Во всех других случаях (строка 52) – инвестор хочет забрать дивиденды вместе с телом вклада.

Аудит смарт контракта Rocket.Cash от BitStat

Рассмотрим алгоритм внесения вклада (строки 25 — 51). В строке 27 идёт сравнение текущей даты с датой старта проекта. Если проект уже стартовал, то запускается процесс создания депозита, который начинается с определения имеющихся вкладов. Когда таковой имеется (строка 29) – запускается процесс реинвеста: сумма полагаемых дивидендов записывается в массив collected и сбрасывается счётчик времени на текущую дату и время. В случае, когда инвестор пришёл впервые (строка 43): обновляется общая статистика инвестирования. Далее механизм работы общий как для реинвеста, так и для нового вклада. В массив invested записывается значение присланной суммы, с которой тут же взымается комиссия. В строке 48 отправляется 15% на развитие проекта. Генерируется оповещение о новом кладе для статистики на сайте. На этом этапе процесс создания депозита завершается. Стоит заметить, что счётчик времени обновляется в любом случае – реинвест это был или новый вклад.

Рассмотрим алгоритм возврата депозита.

Аудит смарт контракта Rocket.Cash от BitStat

В строке 55 вызывается функция availableWithdraw, которая вычисляет сумму доступную для снятия. Если полученная сумма не равна нулю, то запускается алгоритм выплаты и обнуления инвестора. Обнуляется счётчик времени, сумма инвестирования и накопленная прибыль от предыдущих вкладов. Логика верная, никаких нарушений не обнаружено.

Аудит смарт контракта Rocket.Cash от BitStat

Функция availableWithdraw начинается с того, что идёт проверка старта проекта. Если проект ещё не запущен – функция вернёт 0 рублей и 0 копеек для снятия. Следует отметить, что функция доступна на вкладке Read Contract и воспользоваться ею может каждый инвестор для того, чтобы определить сколько дивидендов он может получить в данный момент времени. В строке 75 проверяется наличие вклада у инвестора. Далее идёт вычисление значений для двух переменных:

dividends – сумма дивидендов, которую положено выплатить за весь срок работы вклада;

canReturn – сумма равная 85% от суммы вклада;

После вычислений данные переменные сравниваются. Если canReturn больше переменной dividends, то выплачивается 85% от вклада (происходит money back) и наоборот.

Сумма дивидендов определяется функцией availableDividends.

Аудит смарт контракта Rocket.Cash от BitStat

Конечная выплата = накопленные дивиденды от предыдущих вкладов + дивиденды от текущего вклада * время хранения текущего вклада. Дивиденды текущего вклада зависят от функции dailyDividends, которая возвращает сумму выплаты в день в зависимости от общей суммы вклада.

Аудит смарт контракта Rocket.Cash от BitStat

Логика данной функции такова:

  • менее 1 ETH – 2,22% в день;
  • от 1 ETH до 5 ETH – 2,55% в день;
  • более 5 ETH – 2,88% в день;

Заявленные суммы соответствуют действительности, работоспособность данного алгоритма проверена на практике – всё работает.

Итоги аудита смарт контракта Rocket Cash от BitStat

В первой версии смарт контракта нами была найдена критическая ошибка логики — экономический баг. При определенных действиях админ мог прокручивать деньги и мгновенно получать прибыль за счет партнерских процентов. В данной версии, код отвечающий за реферальную программу убран, дыра ушла.

В ходе тестирования работы смарт-контракта была обнаружена небольшая проблема «последнего инвестора». Так как контракт выдаёт только весь депозит + дивиденды, то крупные инвесторы могут столкнуться с тем, что не смогут снять свой депозит в конце жизни проекта. Т.е., если было инвестировано 10 Eth, выждали до конца и на момент выплаты в кассе всего 9 Eth, то не вернётся ничего. Вся оставшаяся сумма останется на счету контракта для более мелкого инвестора. Так что, крупные инвесторы, которые хотят держать депозит до конца, внимательно следите за кассой.

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

Владелец контракта Аудит смарт контракта Rocket.Cash от BitStatRocket Cash не имеет доступа ко всей «кассе». Остановить, изменить контракт или повлиять на бизнес-логику также нет возможности. Дыр и бекдоров нет. Заявленные проценты на сайте проекта соответствуют тем, что есть в коде. Все чисто, подходит для инвестиций.

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

Приходите на обсуждение проектов в наш чат: https://t.me/joinchat/C1ie2RK-ocDXAyuh2f00rA.

Предупреждение

Не рассматривайте этот текст как финансовый совет. Наша команда — не инвестиционные консультанты, мы просто делимся своим личным мнением. Прежде чем инвестировать, пожалуйста, проведите собственный технический и рыночный анализ.
Все материалы сайта носят исключительно информационный характер и не могут быть расценены как призыв к действию. Вкладывая свои деньги, Вы можете ничего не заработать или потерять всё. Ответственность за принятие решений лежит только на Вас.

О нас Earnprofit

Обзор инвестиционных проектов,инвестиции в hyip,инвестиционные проекты,инвестиции в интернете,куда инвестировать деньги,вложить деньги,обзор хайпов,инвестиционные проекты в интернете,сайт инвесторов,проекты для инвестирования,инвестиционные программы.Обзор экономические игры с выводом денег,проекты по заработку в интернете,методы заработка в интернете.

Смотрите также

Ellaos — обзор отзывы хитовый проект ellaos.com (бонус 10% защита 500$)

Привет, друзья! В этой статье мы проведем обзор и выскажем отзывы о новом качественном проекте ...