Skip to content

Аудит смарт контракта doBETacceptBET (DCA)

STIGAMMA edited this page Feb 1, 2019 · 11 revisions

stigamma_black_full

В связи с тем, что наш сервис ни каким образом не является организатором азартных игр, мы проводим ребрендинг и изменяем имя проекта.

STIGAMMA - это наше новое имя.

Изменилось только имя. Все обязательства и предложения, сделанные от старого имени DoBETacceptBET, остаются в силе.

28 августа 2018 г.

Статус - завершен.

Код контрактов проверен на предмет программных закладок и критических ошибок способных привести к потере денег инвесторами.

Контракт owned

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

Переменные

owner : Хранит адрес владельца контракта, данная переменная далее используется для идентификации владельца.

Модификаторы

onlyOwner : Проверяет пользователя на владельца контракта TokenERC20, данные модификатор навешивается на те функции которые доступны только владельцу контракта.

Функции

transferOwnership : В параметрах этого метода указывается адрес нового владельца контракта TokenERC20, данный метод может вызвать только текущий владелец контракта.

Контракт TokenERC20 (основной функционал)

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

Переменные

  1. name : Хранит имя монеты, задается при создании контракта и больше не может быть изменена.
  2. symbol : Хранит короткое имя монеты, задается при создании контракта и больше не может быть изменена.
  3. decimals : Хранит число знаков после запятой, задается при создании контракта и больше не может быть изменена.
  4. totalSupply : Хранит общее количество монет в обращении, задается при создании контракта, меняется в зависимости от сжигания монет (метод burn) и эмиссии монет (метод emission), всегда отражает текущее количество монет.
  5. amountRaised : Хранит общее количество накоплений эфира, находящегося на контракте TokenERC20, используется при выводе эфира владельцем контракта (метод withdrawRaised). Накопления меняются в зависимости от продажи и покупке монет через контракт TokenERC20 (методы sell и buy)
  6. sellPrice : Хранит стоимость в WEI, по которой можно продать монеты DCA (метод sell) владельцу контракта.
  7. buyPrice : Хранит стоимость в WEI, по которой можно купить монеты DCA (метод buy) имеющиеся в наличии у владельца контракта.
  8. lockedSell : Это флаг, который является разрешением на продажу (метод sell) монет владельцу контракта.
  9. currentChallenge, difficulty и timeOfLastProof : являются базовыми переменными для работы майнинга монеты (метод proofOfWork).
  10. balanceOf : Коллекция балансов монет DCA привязанных к адресам владельцев.
  11. allowance : Коллекция разрешений по списываю монет DCA в пользу указанных адресов.

События

  1. Transfer : Событие вызываемое во время трансфера монет с одного адреса на другой.
  2. Burn : Событие вызываемое сжиганием монет.
  3. Freeze : Событие вызываемое заморозкой монет.
  4. UnFreeze : Событие вызываемое разморозкой монет.

Функции

  1. TokenERC20 : Конструктор контракта TokenERC20, который вызывается только один раз при создании контракта и задает стартовые состояние переменных контракта TokenERC20, таких как: totalSupply, name, symbol, sellPrice, buyPrice, owner, balanceOf, timeOfLastProof, lockedSell.
  2. emission : Доступна только владельцу контракта. Выпуск нового количества монет указанных в параметре данной функции.
  3. setPrices : Доступна только владельцу контракта, установка цен продажи и покупки, цены принимаются в WEI и записываются в переменные buyPrice и sellPrice.
  4. buy: Данный метод запросит сумму в эфирах, пересчитает на количество монет DCA по курсу, который записан в переменной buyPrice и назначит данномуадресату полученное количество монет DCA. Продаются монеты которые закреплены за владельцем контракта, если их не хватает то сделка не наступает.
  5. sell: Метод покупает DCA за эфиры, передается в параметр количество монет которое планируется продать происходит пересчет стоимости по курсу, указанном в переменной sellPrice и на адрес вызвавшего данный метод переводятся эфиры. Перед покупкой проверяется наличие указанного количества монет у продавца и если их недостаточно то сделка не наступает, так же проверяется и на блокировку продажи посредством состояния переменной lockedSell если она имеет значение true то продажа заблокирована.
  6. lockSell : Доступна только владельцу контракта. Установка флага разрешающего продажы монет DCA владельцу контракта.
  7. proofOfWork: Метод для поддержки майнинга монеты.
  8. _transfer: Внутренний метод контракта, который может использовать только сам контракт, в нем реализована операция по перемещению монет DCA между адресами. Существуют проверки на соответствие баланса запрашиваемым суммам.
  9. transfer: Метод стандарта ERC20, необходимый для перемещение монет между кошельками. Методу доступны монеты только владельца кошелька от имени которого вызывается метод.
  10. transferFrom: Метод стандарта ERC20, необходимый для перемещение разрешенного объема монет между кошельками. Методу доступны монеты только те, которые указаны в разрешении и адресу совпадающему с адресом вызывающем данный метод.
  11. approve: Метод стандарта ERC20, необходимый для установки разрешения перемещения монет в пользу другого кошелька. Методу доступны монеты только владельца кошелька от имени которого вызывается метод.
  12. burn: Метод стандарта ERC20, необходимый для уничтожения монет в кошельке. Методу доступны монеты только владельца кошелька от имени которого вызывается метод.
  13. burnFrom: Метод стандарта ERC20, необходимый для уничтожения разрешенного объема монет. Методу доступны монеты только те, которые указаны в разрешении и адресу совпадающему с адресом вызывающем данный метод.
  14. withdrawRaised: Метод доступен только владельцу контракта. Вывод эфиров на адрес владельца контракта, которые были получены с продаж монет DCA. Метод позволяет выводит как все целиком, так и частями, без ограничений. Объем указывается в параметре метода в WEI
  15. freeze: Метод доступен только владельцу контракта. Проводится заморозка средств разрешенных держателем монет, посредством закрепления данных монет за контрактом. Не возможно заморозить монеты не разрешенные держателем.
  16. unFreeze: Метод доступен только владельцу контракта. Проводится разморозка средств ранее замороженных в пользу адреса указанного в параметрах метода, посредством трансфера монет на указанный адрес.

Контракт содержит все необходимые методы для поддержания работы с ним по стандарту ERC20 Во всех методах присутствуют проверки на превышение лимитов средств/монет.

Предупреждение об ответственности

Этот аудит касается только исходных кодов смарт контрактов и не должен рассматриваться как одобрение платформы, команды или компании.

Авторы

Аудит провела команда проекта STIGAMMA: Telegram - @dmitr66, Skype - dmitr_66