Аудит смарт контракта SmartHash 4% бессрочно от BitStat. Все чисто, подходит для инвестиций

10 окт 2018 09:33:38 Обзоры смартов

Исходный код смарт-контракта SmartHash условно можно разделить на 3 блока: математическая библиотека, бизнес-логика, функции доступа к статистике контракта. Разберём подробно каждый из блоков.

Непосредственно здесь про сам проект: Обзор и отзывы о смарт-контракте SmartHash - 4%. Зашли в smarthash.net на 3 эфира

1. Математическая библиотека SafeMath

Математическая библиотека SafeMath представляет собой реализацию основных математических действий – сумма, разность, умножение и деление. Зачем изобретать велосипед, когда всё это прекрасно умеет делать язык Solidity? Вся соль в том, что библиотека SafeMath делает это более безопасно, проверяя входные данные и полученный результат.

Функция mul (строки 4 - 11) является реализацией умножения двух чисел. Если одно из чисел равно нулю, то она вернёт нуль. Бывают такие случаи, когда в результате умножения получается очень большое число и в память оно не помещается. В конечном итоге в памяти начинает храниться совсем другое число и алгоритм работы контракта нарушается. Чтобы этого не произошло, выполняется дополнительная проверка результата строкой 9. Если результат разделить на первое число, то в итоге обязательно должно получится второе число. Иначе, работа смарт-контракта прекращается.

Функция div (строки 13-15) реализует деление одного числа на другое. Никаких дополнительных проверок тут не производится. Почему? Ответ на данный вопрос оставим на совести программиста…

Функция sub (строки 17-20) занимается вычитанием. Так как результат не должен быть отрицательным числом, то производится проверка величин в строке 18. Уменьшаемое число не должно быть меньше вычитаемого.

Функция add (строки 22-26) складывает два числа. По аналогии с умножением, строкой 24 проводится проверка корректности числа, которое получилось в результате сложения. Если число получится очень большое и не поместиться в памяти, то контракт остановит своё выполнение и транзакция не выполнится. Средства вернуться на ваш счёт.

Стоит отметить, что данная библиотека встречается во многих проектах подобного типа. В данном смарт-контракте библиотека не имеет никаких нежелательных округлений, дыр и бекдоров. Всё чисто!

2. Бизнес-логика смарт-контракта

Теперь перейдём к аудиту бизнес-логики смарт-контракта. Разместилась она в строках 29-70.

Практически в первой строчке контракта идёт подключение библиотеки SafeMath, которая была описана выше. Далее идёт объявление двух Ethereum-адресов на которые осуществляются отчисления от вклада создателям контракта.

0xb5a885c796DbD4656345551cc41d3E8844ac8c04 – адрес, куда перечисляется комиссия сервиса 0xd0396aAEcb5547776852aB8682Ba72E1209b536d – адрес, на который поступают средства на рекламу. Данные адреса постоянные и никак не скрываются, что говорит о честности администрации.

Строки 35-41 объявляют 4 хранилища (таблицы), которые хранят в себе информацию о суммах депозитов, прибыли, реферальских отчислений и номера блока-счётчика. Также имеются 2 открытые для посторонних глаз переменные totalDepositedWei и totalWithdrewWei, которые содержат в себе общую сумма вкладов и выплат для всего контракта.

Строка 43 запускает работу смарт-контракта при поступлении на него средств.

Строка 44 вычисляет 5% от суммы вклада.

Строка 45 вычисляет 10% от суммы вклада.

Следующие 2 строки осуществляют перевод средств на упомянутые выше адреса. Как мы видим из кода, заявленные на сайте проекта проценты соответствуют действительности. Это радует.

Строки кода 50-57 выполняются только в том случае, если вклад уже был совершён в проект. В строке 52 идёт вычисление суммы, которую необходимо вернуть инвестору. Как видно из формулы, нам полагается 4% от суммы вклада каждый 5900 блок. Всё как заявлено на сайте проекта. После всех математических вычислений средства направляются в адрес инвестора, статистическая информация записывается в хранилище.

Как это не странно, но в проекте реализована реферальная программа, которая описывается строками 59-64. Адрес реферера хранится в msg.data, которые представляют собой всё то, что вы напишите в поле Data при совершении перевода. Соответственно, если указать там адрес человека, который порекомендовал Вам проект, то он получит admRefPerc = 5% от вклада. Строка 60 говорит нам о том, что адрес должен быть валидным и самому себе отправить не получится. Если что-то из этого не выполняется – средства останутся у вас на вкладе. Затем идёт отправка средств рефереру. После обновления всех статистических данных (строки 66-69), работа смарт-контракта завершается.

3. Статистика контракта и информация о вкладах

Оставшиеся строки кода реализуют доступ к статистике контракта и информации о вкладах.

userDepositedWei – функция, которая вернёт сумму вклада.

userWithdrewWei – функция, которая вернёт сумму выведенных средств.

userDividendsWei – функция, которая вернёт сумму предполагаемых дивидендов на текущий момент времени.

userReferralsWei – функция, которая возвращает сумму полученную от рефералов.

Воспользоваться данным функционалом можно, если зайти на страницу контракта в Etherscan.io на вкладку Read Contract.

Если в поле _adress ввести адрес кошелька с которого сделан вклад и нажать кнопку Query, то можно получить информацию о вкладах и самом контракте.

Все статистические функции public view, данные только возвращают на чтение. Никакие данные в контракте они не модифицируют и не реализовывают такой возможности.

Завершающая функция bytesToAddress (строки 88-91) осуществляет перевод цепочки байт в Ethereum-адрес. Используется она при определении адреса реферера из msg.data.

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

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

Как инвестировать: Обзор и отзывы о смарт-контракте SmartHash - 4%. Зашли в smarthash.net на 3 эфира

Также отличные аудиты смарт контрактов делает ютуб канал CryptoManiac:

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

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

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

Хотите зарабатывать на крипте? Подписывайтесь на наши Telegram каналы!

6 комментов1 411 просмотров
Читайте также
Комментарии
постраничноцеликом
датапопулярные
Gandopas
2

10.10.2018 12:30:46#
Очень круто! Спасибо битстат за вашу работу. Не устану повторять, что вы ребята одни из лучших блогов по крипте. Если не самый лучший!
BitStat
0

10.10.2018 12:33:20#
Спасибо, приятно! Стараемся.
Комментарий удален
goga4ka
0

10.10.2018 16:45:44#
Добрый день!
Поясните, пожалуйста, что происходит в 55 строчке?
withdrew[msg.sender] += depositsPersents;
Говоря простым язяком: прибыль[поле отправителя] операция присваивания-сложения процент на вклад (что нужно вернуть инвестору).
В итоге:прибыль = прибыль+процент на вклад
Что это значит?
Спасибо.
uzer2
1

10.10.2018 17:09:56#
В смарт-контракте есть хранилище (как таблица) withdrew. В нём хранится общая сумма выплат каждого инвестора для статистики. Т.е., есть ячейка с адресом инвестора которой соответствует ячейка с числом = общая суммы выплат. В 55 строке как раз и прибавляется очередная сумма выплаты к общей суммы выплат инвестора. В 52 строке идёт вычисление суммы выплаты, в 53 строке отправка, а в 55 строке добавление этой суммы в таблицу для статистики. В коде не совсем по смыслу названы некоторые переменные, поэтому их названия и сбили Вас с толку.
goga4ka
0

10.10.2018 17:14:42#
Спасибо за ответ!
Картина стала понятнее.
Всё верно, не всегда понятно, что разработчик имел в виду, но главное, чтобы код был рабочий и без дыр.
Только зарегистрированные пользователи могут писать комментарии.
Авторизуйтесь, пожалуйста, или зарегистрируйтесь.
Новые смарты
Вклады в смарты
Скам смарты
Подписывайтесь