Свежие новости
Главная / Криптовалюты и биткоин / Аудит смарт контракта Project 424 v2 от BitStat
Электронные обменные пункты

Аудит смарт контракта Project 424 v2 от BitStat

Аудит смарт контракта Project 424 v2 от BitStat

Сегодня к нам на разбор попала вторая версия смарт-контракта Аудит смарт контракта Project 424 v2 от BitStatProject 424. Если взглянуть на исходный код и маркетинг, то сразу становится понятно, что перед нами абсолютно другой проект. Осталось лишь прежнее имя и старая команда админов, которые потихонечку стараются набираться опыта ведения подобных проектов.

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

Аудит смарт контракта Project 424 v2 от BitStat

Тело контракта начинается с подключения библиотеки SafeMath и объявления глобальных переменных, которые будут использоваться в бизнес логике.

Аудит смарт контракта Project 424 v2 от BitStat

Постоянные ethereum-адреса администрации проекта:

0xcc1B012Dc66f51E6cE77122711A8F730eF5a97fa – маркетинг;

0x155a3c1Ab0Ac924cB3079804f3784d4d13cF3a45 – техническая поддержка;

0x732445bfB4F9541ba4A295d31Fb830B2ffdA80F8 – комиссия для покрытия потерь;

Переменные, которые не будут изменены на протяжении всего кода (константы):

ONE_HUNDREDS_PERCENTS = 10000 – коэффициент для вычисления 100%;

INCOME_MAX_PERCENT = 5000 – максимальное количество прибыли (+ 50% от суммы);

MARKETING_FEE = 1000 – процент на маркетинг (10%);

WITHDRAWAL_PERCENT = 1500 – процент штрафа за досрочный вывод (15%);

TEAM_FEE = 300 – процент отчисления на техническую поддержку (3%);

REFUND_FEE = 200 – процент комиссии (2%);

INCOME_PERCENT = 150 – ежедневный процент прибыли (1.5%);

BALANCE_WITHDRAWAL_PERCENT = 10 – шаг увеличения штрафного процента (0.1%);

BALANCE_INCOME_PERCENT = 1 – шаг увеличения прибыльного процента (0.01%);

DAY = 86400 – количество секунд в сутках;

SPECIAL_NUMBER = 4240 szabo – сумма, которую необходимо отправить для получения выплаты (0.00424 ETH);

Инвестор представлен в контракте в виде структуры, которая хранит в себе всего 2 поля:

firstTime – дата/время, когда инвестор сделал вклад;

deposit – сумма вклада;

Все инвесторы собраны в одном единственном хранилище users.

Событие AddInvestor объявлено для отслеживания момента инвестирования и обновления статистики на сайте.

После объявления всех переменных расположилась самая главная payable-функция, которая принимает все платежи.

Аудит смарт контракта Project 424 v2 от BitStat

В строке 97 создаётся переменная user, которая хранит в себе информацию о текущем инвесторе, предварительно загрузив данные из хранилища users. Если инвестор обратился к контракту впервые, то firstTime и deposit будут у него нулевыми. Исходя из этого, идёт соответствующая проверка в строке 100. Если инвестор является новичком, то ему запишется текущее время и сумма вклада, которую он отправил. В строках 105 – 107 происходит отправка всех комиссионных сборов администрации (10% + 3% + 2% = 15%). На этом работа с новичком заканчивается.

Если инвестор уже совершал вклад и отправил 0.00424 eth (проверка в строке 109), то запускается механизм возврата депозита. В строке 110 идёт вычисление суммы выплаты, затем идёт обнуление информации об инвесторе и отправка средств. Присутствует проверка общего баланса контракта. Если общий баланс контракта меньше той суммы, которая необходима для выплаты, то отправляется всё что есть. Так же стоит заметить, что к сумме выплаты добавляются те самые 0.00424 ETH, которые были отправлены для запроса вывода. Ни в одном проекте такого ещё не было. Мелочь, а приятно!

Рассмотрим функцию userWithdrawalSum, которая отвечает за вычисление конечной суммы выплаты.

Аудит смарт контракта Project 424 v2 от BitStat

В строке 128 осуществляется выборка информации об инвесторе из хранилища users. Затем объявляются локальные переменные daysDuration и withdraw. Первая хранит в себе срок хранения вклада, который определяется функцией getDays(). Вторая хранит сумму, которую внёс пользователь в проект.

getBalanceWithdrawalPercent – добавочный процент штрафа на вывод, зависящий от общего баланса контракта;

getBalanceIncomePercent – добавочный процент на прибыль, зависящий от общего баланса контракта;

Начиная со строки, 136 идёт определение прибыли в зависимости от срока давности вклада. Если срок вклада равен 0, то будет возвращён депозит с учётом штрафа WITHDRAWAL_PERCENT + getBalanceWithdrawalPercent. Если срок от 1 дня и выше, то логика начислений будет немного другой. Добавляется сравнение суммы депозита с 150% от него. Если предполагаемая сумма выплаты будет выше 150% от вклада, то выведено будет ровно 150%. Если меньше, то получите столько, сколько положено за N дней умноженное на процент (1,5%) минус штраф WITHDRAWAL_PERCENT + getBalanceWithdrawalPercent, который возлагается на всю сумму с учётом дневного процента. Для того, чтобы не сидеть с калькулятором и не гадать какая прибыль будет выплачена, можно зайти на вкладку Read Contract и найти функцию userWithdrawalSum(). Если рядом с ней ввести адрес, с которого совершался депозит, то в ответ мы увидим полагаемую нам сумму выплаты в wei. Для перевода wei в Eth разделите её на 1 с 18 нулями.

Несколькими абзацами выше была упомянута функция getDays(), которая возвращает количество дней, которое пролежал вклад в проекте.

Аудит смарт контракта Project 424 v2 от BitStat

Самая простая функция всего данного смарт-контракта. Вернёт 0, если пользователь не зарегистрирован, либо вернёт разность дней от текущей даты и даты начала вклада. Ответ будет строго целочисленным, поэтому прибыль высчитывается только за 24, 48, 72 часа и т.д.

Завершающей функцией в исходном коде является функция getBalancePercents(), которая отвечает за вычисление повышающих процентов в зависимости от общего баланса контракта.

Аудит смарт контракта Project 424 v2 от BitStat

В строке 165 идёт сравнение баланса контракта с 100 Eth. Если он выше, то запускается механизм вычисления плавающего процента. В противном случае, ничего добавляться не будет. При достижении баланса выше 5000 Eth, штрафной процент за вывод увеличиться на 5% (станет 20%), а процент прибыли увеличиться на 0,5% (станет 2%). Если баланс контракта будет находиться между 100 Eth и 5000 Eth, то запуститься цикл, который будет увеличивать процент прибыли на 0,01% и штрафной процент на 0,1% с каждым шагом. Шаг – 100 Eth. Т.е., если общая касса имеет 1501 Eth, то процент прибыли в день равен 1.5% + 5*0.05% = 1,55%, а штрафной процент 15% + 5*0.1% = 15.5%.

Итоги аудита смарт контракта Project 424 v2 от BitStat

В прошлой версии смарта (проводили закрытый аудит) был баг, позволяющий уйти немного за 150%, но в текущей они исправили. Остались разные мелкие недочеты.

Если брать исходный код в целом, то есть к нему некоторые вопросы, ответы на которые мы вряд ли получим. К примеру, зачем везде отправлять средства функцией send(), генерировать событие без emit или использовать цикл for в функции userWithdrawalSum(). Все эти недочёты серьёзного вреда проекту не принесут, но и плюсов не добавляют. Кстати, о плюсах. Данный проект единственный, кто возвращает 0.00424 Eth в выплате. Как администрация и заявляла, всё для людей. Несмотря на то, что процесс вычисления процентов довольно сложен, алгоритм работы всего контракта в целом простой и понятный.

Так же, не стоит забывать об опасной особенности экономической логики проекта и маркетинга, когда администратор может в считанные дни выйти в плюс, если сам совершит вклад. К большому сожалению, владелец проекта знает об этой возможности (мы писали админу на этапе аудита), но он пообещал этого не делать, а вести честную игру.

Владелец контракта Аудит смарт контракта Project 424 v2 от BitStatProject 424 v2 не имеет доступа ко всей «кассе». Остановить, изменить контракт или повлиять на бизнес-логику также нет возможности. Критических дыр и бекдоров нет. Все чисто, подходит для инвестиций.

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

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

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

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

О нас Earnprofit

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

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

Bank of America получил патент на систему хранения крипто активов клиентов на корпоративных счетах

Вчера Управление по патентам и товарным знакам США (USPTO) опубликовало информацию, согласно которой известный банк ...