События

Внимание, это розыгрыш! Пишем простой смарт-контракт

Внимание, это розыгрыш! Пишем простой смарт-контракт

Писать умные контракты для Ethereum — не такая сложная задача, как может показаться. Чтобы рассказать тебе, как это делать, мы решили провести небольшой эксперимент. В этой статье описана разработка умного контракта, который разыгрывает трехмесячную подписку на «Хакер». Уcтановив клиент и запустив контракт, ты сможешь принять участие!

  • Сегодня в эфире. Краткий экскурс в Ethereum
  • Интервью: Виталик Бутерин о себе и о создании Ethereum
  • Внимание, это розыгрыш! Пишем простой смарт-контракт
  • Ставим Ethereum на Raspberry Pi
  • Распределенное автономное ограбление. Как хакер разорил автоматическую корпорацию DAO

Начать лучше всего именно с запуска готового контракта — так будет намного проще понять, что к чему. Код ты можешь скачать с сeрвера Х и заглянуть внутрь. Он состоит из двух частей: одна — интерфейс на JSON, вторая — собственно код контракта на языке Solidity.

А теперь разберем наш контракт по частям.

Погружение

Вот самое начало:

contract HackerLottery {    struct Participant {      string nickname;      string email;    }      Participant[] public participantsProfile;    mapping(address => uint) participantsIDs;    address public owner;    string public lotteryName;    string public lotteryDescription;    uint public registeredTo;    int public winnerID;  }

int и uint — это типы для целых чисел со знаком и без знака. Они могут иметь размер от 8 до 256 бит с шагом 8 бит (uint32 — целое число без знака длиной 32 бита). Собственно, uint и int — псевдонимы для uint256 и int256 соответственно. В таких переменных мы храним время, до которого продлится розыгрыш (unix time), а также идентификатор победителя.

address — тип длиной 20 байт (160 бит), который предназначен для работы с адресами. Мы храним адрес создателя контракта, чтобы только он имел возможность вызывать некоторые функции.

string — массив, динамично изменяемая строка в юникоде. В lotteryName и lotteryDescription мы храним название и описание лотереи.

mapping — словарь, содержит пары ключ — значение. В participatnsIDs мы храним адреса и уникальные идентификаторы участников для того, чтобы с указанного аккаунта можно было зарегистрироваться только один раз.

struct — с помощью структур мы можем создавать свои кастомные переменные, в данном случае мы храним в массиве participantsProfiles никнейм и почту каждого участника.

public — позволяет читать значение внешнему контракту или клиенту. Если указать private, то доступ к переменной будет только внутри кoнтракта либо у унаследовaнного контракта.

Теперь описываем модификаторы (modifier) функций. Они служат для проверки входных данных.

Извини, но продолжение статьи доступно только подписчикам

Подписка позволит тебе читать ВСЕ платные материалы сайта, включая эту статью, без каких-либо ограничений. Мы принимаем банковские карты, Яндекс.Деньги и оплату со счетов мобильных операторов. Подробнее о проекте

1 год

2700 Р

Экономия 1400 рублей!

1 месяц

400 Р

Уже подписан?

Автор: Сергей Куприянов
28.07.2016 (13:30)
Пройди тест и узнай об этом!
Информер новостей
Расширение для Google Chrome
Пишите нам

Редакция: info@alterprogs.ru

Реклама: adv@alterprogs.ru

Все права защищены © 2010-2019

"Alterprogs.ru" - технологии будущего

Контакты  | Карта сайта

Использование любых материалов, размещенных на сайте, разрешается при условии ссылки на alterprogs.ru. Для интернет-изданий - обязательна прямая открытая для поисковых систем гиперссылка. Ссылка должна быть размещена в независимости от полного либо частичного использования материалов. Материалы в рубрике "Новости партнеров" публикуются на правах рекламы.