Lição 1

Введение в децентрализованное голосование и Remix IDE

Добро пожаловать на первый урок нашего курса по построению децентрализованной системы голосования. В этом уроке мы изучим концепцию децентрализованного голосования и поймем, какие преимущества оно дает процессу голосования. Мы также познакомим Вас с Remix IDE, мощным инструментом, используемым для разработки и развертывания смарт-контрактов Ethereum.

Децентрализованное голосование

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

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

Введение в Remix IDE

Remix IDE (интегрированная среда разработки) - это мощный инструмент с открытым исходным кодом, созданный специально для разработки смарт-контрактов Ethereum. Он запускается непосредственно в Вашем веб-браузере, поэтому Вам не нужно ничего устанавливать на свой компьютер.

Вы можете получить доступ к IDE Remix по адресу https://remix.ethereum.org. Когда Вы откроете Remix в браузере, Вы найдете три панели:

  1. Левая панель: Здесь Вы можете создавать, импортировать и управлять своими файлами Solidity. Он также включает различные плагины для компиляции, тестирования, отладки и развертывания Ваших контрактов.

  2. Центральная панель: Это Ваш редактор кода. Здесь Вы будете писать и редактировать свой код Solidity.

  3. Правая панель: Эта панель предоставляет различные инструменты для компиляции Ваших контрактов, их развертывания в сети 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;
    }
}
  1. Идентификатор лицензии СПДХ: Строка // SPDX-License-Identifier: GPL-3.0 указывает на то, что в нашем контракте используется Стандартная общественная лицензия GNU версии 3.0. Это широко распространенная лицензия на свободное программное обеспечение, которая гарантирует конечным пользователям свободу запуска, изучения, совместного использования и модификации программного обеспечения.

  2. Директива Pragma: Директива pragma solidity > =0 .7.0 & lt ;0.9.0; определяет, что контракт написан на версии Solidity, которая больше или равна 0.7.0 и меньше 0.9.0. Это помогает предотвратить компиляцию контракта с помощью более новой, несовместимой версии компилятора.

  3. Определение контракта: Блок Contract Voter {...} определяет новый контракт с именем Voter. Здесь мы задаем переменные состояния и функции контракта.

  4. Определение структуры: Внутри контракта мы определяем структуру Person, которая представляет человека в нашей системе голосования. Каждое лицо имеет булевую переменную voted, которая указывает, голосовал ли он уже, и целое число vote, которое отслеживает предложение, за которое он проголосовал.

  5. Переменная состояния: Оператор mapping(address => Person) public voters; объявляет переменную состояния voters, которая создает связь между адресом Ethereum и структурой Person. Это позволит нам отслеживать, кто имеет право голосовать в системе и каков его голос. Ключевое слово public автоматически создает функцию getter для избирателей.

  6. Определение функции: Блок function registerVoter() public {...} определяет публичную функцию, которая позволяет пользователям регистрировать себя в системе в качестве избирателей. Оператор voters[msg.sender].voted = false; устанавливает статус голосования нового участника в false.
    Вот и все для этого контракта! По мере прохождения курса мы будем расширять этот контракт, добавляя больше функций для процесса голосования. Не забывайте регулярно компилировать и тестировать свой код, чтобы убедиться, что все работает так, как ожидается. В IDE Remix Вы можете скомпилировать свой контракт, щелкнув на значке компилятора Solidity на левой боковой панели (третий сверху), а затем нажав на кнопку "Compile".

В следующем уроке мы узнаем, как разрешить зарегистрированным избирателям голосовать и реализуем логику для системы голосования. Но пока поиграйте с контрактом и познакомьтесь со средой Remix. Вы только что сделали свой первый шаг в мир разработки смарт-контрактов!

Isenção de responsabilidade
* O investimento em criptomoedas envolve grandes riscos. Prossiga com cautela. O curso não se destina a servir de orientação para investimentos.
* O curso foi criado pelo autor que entrou para o Gate Learn. As opiniões compartilhadas pelo autor não representam o Gate Learn.
Catálogo
Lição 1

Введение в децентрализованное голосование и Remix IDE

Добро пожаловать на первый урок нашего курса по построению децентрализованной системы голосования. В этом уроке мы изучим концепцию децентрализованного голосования и поймем, какие преимущества оно дает процессу голосования. Мы также познакомим Вас с Remix IDE, мощным инструментом, используемым для разработки и развертывания смарт-контрактов Ethereum.

Децентрализованное голосование

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

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

Введение в Remix IDE

Remix IDE (интегрированная среда разработки) - это мощный инструмент с открытым исходным кодом, созданный специально для разработки смарт-контрактов Ethereum. Он запускается непосредственно в Вашем веб-браузере, поэтому Вам не нужно ничего устанавливать на свой компьютер.

Вы можете получить доступ к IDE Remix по адресу https://remix.ethereum.org. Когда Вы откроете Remix в браузере, Вы найдете три панели:

  1. Левая панель: Здесь Вы можете создавать, импортировать и управлять своими файлами Solidity. Он также включает различные плагины для компиляции, тестирования, отладки и развертывания Ваших контрактов.

  2. Центральная панель: Это Ваш редактор кода. Здесь Вы будете писать и редактировать свой код Solidity.

  3. Правая панель: Эта панель предоставляет различные инструменты для компиляции Ваших контрактов, их развертывания в сети 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;
    }
}
  1. Идентификатор лицензии СПДХ: Строка // SPDX-License-Identifier: GPL-3.0 указывает на то, что в нашем контракте используется Стандартная общественная лицензия GNU версии 3.0. Это широко распространенная лицензия на свободное программное обеспечение, которая гарантирует конечным пользователям свободу запуска, изучения, совместного использования и модификации программного обеспечения.

  2. Директива Pragma: Директива pragma solidity > =0 .7.0 & lt ;0.9.0; определяет, что контракт написан на версии Solidity, которая больше или равна 0.7.0 и меньше 0.9.0. Это помогает предотвратить компиляцию контракта с помощью более новой, несовместимой версии компилятора.

  3. Определение контракта: Блок Contract Voter {...} определяет новый контракт с именем Voter. Здесь мы задаем переменные состояния и функции контракта.

  4. Определение структуры: Внутри контракта мы определяем структуру Person, которая представляет человека в нашей системе голосования. Каждое лицо имеет булевую переменную voted, которая указывает, голосовал ли он уже, и целое число vote, которое отслеживает предложение, за которое он проголосовал.

  5. Переменная состояния: Оператор mapping(address => Person) public voters; объявляет переменную состояния voters, которая создает связь между адресом Ethereum и структурой Person. Это позволит нам отслеживать, кто имеет право голосовать в системе и каков его голос. Ключевое слово public автоматически создает функцию getter для избирателей.

  6. Определение функции: Блок function registerVoter() public {...} определяет публичную функцию, которая позволяет пользователям регистрировать себя в системе в качестве избирателей. Оператор voters[msg.sender].voted = false; устанавливает статус голосования нового участника в false.
    Вот и все для этого контракта! По мере прохождения курса мы будем расширять этот контракт, добавляя больше функций для процесса голосования. Не забывайте регулярно компилировать и тестировать свой код, чтобы убедиться, что все работает так, как ожидается. В IDE Remix Вы можете скомпилировать свой контракт, щелкнув на значке компилятора Solidity на левой боковой панели (третий сверху), а затем нажав на кнопку "Compile".

В следующем уроке мы узнаем, как разрешить зарегистрированным избирателям голосовать и реализуем логику для системы голосования. Но пока поиграйте с контрактом и познакомьтесь со средой Remix. Вы только что сделали свой первый шаг в мир разработки смарт-контрактов!

Isenção de responsabilidade
* O investimento em criptomoedas envolve grandes riscos. Prossiga com cautela. O curso não se destina a servir de orientação para investimentos.
* O curso foi criado pelo autor que entrou para o Gate Learn. As opiniões compartilhadas pelo autor não representam o Gate Learn.