Как быстро создать смарт-контракт ICO на Ethereum

Статья представляет собой пример быстрого запуска своего смарт-контракта ICO на эфире. Мы не будем подробно разбирать все функции и с нуля писать смарт-контракт. Наша задача — взять готовый, сделать минимум изменений и запустить его.

  1. За основу возьмем смарт-контракт TenX.  Он хорош тем, что там есть практически все необходимые функции.
  2. Ищем строчки

    И заменяем название контракта токена на свое, пусть наш токен будет называться  ICE. Тогда название контракта будет IceToken. Вместо «TenX Pay Token» пишем свое описание токена. Я написал просто «Ice Token». Как правило в описании указывают название своего ICO плюс название токена. Вместо «PAY» — пишем символ токена. Под этим эменем он потом будет у вас торговаться на бирже. Итак у меня получилось что-то такое:
  3. В 455 строчке заменяем PayToken на название контракта вашего токена. В моем случае вместо

    получаем
  4. Смотрим строчки с 459 по 471 там будет код:

    Тут нам нужно поменять дату начало ICO. Это поле start. Также поменяйте hardcap — это количество эфира, которое вы планируете собрать в течение ICO. 365 — количество дней в течение которого будет проходить ICO. Поля hardcap и start можно поменять и после того как зальете контракт в блокчейн, но мы это рассматривать не будем.
  5. Заливаем код в блокчейн.
    1. Для этого открываем Ethereum Wallet и выбираем «contracts».
    2. Затем выбираем «Deploy new contract».
    3. В окно «SOLIDITY CONTRACT SOURCE CODE» вставляем наш код
    4. Ждем пока скомпилируется. И справа от окна будет будет выбор «select contract to deploy». В котором выбираем MainSale.
    5. И нажимаем кнопку «deploy» внизу, далее соглашаемся на все.
  6. Теперь нам надо залить в блокчейн контракт ExchangeRate. Поступаем также как и в пункте 5, только в самом последнем выбираем контракт ExchangeRate.
  7. Мы залили контракт ExchangeRate. Он у нас отвечает за курс ваших токенов. Т.е. в нем хранится информация о том сколько потребуется эфира для покупки вашего токена. Этот курс нам надо установить.   Для этого необходимо вызвать функцию updateRate и указать для ETH курс. Так коэффициент 100000000000000000000 дает за один эфир 100 токенов. Для установки цены нужно вызвать updateRate с первым параметром ETH, а вторым — цена токена в wei, в нашем примере 100000000000000000000.
  8. Теперь нам необходимо указать адрес контракта ExchangeRate для MainSale. Для этого вызовем функцию setExchangeRate у MainSale и укажем адрес ExchangeRate.
  9. У контракта MainSale  нужно указать адрес куда будет заливаться эфир, за который пользователи покупают ваши токены. Для этого вызовите у контракта MainSale функцию setMultisigVault с указанием вашего адреса.

После всех этих манипуляций ваш ICO должен работать. В случае если нужно поправить количество выпускаемых токенов — вызовите функцию setHardcap у MainSale.  Если нужно поправить дату начала ICO — вызовите функцию setStart у MainSale.

Теперь если пользователь перешлет эфир на адрес контракта MainSale, то контракт MainSale рассчитает сколько токенов необходимо начислить в соответствии с указным в ExchangeRate коэффициентом. А полученый эфир перешлет на указанный в multisigVault адрес.

В соответствии с этим алгоритмом сделал свой пример ICO. Работоспособность такого контракта можно лицезреть на практике. Если отправить на адрес (проверяя свой ICO контракт — адрес замените на свой!): 0x2aa307aaf1617c301904e28bdcc672f909344609 эфир то вам зачислятся токены ICE (при этом Gas Limit нужно указать не менее 87518).

Вот пример транзакции — было отправлено 0.01 эфир на контракт  MainSale:

Контракт MainSale в свою очередь начислил токены ICE в количестве 100 штук на адрес 0xea15adb66dc92a4bbccc8bf32fd25e2e86a2a770.

Убедится что токены начислены можно тут . Просто укажите в поле balanceOf адрес 0xea15adb66dc92a4bbccc8bf32fd25e2e86a2a770 и нажмите query. И контракт выведет количество начисленных токенов ICE.

Также работоспособность контракта можно проверить и в MyEtherWallet. Для этого достаточно добавить информацию о токене:

 

Если статья была полезна, то в качестве благодарности можно начислить немного эфира на 0x2aa307aaf1617c301904e28bdcc672f909344609 (при этом Gas Limit нужно указать не менее 87518), а взамен получите немного токенов ICE)

4 Комментариев

Добавить комментарий