Старт PreICO проекта PayAll 2: первые ошибки
Сегодня в 18.00 по Москве или 11/20/2017 @ 21:00 (UTC) стартовал preICO проекта PayAll.
Красные транзакции
Для проекта мы разработали смарт-контракты
Подробности с адресами и видеоинструкциями по ссылке
https://golos.io/preico/@preico/start-preico-proekta-payall
Однако, при наступлении часа Х - PreICO не началось!
Эфир возвращался - транзакции не проходили. Убедиться здесь
https://etherscan.io/address/0x6a802a8bc6b0fa3ce5f5f46eebcfb4d4935c83f7
Быстро разобравшись в чём дело, выяснили - всё дело в ошибке из-за особого обозначения времени.
Особое время
Дело в том, что в UNIX мире, принято отсчитывать время в секундах, начиная с 1 января 1970 года.
Вот оно
_PreICOEndTime = 1513803600;
_ICOStartTime = 1526850000;
_ICOEndTime = 1529528400;
Всё в соответствии с требованием заказчика
PreICO StartTime = 20 ноября 18:00
PreICO EndTime = 20 декабря 18:00
ICO StartTime = 20 мая 18:00
ICO EndTime = 20 июня 18:00
Мне лично пришлось проверить всё с помощью онлайн конвертера https://www.unixtimestamp.com/index.php
В нём всё время привязано к UTC
Московское время +3 часа
И к 18:00 было прибавлено 3 часа - 21:00
Мы тестировали смарт-контракт 16 раз!!
Провели все необходимые пин-тесты, аудиты и проверки на соответствие.
И в этом утонуло, что надо не прибавить, а отнять 3 часа!
Быстрое исправление
Во время старта PreICO проекта не прошла ни одна транзакция и мы срочно добавили в блокчейн новый смарт-контракт с исправленным временем.
PreICO StartTime = 20 ноября 19:00
PreICO EndTime = 20 декабря 19:00
ICO StartTime = 20 мая 18:00
ICO EndTime = 20 июня 18:00
Адрес нового смарт-контракта для сбора средств
https://etherscan.io/address/0x5F3469aA7298BC88723b53Dbb11DF291257cA5f1
Токен-контракт
https://etherscan.io/address/0xf82dc0743a67d1D322e4A2De5C090D8a1B391bCE
Во избежание неожиданностей, мы стали первыми покупателями 150 токенов проекта + 25% бонуса первой недели в 19:00 https://etherscan.io/tx/0x152cee30ef7d0fba25975c83a7f0d5199849b68928623c5a34ab8d6b11326f6a
Успешно!
Управление смарт-контрактами было передано заказчику.
Причина создания двух смарт-контрактов:
- так надёжнее. Если с собирающим деньги пойдёт что-то не так, можно отключить ему доступ ко второму
- когда токены начнут хождение - плата за транзакции будет меньше, ибо код только токен-контракта меньше
- удобное делегирование - деньги доверить можно одному лицу, а токены - другому
Урок из ситуации
Проверяя серьёзные вещи и отдавая результаты на аудит, необходимо выбирать не только матёрых кодеров, которые смотрят в глубь. Выбирайте новичков, иногда они могут вас спасти от «детских» ошибок.