Skip to content

Смарт-контракт дает возможность участникам отдавать свой голос в различных опросах. Контракт работает очень просто: инициализирует прозрачную систему голосования за указанные варианты и отображает общее количество голосов, полученных каждым вариантом.

Опрос (голосование) может создать любой пользователь, имеющий небольшое количество эфира. Контракт дает возможность настроить варианты выбора и список участников. Любой пользователь сможет проголосовать, получив ссылку на опрос от организатора и выбрав предпочтительный вариант. Как только участник проголосует, он (или она) не сможет изменить свой голос в опросе.

Голосование, хранение и подсчет голосов осуществляется в блокчейне Ethereum, что обеспечивает полную прозрачность конечных результатов и исключает мошенничество. Голосование полностью безопасно, поскольку Ethereum берет на себя работу третьей стороны в процессе взаимодействия организатора и участников для обеспечения правильного подсчета голосов и конфиденциальности.

Данные для создания смарт-контракта

На платформе Smartz.io в разделе Simple voting необходимо указать информацию о токене:

  • Instance name: название смарт-контракта;
  • Ballot name: название голосования;
  • Variants: варианты ответов.

Указав необходимые данные, вы получите код контракта.

Деплой контракта будет осуществлен за 0.1 эфира (через кошелек MetaMask).

После деплоя в сети вы сможете просмотреть развернутый контракт на Etherscan либо перейти к управлению контрактом в разделе «My contracts».

Подробная информация о контракте

Вам доступна следующая информация о созданном контракте:

  • Ballot topic (ballotName): тема (название) голосования;
  • Winning variant ID (getWinningVariantId): идентификатор побеждающего варианта;
  • Winning variant votes count (getWinningVariantVotesCount): количество голосов за побеждающий вариант;
  • Winning variant name (getWinningVariantName): название побеждающего варианта.

Функции опроса

Вы можете воспользоваться опрашивающими функциями (Ask functions) для получения информации о состоянии контракта и значениях, связанных с каким-либо адресом или другими условиями, которые вы должны указать. Эти функции не выполняют никакие изменений в блокчейне:

  • Get votes count (getVotesCount): подсчет голосов по номеру варианта (Variant ID);
  • Get votes count (getVotesCountByName): подсчет голосов по названию варианта (Variant name);
  • «Has address voted?» (isVoted): проверяет, проголосовал ли указанный адрес.

Функции записи

Для изменения состояний и значений смарт-контракта нужно воспользоваться функциями записи (Write functions), вносящими новую информацию в блокчейн. Все эти функции потребляют некоторое количество газа.

  • Vote (vote): проголосовать по ID варианта.
  • Vote (voteByName): проголосовать по названию варианта.