У цьому розділі ми обговоримо процес написання базового розумного договору за допомогою Solidity. Ми розглянемо важливі компоненти, такі як змінні, функції та модифікатори. Потім ми розглянемо приклад реалізації простого контракту токенів.
Змінні, функції та модифікатори
Давайте створимо простий контракт токена за допомогою Solidity. Цей контракт дозволить користувачам передавати токени між рахунками та перевіряти баланс токенів будь-якого рахунку.
Solidity TypeScriptpragma ^0.8.0; contract SimpleToken { // Оголошення змінних стану адреси публічного власника; mapping(address = > uint256) публічні баланси; Ініціалізація конструктора контракту токена (uint256 initialSupply) { owner = msg.sender; баланси[власник] = початкове постачання; } // Функція передачі токенів functions transfer(address to, uint256 amount) public { require(balances[msg.sender] >= amount, "Недостатній баланс"); залишки[msg.sender] -= сума; залишки[до] += сума; } // Функція перевірки балансу токенів облікового запису, функція balanceOf(адресний обліковий запис) public view returns (uint256) { return balances[account]; }}
```У цьому контракті у нас є:
- Змінні стану `власник`і`баланси`зберігати адресу власника контракту та баланси токенів всіх адрес, відповідно.- A `конструктор`функція, яка встановлює початковий обсяг токенів та призначає їх власнику контракту.- A `передача`функція, яка дозволяє користувачам пересилати токени на інші рахунки. Вона використовує `потребувати`заява для переконання в тому, що відправник має достатньо токенів для переказу.- A `баланс`функція, яка повертає баланс токенів вказаного облікового запису.- Цей базовий токенний контракт демонструє, як використовувати змінні, функції та модифікатори в Solidity для створення простого, функціонального смарт-контракту.**Приклад2: Впровадження простої системи голосування**
pragma solidity ^0.8.0;contract VotingSystem { mapping (bytes32 => uint256) public votesReceived; bytes32[] public candidateList; constructor(bytes32[] memory candidateNames) { candidateList = candidateNames; } function voteForCandidate(bytes32 candidate) public { require(validCandidate(candidate), "Недійсний кандидат."); votesReceived[candidate] += 1; } function totalVotesFor(bytes32 candidate) public view returns (uint256) { require(validCandidate(candidate), "Недійсний кандидат."); return votesReceived[candidate]; } function validCandidate(bytes32 candidate) public view returns (bool) { for (uint256 i = 0; i Основне Змінні, функції та модифікатори є невід'ємними компонентами у розумних контрактах Solidity. У Solidity є два типи змінних: змінні стану та локальні змінні. Функції використовуються для виконання завдань і можуть мати вхідні параметри та значення повернення. Модифікатори використовуються для зміни поведінки функції та покращення зрозумілості та керованості коду. Контракт SimpleToken дозволяє користувачам передавати токени та перевіряти баланси токенів. Контракт SimpleToken демонструє використання змінних стану, функції конструктора та функцій, таких як transfer та balanceOf. Контракт VotingSystem дозволяє користувачам голосувати за кандидатів та відстежує кількість голосів. Контракт VotingSystem демонструє використання відображень, масивів та функцій, таких як voteForCandidate, totalVotesFor та validCandidate.
Відмова від відповідальності
* Криптоінвестиції пов'язані зі значними ризиками. Дійте обережно. Курс не є інвестиційною консультацією.
* Курс створений автором, який приєднався до Gate Learn. Будь-яка думка, висловлена автором, не є позицією Gate Learn.