В этом разделе мы обсудим процесс написания базового смарт-контракта с использованием Solidity. Мы рассмотрим основные компоненты, такие как переменные, функции и модификаторы. Затем мы рассмотрим пример реализации простого токенного контракта.
Переменные, функции и модификаторы
Давайте создадим простой токенный контракт, используя Solidity. Этот контракт позволит пользователям передавать токены между учетными записями и проверять баланс токенов любой учетной записи.
TypeScriptpragma версия ^0.8.0;контракт SimpleToken { // Объявление переменных состояния адрес владельца публичный; картографирование(адрес => uint256) балансы общественности; // Инициализация токен контракта конструктор(uint256 начальныйЗапас) { владелец = msg.sender; балансы[владелец] = начальныйЗапас; } // Функция для передачи токенов функция передачи(адрес to, uint256 количество) общественный { требовать(balances[msg.sender] >= количество, "Недостаточный баланс"); балансы[msg.sender] -= количество; балансы[to] += количество; } // Функция для проверки баланса токена учетной записи функция баланса(адрес учетной записи) общественный вид возращений (uint256) { вернуть балансы[учетной записи]; }}
```В этом контракте у нас есть:
- Переменные состояния`владелец`и`балансы`для хранения адреса владельца контракта и балансов токенов всех адресов соответственно.- A `конструктор`функция, которая устанавливает начальное количество токенов и назначает их владельцу контракта.- А `перевод` функция, позволяющая пользователям переводить токены на другие аккаунты. Он использует метод `требовать`утверждение, чтобы убедиться, что отправителю достаточно токенов для передачи.- A `баланс`функция, которая возвращает баланс токена указанного аккаунта.- Этот базовый токен контракт демонстрирует, как использовать переменные, функции и модификаторы в Solidity для создания простого, функционального смарт-контракта.**Пример2: Реализация простой системы голосования**
TypeScriptpragma solidity ^0.8.0; контракт VotingSystem { отображение (байт32 => uint256) общедоступные votesReceived; байт32[] общедоступные candidateList; конструктор (байт32[] память candidateNames) { candidateList = candidateNames; } функция voteForCandidate (байт32 кандидат) общедоступная { требуется действительный кандидат (кандидат), "Недопустимый кандидат."); votesReceived [кандидат] + = 1; } функция totalVotesFor (байт32 кандидат) общедоступная представление возвращает (uint256) { требуется действительный кандидат (кандидат), "Недопустимый кандидат."); возврат votesReceived [кандидат]; } функция validCandidate (байт32 кандидат) общедоступная представление возвращает (логическое) { для (uint256 i = 0; i Особенности Переменные, функции и модификаторы являются важными компонентами в умных контрактах Solidity. Solidity имеет два типа переменных: глобальные переменные и локальные переменные. Функции используются для выполнения задач и могут иметь входные параметры и возвращаемые значения. Модификаторы используются для изменения поведения функции и улучшения читаемости и управляемости кода. Контракт SimpleToken позволяет пользователям передавать токены и проверять балансы токенов. Контракт SimpleToken демонстрирует использование переменных состояния, конструктора и функций, таких как transfer и balanceOf. Контракт VotingSystem позволяет пользователям голосовать за кандидатов и отслеживает количество голосов. Контракт VotingSystem демонстрирует использование отображений, массивов и функций, таких как voteForCandidate, totalVotesFor и validCandidate.
Отказ от ответственности
* Криптоинвестирование сопряжено со значительными рисками. Будьте осторожны. Курс не является инвестиционным советом.
* Курс создан автором, который присоединился к Gate Learn. Мнение автора может не совпадать с мнением Gate Learn.