Децентрализованное голосование относится к системе голосования, которая работает на блокчейне. Ключевая идея здесь заключается в том, чтобы использовать прозрачность, безопасность и неизменяемость, обеспечиваемые технологией blockchain, для создания системы голосования, которой трудно манипулировать и которую легко проверить.
В децентрализованной системе голосования каждый голос представляет собой транзакцию в блокчейне, которая видна всем участникам, но может быть изменена только голосующим до момента подачи голоса. После того, как голос отдан, он записывается в блокчейн и не может быть изменен, обеспечивая прозрачный и защищенный от взлома механизм голосования.
Remix IDE (интегрированная среда разработки) - это мощный инструмент с открытым исходным кодом, созданный специально для разработки смарт-контрактов Ethereum. Он запускается непосредственно в Вашем веб-браузере, поэтому Вам не нужно ничего устанавливать на свой компьютер.
Вы можете получить доступ к IDE Remix по адресу https://remix.ethereum.org. Когда Вы откроете Remix в браузере, Вы найдете три панели:
Левая панель: Здесь Вы можете создавать, импортировать и управлять своими файлами Solidity. Он также включает различные плагины для компиляции, тестирования, отладки и развертывания Ваших контрактов.
Центральная панель: Это Ваш редактор кода. Здесь Вы будете писать и редактировать свой код Solidity.
Правая панель: Эта панель предоставляет различные инструменты для компиляции Ваших контрактов, их развертывания в сети Ethereum (либо в реальной сети Ethereum, либо в симуляторе JavaScript VM), а также для взаимодействия с развернутыми контрактами.
Давайте начнем с простого контракта "Voter". Этот контракт будет отслеживать избирателей в нашей системе.
В Remix IDE перейдите в "File Explorer" и щелкните на значке "+", чтобы создать новый файл. Назовите его Voter.sol
.
Теперь давайте начнем составлять наш контракт:
Solidity
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;
contract Voter {
// Структура для представления человека
struct Person {
bool voted; // if true, that person already voted
uint vote; // index of the voted proposal
}
// Маппинг для отслеживания всех избирателей
mapping(address => Person) public voters;
// Функция для регистрации избирателя
function registerVoter() public {
voters[msg.sender].voted = false;
}
}
Идентификатор лицензии СПДХ: Строка // SPDX-License-Identifier: GPL-3.0
указывает на то, что в нашем контракте используется Стандартная общественная лицензия GNU версии 3.0. Это широко распространенная лицензия на свободное программное обеспечение, которая гарантирует конечным пользователям свободу запуска, изучения, совместного использования и модификации программного обеспечения.
Директива Pragma: Директива pragma solidity >
=0 .7.0 & lt ;0.9.0; определяет, что контракт написан на версии Solidity, которая больше или равна 0.7.0 и меньше 0.9.0. Это помогает предотвратить компиляцию контракта с помощью более новой, несовместимой версии компилятора.
Определение контракта: Блок Contract Voter {...}
определяет новый контракт с именем Voter
. Здесь мы задаем переменные состояния и функции контракта.
Определение структуры: Внутри контракта мы определяем структуру Person
, которая представляет человека в нашей системе голосования. Каждое лицо
имеет булевую переменную voted
, которая указывает, голосовал ли он уже, и целое число vote
, которое отслеживает предложение, за которое он проголосовал.
Переменная состояния: Оператор mapping(address => Person) public voters;
объявляет переменную состояния voters
, которая создает связь между адресом Ethereum и структурой Person
. Это позволит нам отслеживать, кто имеет право голосовать в системе и каков его голос. Ключевое слово public
автоматически создает функцию getter для избирателей
.
Определение функции: Блок function registerVoter() public {...}
определяет публичную функцию, которая позволяет пользователям регистрировать себя в системе в качестве избирателей. Оператор voters[msg.sender].voted = false;
устанавливает статус голосования
нового участника в false
.
Вот и все для этого контракта! По мере прохождения курса мы будем расширять этот контракт, добавляя больше функций для процесса голосования. Не забывайте регулярно компилировать и тестировать свой код, чтобы убедиться, что все работает так, как ожидается. В IDE Remix Вы можете скомпилировать свой контракт, щелкнув на значке компилятора Solidity на левой боковой панели (третий сверху), а затем нажав на кнопку "Compile".
В следующем уроке мы узнаем, как разрешить зарегистрированным избирателям голосовать и реализуем логику для системы голосования. Но пока поиграйте с контрактом и познакомьтесь со средой Remix. Вы только что сделали свой первый шаг в мир разработки смарт-контрактов!
Децентрализованное голосование относится к системе голосования, которая работает на блокчейне. Ключевая идея здесь заключается в том, чтобы использовать прозрачность, безопасность и неизменяемость, обеспечиваемые технологией blockchain, для создания системы голосования, которой трудно манипулировать и которую легко проверить.
В децентрализованной системе голосования каждый голос представляет собой транзакцию в блокчейне, которая видна всем участникам, но может быть изменена только голосующим до момента подачи голоса. После того, как голос отдан, он записывается в блокчейн и не может быть изменен, обеспечивая прозрачный и защищенный от взлома механизм голосования.
Remix IDE (интегрированная среда разработки) - это мощный инструмент с открытым исходным кодом, созданный специально для разработки смарт-контрактов Ethereum. Он запускается непосредственно в Вашем веб-браузере, поэтому Вам не нужно ничего устанавливать на свой компьютер.
Вы можете получить доступ к IDE Remix по адресу https://remix.ethereum.org. Когда Вы откроете Remix в браузере, Вы найдете три панели:
Левая панель: Здесь Вы можете создавать, импортировать и управлять своими файлами Solidity. Он также включает различные плагины для компиляции, тестирования, отладки и развертывания Ваших контрактов.
Центральная панель: Это Ваш редактор кода. Здесь Вы будете писать и редактировать свой код Solidity.
Правая панель: Эта панель предоставляет различные инструменты для компиляции Ваших контрактов, их развертывания в сети Ethereum (либо в реальной сети Ethereum, либо в симуляторе JavaScript VM), а также для взаимодействия с развернутыми контрактами.
Давайте начнем с простого контракта "Voter". Этот контракт будет отслеживать избирателей в нашей системе.
В Remix IDE перейдите в "File Explorer" и щелкните на значке "+", чтобы создать новый файл. Назовите его Voter.sol
.
Теперь давайте начнем составлять наш контракт:
Solidity
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;
contract Voter {
// Структура для представления человека
struct Person {
bool voted; // if true, that person already voted
uint vote; // index of the voted proposal
}
// Маппинг для отслеживания всех избирателей
mapping(address => Person) public voters;
// Функция для регистрации избирателя
function registerVoter() public {
voters[msg.sender].voted = false;
}
}
Идентификатор лицензии СПДХ: Строка // SPDX-License-Identifier: GPL-3.0
указывает на то, что в нашем контракте используется Стандартная общественная лицензия GNU версии 3.0. Это широко распространенная лицензия на свободное программное обеспечение, которая гарантирует конечным пользователям свободу запуска, изучения, совместного использования и модификации программного обеспечения.
Директива Pragma: Директива pragma solidity >
=0 .7.0 & lt ;0.9.0; определяет, что контракт написан на версии Solidity, которая больше или равна 0.7.0 и меньше 0.9.0. Это помогает предотвратить компиляцию контракта с помощью более новой, несовместимой версии компилятора.
Определение контракта: Блок Contract Voter {...}
определяет новый контракт с именем Voter
. Здесь мы задаем переменные состояния и функции контракта.
Определение структуры: Внутри контракта мы определяем структуру Person
, которая представляет человека в нашей системе голосования. Каждое лицо
имеет булевую переменную voted
, которая указывает, голосовал ли он уже, и целое число vote
, которое отслеживает предложение, за которое он проголосовал.
Переменная состояния: Оператор mapping(address => Person) public voters;
объявляет переменную состояния voters
, которая создает связь между адресом Ethereum и структурой Person
. Это позволит нам отслеживать, кто имеет право голосовать в системе и каков его голос. Ключевое слово public
автоматически создает функцию getter для избирателей
.
Определение функции: Блок function registerVoter() public {...}
определяет публичную функцию, которая позволяет пользователям регистрировать себя в системе в качестве избирателей. Оператор voters[msg.sender].voted = false;
устанавливает статус голосования
нового участника в false
.
Вот и все для этого контракта! По мере прохождения курса мы будем расширять этот контракт, добавляя больше функций для процесса голосования. Не забывайте регулярно компилировать и тестировать свой код, чтобы убедиться, что все работает так, как ожидается. В IDE Remix Вы можете скомпилировать свой контракт, щелкнув на значке компилятора Solidity на левой боковой панели (третий сверху), а затем нажав на кнопку "Compile".
В следующем уроке мы узнаем, как разрешить зарегистрированным избирателям голосовать и реализуем логику для системы голосования. Но пока поиграйте с контрактом и познакомьтесь со средой Remix. Вы только что сделали свой первый шаг в мир разработки смарт-контрактов!