Инструкция по работе со смарт-контрактом лотереи EtherWinX25

Инструкция по работе со смарт-контрактом лотереи EtherWinX25

EtherWin Team

ВНИМАНИЕ! На данный момент UI/UX дизайн лотереи находится на стадии доработки. В ближайшее время вы сможете участвовать в нашей лотерее на сайте ewlottery.com, воспользовавшись простым и понятным интерфейсом. Сейчас принять участие в лотерее можно установив смарт-контракт лотереи в кошельке wallet.ethereum.org.


Для работы со смарт-контрактом лотереи вам необходимо:

1.   Установить Metamask в браузер Google Chrome.

2.   Получить эфиры в тестовой сети Rinkeby.


Установка смарт-контракта лотереи EtherWinX25 в кошелке wallet.ethereum.org

1.   Заходим в кошелек по ссылке https://wallet.ethereum.org/.
Metamask должен быть запущен в тестовой сети Rinkeby!

Если вы сделали все правильно, на странице кошелька должен отобразиться ваш баланс.

2.   Нажимаем на кнопку КОНТРАКТЫ, затем НАБЛЮДАТЬ ЗА КОНТРАКТОМ

В появившемся окне заносим данные смарт-контракта лотереи.

Адрес - 0x13016f4c5354d5477abfc699b35cd3fab5fde84e .

Название – EtherWinX25 (название может быть любым).

Интерфейс – копируем код интерфейса по ссылке https://gist.github.com/KoltsovAnton/6eaa4881deeb6b94875135c17e4a2bb8 , выделяем и копируем код полностью, с 1 по 749 строку включительно. Вставляем код в поле для интерфейса и нажимаем ОК.

Затем заходим в смарт-контракт кликнув по нему.

Установка смарт-контракта лотереи в онлайн-кошелек окончена.


Работа со смарт-контрактом лотереи EtherWinX25 в кошелке wallet.ethereum.org

Перед участием в лотерее внимательно ознакомьтесь с правилами проведения лотереи EtherWinX25.


1.   Зайдите в смарт-контракт лотереи нажав на него в окне КОНТРАКТЫ.
Первым делом включите функцию «Смотреть контрактные события», отметив соответствующий чекбокс внизу страницы смарт-контракта.


2. Пользовательские функции смарт-контракта лотереи.

Нажмите на меню «Выбрать функцию» в правой части страницы смарт-контракта. Перед нами откроется меню с функциями смарт-контракта.

Для участия в лотереи вам понадобятся две функции из этого списка: Play и Get Prize, остальные функции используются разработчиками.

Функция Play предназначена для покупки билета и участия в лотерее.

Функция Get Prize предназначена для получения приза в случае выигрыша.


3. Покупка билета.

Metamask должен быть запущен в тестовой сети Rinkeby!

Выбираем функцию Play в выпавшем меню функций. В открывшемся подменю вводим стоимость билета лотереи, от 0,005 до 0,05 ETH для одного адреса. Затем нажимаем кнопку ВЫПОЛНИТЬ.

В окне Metamask проверяем, что бы Gas Limit составлял не менее 147789 units, а Gas Price находилась в диапазоне от 1 до 5 gwei. Далее нажимаем кнопку SUBMIT.

В течении некоторого времени, данная транзакция будет включена в блок. Это означает, что купленный билет принял участие в розыгрыше. Время включения транзакции в блок зависит от нагрузки сети и значения Gas Price, которое вы выбрали, обычно это происходит в течении одной минуты. Мы рекомендуем ставить значение Gas Price в диапазоне от 1 до 5 gwei.

Проверить включена ли ваша транзакция в блок можно открыв Metamask,

либо посмотрев внизу страницы событие смарт-контракта New Ticket.

1 – чекбокс должен быть отмечен
2 – адрес с которого куплен билет
3 – номер блока в которм куплен билет
4 – стоимость купленного булета в wei
5 – номер блока с результатов розыгрыша

Если вы сделали все правильно и в смарт-контракте появилось событие New Ticket с вашим билетом, можно приступить к проверке результата розыгрыша.


4.   Проверка результата розыгрыша.

Результат розыгрыша становиться известен в блоке, следующим за тем, в который была включена транзакция с покупкой вашего билета. Если N – это номер блока в котором вы купили билет, то N+1 – это номер блока с результатом вашего розыгрыша.

Номер блока с результатом можно посмотреть в событии с покупкой вашего билета в поле result Block,

либо кликнув по транзакции с покупкой билета в окне Metamask.

В этом случае вы перейдете на страницу сайта etherscan с вашей транзакцией. Номер блока в котором был куплен билет вписан в поле Block Height.

Напомним, что блок с результатом розыгрыша, является следующим за блоком, в котором вы купили билет. Значит, в данном случае, нужный вам блок будет под номером 1994464 + 1 = 1994465.

Теперь возьмем номер блока с результатом розыгрыша и вставим его в поле поиска на сайте https://rinkeby.etherscan.io/.

Откроется страница с информацией о данном блоке.

Что бы узнать выиграл наш билет или нет, надо посмотреть последний символ хеша этого блока.

Сравним этот символ хеша со значениями в таблице призов:

* приз равен стоимости билета, умноженной на значение Х
** в случае розыгрыша джек-пота на конце хеша, должны быть символы 99

В данном розыгрыше билет оказался выигрышным. Последний символ хеша «d» совпал со значением приза X2.


5.   Получение приза.

ВНИМАНИЕ! Запросить выигрыш можно после 12 подтверждений блока «Block Num (N)».

ВНИМАНИЕ! Запись выигрышного блока в смарт-контракт лотереи возможна в течении 1 часа после розыгрыша. Это обусловлено ограничением смарт-контрактов Ethereum на обращение к прошлым блокам. В будущем, добавление выигрышного блока в смарт-контракт будет происходить в автоматическом режиме, с помощью обращения с сервера. Функция записи выигрышного блока включена в функцию Get Prize и выполняется один раз, при запросе приза первым пользователем, обратившимся за ним. В этом случае, у такого пользователя, будет незначительно увеличен лимит газа для транзакции с выплатой приза. Все остальные пользователи, выигравшие в этом блоке, смогут забрать приз с использованием меньшего количества газа для выполнения транзакции.


Что бы получить приз, воспользуемся функцией Get Prize в выпадающем меню функций смарт-контракта. В открывшемся подменю в поле Block num вводим номер выигрышного блока (Result Block), который мы проверяли. Затем нажимаем кнопку ВЫПОЛНИТЬ.

В окне Metamask проверяем, что бы Gas Price находилась в диапазоне от 1 до 5 gwei. Gas Limit может составлять от 70 000 до 230 000 units, в случае выплаты джек-пота. Далее нажимаем кнопку SUBMIT.

Через некоторое время, когда транзакция с выплатой приза будет включена в блок, на ваш счет поступит сумма выигранного приза.

В смарт-контракте лотереи добавятся события Win Block Added и Send Prize.

ВНИМАНИЕ! В случае если вы все сделали правильно, а в окне Metamask появляется сообщение об ошибочной транзакции, просто перезагрузите (обновите) страницу смарт-контракта лотереи (зайдите в смарт-контракт заново). Не забывайте, что запросить выигрыш можно после 12 подтверждений блока «Block Num (N)».


6.   Текущее значение джек-пота

Узнать текущее значение джек-пота можно обратившись к паблик-переменным смарт-контракта лотереи. Для этого берем номер блока с результатом (result Block) последнего купленного билета в событиях смарт-контракта.

Пролистаем интерфейс смарт-контракта вверх до поля Jackpot value. Вставляем номер блока result Block в поле Block num. Значение джек-пота будет показано в wei, для минимальной стоимости билета.