Post
Topic
Board Работа
Re: [Аудит] смарт контракта. Как выглядит отчеm
by
hero10
on 21/08/2018, 02:58:16 UTC
Еще один свежий 🚸аудит небольшого контракта

***
🔥 [КРИТИЧНЫЕ]
не выявлено

***
❗ [СЕРЬЕЗНЫЕ]
не выявлено

📣 [ПРЕДУПРЕЖДЕНИЯ]
не выявлено

💡 [ЗАМЕЧАНИЯ]

1. Классы из библиотеки openzeppelin-solidity не самой последней версии

Изменения в новых версиях:
— незначительные оптимизации библиотеки SafeMath
— изменена проверка баланса пользователя при отправке токенов — теперь при ошибочном указании неправильного баланса не сжигается весь газ транзакции

2. Событие Transfer при создании токенов

Согласно стандарту при создании новых токенов следует вызывать метод Transfer с отправителем равным адресу 0x0

https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md#transfer

> A token contract which creates new tokens SHOULD trigger a Transfer event with the _from address set to 0x0 when tokens are created.

3. Событие Transfer при сжигании токенов
По аналогии предыдущим пунктом в функции `burn` можно добавить вызов события Transfer с адресом назначения, равным address(0).

В библиотеке openzeppelin-solidity сделано именно так: https://github.com/OpenZeppelin/openzeppelin-solidity/blob/master/contracts/token/ERC20/BurnableToken.sol#L43

4. Тип decimals
Согласно стандарту тип для `decimals` должен быть uint8: https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md#decimals

5. Запись больших чисел
Для наглядности и уменьшения риска ошибиться большие числа можно записывать так:
1925000000000000000000000000 = 1925000000 * 10**18